From 22dfecfaf5936b9f7c610e64ec2c4bf101317046 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 5 Jan 2025 19:34:25 -0800 Subject: [PATCH] Add 5 second tps average in /tps --- ...0057-Add-5-second-tps-average-in-tps.patch | 108 ------------------ .../features/0001-Ridables.patch | 6 +- ...urable-void-damage-height-and-damage.patch | 4 +- .../server/MinecraftServer.java.patch | 40 ++++++- .../server/gui/StatsComponent.java.patch | 11 ++ .../paper/gui/RAMDetails.java.patch | 19 +++ .../bukkit/craftbukkit/CraftServer.java.patch | 8 ++ .../spigotmc/TicksPerSecondCommand.java.patch | 11 ++ 8 files changed, 90 insertions(+), 117 deletions(-) delete mode 100644 patches/server/0057-Add-5-second-tps-average-in-tps.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch create mode 100644 purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch create mode 100644 purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch diff --git a/patches/server/0057-Add-5-second-tps-average-in-tps.patch b/patches/server/0057-Add-5-second-tps-average-in-tps.patch deleted file mode 100644 index fbde56bdb..000000000 --- a/patches/server/0057-Add-5-second-tps-average-in-tps.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sun, 28 Jul 2019 01:27:37 -0500 -Subject: [PATCH] Add 5 second tps average in /tps - - -diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -index 12b327eea95e0de9e9c39b7d039badee8ec46508..46696cfe1d99e705d383a1fe4e66f5c5646053d2 100644 ---- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -+++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -@@ -61,6 +61,7 @@ public class RAMDetails extends JList { - - // Follows CraftServer#getTPS - double[] tps = new double[] { -+ server.tps5s.getAverage(), // Purpur - Add 5 second tps average in /tps - server.tps1.getAverage(), - server.tps5.getAverage(), - server.tps15.getAverage() -@@ -73,7 +74,7 @@ public class RAMDetails extends JList { - vector.add("Memory use: " + (data.getUsedMem() / 1024L / 1024L) + " mb (" + (data.getFree() * 100L / data.getMax()) + "% free)"); - vector.add("Heap: " + (data.getTotal() / 1024L / 1024L) + " / " + (data.getMax() / 1024L / 1024L) + " mb"); - vector.add("Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / (double) TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"); -- vector.add("TPS from last 1m, 5m, 15m: " + String.join(", ", tpsAvg)); -+ vector.add("TPS from last 5s, 1m, 5m, 15m: " + String.join(", ", tpsAvg)); // Purpur - Add 5 second tps average in /tps - setListData(vector); - } - -diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 6cec325942c44da6455f0b349ad83e1dc2b8b7d4..75ef1a4f80449e87affbd9ba62f5f9447ef9db87 100644 ---- a/net/minecraft/server/MinecraftServer.java -+++ b/net/minecraft/server/MinecraftServer.java -@@ -324,7 +324,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && args[0].equals("mem") && sender.hasPermission("bukkit.command.tpsmemory")) { diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index dc4d9fdc1..23e6b76a8 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -18,10 +18,10 @@ index fe4ae6bcdcbb55c47e9f9a4d63ead4c39e6d63cf..bf368ba3eecb6131dd23c1fcabf61f43 public boolean isLocalPlayer() { return true; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 8a9515a9bbe56aaa6665f144648a0c2d2775d118..f182a2d497242bbe043102cfd873e08bcbb7d759 100644 +index da4b7400d6148ff5e412076bdccab295aaa72bad..b5011af774484b6ed35ee83b4a562ddd4425c22f 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1716,6 +1716,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers @@ -177,7 +177,7 @@ index efee812785240c1ab1fd47514cfb236a3548f9cf..666455fff2b391b637cf1c07091e8810 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index affdbc8b60ad9ec34e1065dcbe00fd449979177b..b8f38aefd15fda2ff4326c0ea1a06af4189edc60 100644 +index f1f894db42ea71c21ac5d76223bc7208fb82dff3..5b27adec57614b6563f8ebb520035736708c195e 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch index c6eed28e2..ef2bb434d 100644 --- a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch +++ b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch @@ -7,10 +7,10 @@ temporarily migrate to paper's config drop patch on the next minecraft release diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index f182a2d497242bbe043102cfd873e08bcbb7d759..ce191bf91d2edc825addc73d1a7b650dd7556d1a 100644 +index b5011af774484b6ed35ee83b4a562ddd4425c22f..514b7d86c403568ddb130e7f7798867f838e1203 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1197,7 +1197,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function threadFunction) { -@@ -1229,6 +_,7 @@ - this.recentTps[0] = tps1.getAverage(); - this.recentTps[1] = tps5.getAverage(); - this.recentTps[2] = tps15.getAverage(); +@@ -1112,6 +_,7 @@ + private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L; + private long lastTick = 0; + private long catchupTime = 0; ++ public final RollingAverage tps5s = new RollingAverage(5); // Purpur - Add 5 second tps average in /tps + public final RollingAverage tps1 = new RollingAverage(60); + public final RollingAverage tps5 = new RollingAverage(60 * 5); + public final RollingAverage tps15 = new RollingAverage(60 * 15); +@@ -1221,14 +_,19 @@ + if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) { + final long diff = currentTime - tickSection; + final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); ++ tps5s.add(currentTps, diff); // Purpur - Add 5 second tps average in /tps + tps1.add(currentTps, diff); + tps5.add(currentTps, diff); + tps15.add(currentTps, diff); + + // Backwards compat with bad plugins +- this.recentTps[0] = tps1.getAverage(); +- this.recentTps[1] = tps5.getAverage(); +- this.recentTps[2] = tps15.getAverage(); ++ // Purpur start - Add 5 second tps average in /tps ++ this.recentTps[0] = tps5s.getAverage(); ++ this.recentTps[1] = tps1.getAverage(); ++ this.recentTps[2] = tps5.getAverage(); ++ this.recentTps[3] = tps15.getAverage(); ++ // Purpur end - Add 5 second tps average in /tps + lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur - Lagging threshold tickSection = currentTime; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch new file mode 100644 index 000000000..a082bca56 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/server/gui/StatsComponent.java ++++ b/net/minecraft/server/gui/StatsComponent.java +@@ -43,7 +_,7 @@ + } + this.msgs[0] = "Memory use: " + l / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)"; + this.msgs[1] = "Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"; +- this.msgs[2] = "TPS from last 1m, 5m, 15m: " + String.join(", ", tpsAvg); ++ this.msgs[2] = "TPS from last 5s, 1m, 5m, 15m: " + String.join(", ", tpsAvg); // Purpur - Add 5 second tps average in /tps + // Paper end - Improve ServerGUI + this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory()); + this.repaint(); diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch new file mode 100644 index 000000000..e567d82a1 --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch @@ -0,0 +1,19 @@ +--- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java ++++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java +@@ -61,6 +_,7 @@ + + // Follows CraftServer#getTPS + double[] tps = new double[] { ++ server.tps5s.getAverage(), // Purpur - Add 5 second tps average in /tps + server.tps1.getAverage(), + server.tps5.getAverage(), + server.tps15.getAverage() +@@ -73,7 +_,7 @@ + vector.add("Memory use: " + (data.getUsedMem() / 1024L / 1024L) + " mb (" + (data.getFree() * 100L / data.getMax()) + "% free)"); + vector.add("Heap: " + (data.getTotal() / 1024L / 1024L) + " / " + (data.getMax() / 1024L / 1024L) + " mb"); + vector.add("Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / (double) TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"); +- vector.add("TPS from last 1m, 5m, 15m: " + String.join(", ", tpsAvg)); ++ vector.add("TPS from last 5s, 1m, 5m, 15m: " + String.join(", ", tpsAvg)); // Purpur - Add 5 second tps average in /tps + setListData(vector); + } + diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index fde0ffca2..b40374f1b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -43,6 +43,14 @@ @Override public void restart() { org.spigotmc.RestartCommand.restart(); +@@ -3078,6 +_,7 @@ + @Override + public double[] getTPS() { + return new double[] { ++ net.minecraft.server.MinecraftServer.getServer().tps5s.getAverage(), // Purpur - Add 5 second tps average in /tps + net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), + net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), + net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() @@ -3288,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch new file mode 100644 index 000000000..423a40206 --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch @@ -0,0 +1,11 @@ +--- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java ++++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java +@@ -43,7 +_,7 @@ + } + + TextComponent.Builder builder = text(); +- builder.append(text("TPS from last 1m, 5m, 15m: ", NamedTextColor.GOLD)); ++ builder.append(text("TPS from last 5s, 1m, 5m, 15m: ", NamedTextColor.GOLD)); // Purpur - Add 5 second tps average in /tps + builder.append(Component.join(JoinConfiguration.commas(true), tpsAvg)); + sender.sendMessage(builder.asComponent()); + if (args.length > 0 && args[0].equals("mem") && sender.hasPermission("bukkit.command.tpsmemory")) {