From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mykyta Komarnytskyy Date: Sat, 24 Oct 2020 21:03:53 -0500 Subject: [PATCH] Smarter statistics ticking In vanilla, statistics that count time spent for an action (i.e. time played or sneak time) are incremented every tick. This is retarded. With this patch and a configured interval of 20, the statistics are only ticked every 20th tick and are incremented by 20 ticks at a time. This means a lot less ticking with the same accurate counting. With an interval of 20, this patch saves roughly 3ms per tick on a server w/ 80 players online. diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java index b67e06a9e0abf3b8783a88bb1e55bf59dfd3f662..9ffe4c744feed83c0821865b82ccaee15817983f 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java @@ -279,18 +279,23 @@ public abstract class EntityHuman extends EntityLiving { this.p(); if (!this.world.isClientSide) { this.foodData.a(this); - this.a(StatisticList.PLAY_ONE_MINUTE); + // Yatopia start + int interval = org.yatopiamc.yatopia.server.YatopiaConfig.playerTimeStatisticsInterval; + if (ticksLived % interval == 0) { + this.a(StatisticList.PLAY_ONE_MINUTE, interval); + // Yatopia end if (this.isAlive()) { - this.a(StatisticList.TIME_SINCE_DEATH); + this.a(StatisticList.TIME_SINCE_DEATH, interval); // Yatopia } if (this.bx()) { - this.a(StatisticList.SNEAK_TIME); + this.a(StatisticList.SNEAK_TIME, interval); // Yatopia } if (!this.isSleeping()) { - this.a(StatisticList.TIME_SINCE_REST); + this.a(StatisticList.TIME_SINCE_REST, interval); // Yatopia } + } // Yatopia } int i = 29999999; diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java index 241d11017e354f4b23d004b5cfa2283bede7d58c..c814ccc9851ca1365e6c187392b428fe7cd6f8f6 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java @@ -255,4 +255,9 @@ public class YatopiaConfig { checkFlying = getBoolean("settings.checks.flight", checkFlying); checkVehicleFlying = getBoolean("settings.checks.vehicle-flight", checkVehicleFlying); } + + public static int playerTimeStatisticsInterval = 1; + private static void intervals() { + playerTimeStatisticsInterval = Math.max(1, getInt("settings.intervals.player-time-statistics", 1)); + } }