Yatopia/patches/server/0047-Smarter-statistics-ticking.patch
Simon Gardling cc91a8080f
Upstream (#461)
* Updated Upstream and Sidestream(s) (Paper)

Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Paper Changes:
8a29f5894 [Auto] Updated Upstream (Bukkit/CraftBukkit)
8756d232c Expose server protocol version (#5416)

* Updated Upstream and Sidestream(s) (Tuinity/Purpur)

Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Tuinity Changes:
32b4d52 Updated Upstream (Paper)
ac5adca Make sure lit is set for pre 1.14 chunks

Purpur Changes:
24d9e61 Piglin portal spawn modifier
5866f36 Fix #263 - NPE on TPSBar when player disconnects
7f7f024 Updated Upstream (Paper, Tuinity, & Airplane)

* bump kotlin-stdlib

* Updated Upstream and Sidestream(s) (Paper/Airplane/Purpur)

Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Paper Changes:
606cdac60 Update the view distance before scheduling chunk loads (#5269)

Airplane Changes:
0789789 Updated Upstream (Tuinity)
c1e4d71 Fluid cache patch

Purpur Changes:
04f73c5 Fix error when using non living entity on monster egg
76c35fc Fix #287 - TPSBarTask NPE (again)

* Updated Upstream and Sidestream(s) (Purpur)

Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Purpur Changes:
2e62618 Fix #280 - Ridables do not reset idle timer
2021-04-15 14:46:34 -04:00

56 lines
2.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mykyta Komarnytskyy <nkomarn@hotmail.com>
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 8c8716c94d813fc6de0ec2f7e8080c339e821207..6034d51d8133fa8a1c18edcf61c9377b413e7c37 100644
--- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
+++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
@@ -275,18 +275,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 81ab5afa7bd397266d2afe77426d2e629529aa1a..045ace1444b4db8fa5fab09f970de7a696c56ab8 100644
--- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java
+++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java
@@ -230,4 +230,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));
+ }
}