added 'last_tick_times'
This commit is contained in:
1 parent
8dbf269fde
commit
6932e5b682
4 files changed
+27
-1
No files matched your search
@@ -126,6 +126,15 @@ Returns dimension-specific tick counter.
|
||||
Returns current daytime clock value. If `new_time` is specified, sets a new clock
|
||||
to that value. Daytime clocks are shared between all dimensions.
|
||||
|
||||
### `last_tick_times()`
|
||||
|
||||
Returns a 100-long array of recent tick times, in milliseconds. First item on the list is the most recent tick
|
||||
If called outside of the main tick (either throgh scheduled tasks, or async execution), then the first item on the
|
||||
list may refer to the previous tick performance. In this case the last entry (tick 100) would refer to the most current
|
||||
tick. For all intent and purpose, `last_tick_times():0` should be used as last tick execution time, but
|
||||
individual tick times may vary greatly, and these need to be taken with the little grain of
|
||||
averaging.
|
||||
|
||||
### `game_tick(mstime?)`
|
||||
|
||||
Causes game to run for one tick. By default runs it and returns control to the program, but can optionally
|
||||
|
||||
@@ -38,6 +38,7 @@ inventory_remove
|
||||
inventory_set
|
||||
inventory_size
|
||||
item_category
|
||||
last_tick_times
|
||||
light
|
||||
liquid
|
||||
load_app_data
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
logger sound particle particle_line particle_rect
|
||||
|
||||
run save tick_time world_time day_time game_tick seed current_dimension in_dimension
|
||||
run save tick_time world_time day_time last_tick_times game_tick seed current_dimension in_dimension
|
||||
|
||||
plop harvest destroy schedule nbt create_marker remove_all_markers load_app_data store_app_data escape_nbt statistic
|
||||
</Keywords>
|
||||
|
||||
@@ -2687,6 +2687,22 @@ public class CarpetExpression
|
||||
return (cc, tt) -> time;
|
||||
});
|
||||
|
||||
this.expr.addLazyFunction("last_tick_times", -1, (c, t, lv) ->
|
||||
{
|
||||
//assuming we are in the tick world section
|
||||
// might be off one tick when run in the off tasks or asynchronously.
|
||||
int currentReportedTick = ((CarpetContext) c).s.getMinecraftServer().getTicks()-1;
|
||||
List<Value> ticks = new ArrayList<>(100);
|
||||
final long[] tickArray = ((CarpetContext) c).s.getMinecraftServer().lastTickLengths;
|
||||
for (int i=currentReportedTick+100; i > currentReportedTick; i--)
|
||||
{
|
||||
ticks.add(new NumericValue(((double)tickArray[i % 100])/1000000.0));
|
||||
}
|
||||
Value ret = ListValue.wrap(ticks);
|
||||
return (cc, tt) -> ret;
|
||||
});
|
||||
|
||||
|
||||
this.expr.addLazyFunction("game_tick", -1, (c, t, lv) -> {
|
||||
ServerCommandSource s = ((CarpetContext)c).s;
|
||||
if (!s.getMinecraftServer().isOnThread()) throw new InternalExpressionException("Unable to run ticks from threads");
|
||||
|
||||
Reference in new issue
Block a user