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
|
Returns current daytime clock value. If `new_time` is specified, sets a new clock
|
||||||
to that value. Daytime clocks are shared between all dimensions.
|
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?)`
|
### `game_tick(mstime?)`
|
||||||
|
|
||||||
Causes game to run for one tick. By default runs it and returns control to the program, but can optionally
|
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_set
|
||||||
inventory_size
|
inventory_size
|
||||||
item_category
|
item_category
|
||||||
|
last_tick_times
|
||||||
light
|
light
|
||||||
liquid
|
liquid
|
||||||
load_app_data
|
load_app_data
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
logger sound particle particle_line particle_rect
|
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
|
plop harvest destroy schedule nbt create_marker remove_all_markers load_app_data store_app_data escape_nbt statistic
|
||||||
</Keywords>
|
</Keywords>
|
||||||
|
|||||||
@@ -2687,6 +2687,22 @@ public class CarpetExpression
|
|||||||
return (cc, tt) -> time;
|
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) -> {
|
this.expr.addLazyFunction("game_tick", -1, (c, t, lv) -> {
|
||||||
ServerCommandSource s = ((CarpetContext)c).s;
|
ServerCommandSource s = ((CarpetContext)c).s;
|
||||||
if (!s.getMinecraftServer().isOnThread()) throw new InternalExpressionException("Unable to run ticks from threads");
|
if (!s.getMinecraftServer().isOnThread()) throw new InternalExpressionException("Unable to run ticks from threads");
|
||||||
|
|||||||
Reference in new issue
Block a user