From cac554136538384cb368cbd19d9991f5ea39fe0a Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 5 Jan 2025 11:37:54 -0800 Subject: [PATCH] Lagging threshold --- patches/api/0012-Lagging-threshold.patch | 42 -------------- patches/server/0014-Lagging-threshold.patch | 57 ------------------- .../main/java/org/bukkit/Bukkit.java.patch | 13 ++++- .../main/java/org/bukkit/Server.java.patch | 11 +++- .../features/0001-Ridables.patch | 6 +- .../server/MinecraftServer.java.patch | 16 ++++++ .../bukkit/craftbukkit/CraftServer.java.patch | 9 ++- .../org/purpurmc/purpur/PurpurConfig.java | 5 ++ 8 files changed, 54 insertions(+), 105 deletions(-) delete mode 100644 patches/api/0012-Lagging-threshold.patch delete mode 100644 patches/server/0014-Lagging-threshold.patch diff --git a/patches/api/0012-Lagging-threshold.patch b/patches/api/0012-Lagging-threshold.patch deleted file mode 100644 index 86737ba98..000000000 --- a/patches/api/0012-Lagging-threshold.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Tue, 23 Jul 2019 10:07:24 -0500 -Subject: [PATCH] Lagging threshold - - -diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index c38fa167bbe46dfd34b90b47f6918a399af12c32..cd6c712a2ad92f73c7ce8f4ada8b810fcba00ba3 100644 ---- a/src/main/java/org/bukkit/Bukkit.java -+++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2978,5 +2978,14 @@ public final class Bukkit { - public static String getServerName() { - return server.getServerName(); - } -+ -+ /** -+ * Check if server is lagging according to laggy threshold setting -+ * -+ * @return True if lagging -+ */ -+ public static boolean isLagging() { -+ return server.isLagging(); -+ } - // Purpur end - } -diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 2d17726681b9001179590e9c33ee5b6561fb7789..788702d1c5be00a78a0438e267fe5fca9985e4ce 100644 ---- a/src/main/java/org/bukkit/Server.java -+++ b/src/main/java/org/bukkit/Server.java -@@ -2627,5 +2627,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi - */ - @NotNull - String getServerName(); -+ -+ /** -+ * Check if server is lagging according to laggy threshold setting -+ * -+ * @return True if lagging -+ */ -+ boolean isLagging(); - // Purpur end - } diff --git a/patches/server/0014-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch deleted file mode 100644 index c435cdb6d..000000000 --- a/patches/server/0014-Lagging-threshold.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Tue, 23 Jul 2019 10:07:16 -0500 -Subject: [PATCH] Lagging threshold - - -diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index d61f6cf5a5d3320516339a7078f2e9fb2ab59dfa..18dc66b78f91c0b9efdf9008c0a38c52fdfc93ad 100644 ---- a/net/minecraft/server/MinecraftServer.java -+++ b/net/minecraft/server/MinecraftServer.java -@@ -329,6 +329,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping -+ public boolean lagging = false; // Purpur - Lagging threshold - - public volatile Thread shutdownThread; // Paper - public volatile boolean abnormalExit = false; // Paper -@@ -1304,6 +1305,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 @@ -42,7 +42,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..0029717fbd4f2475b07abf4f7036cebb public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index cbdb3b12e11e9b50978febebd2b275997b86c1b8..c6bd1ec93d40d43c151c68ea8892c33db4511d03 100644 +index 8be848d3aaa34be2fa9a9de8f9f2908f0903b60f..a1ebdd491e79fff8e224095ee6058cd550c009f4 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -838,6 +838,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index d75ef2647..bc508401f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -1,5 +1,21 @@ --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java +@@ -302,6 +_,7 @@ + public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files + public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked + private final Set pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping ++ public boolean lagging = false; // Purpur - Lagging threshold + public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation + + public static S spin(Function threadFunction) { +@@ -1229,6 +_,7 @@ + this.recentTps[0] = tps1.getAverage(); + this.recentTps[1] = tps5.getAverage(); + this.recentTps[2] = tps15.getAverage(); ++ lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur - Lagging threshold + tickSection = currentTime; + } + // Paper end - further improve server tick loop @@ -1854,7 +_,7 @@ @DontObfuscate 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 e303776d5..fde0ffca2 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,7 +43,7 @@ @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3288,4 +_,11 @@ +@@ -3288,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping @@ -54,4 +54,11 @@ + return this.getProperties().serverName; + } + // Purpur end - Bring back server name ++ ++ // Purpur start - Lagging threshold ++ @Override ++ public boolean isLagging() { ++ return getServer().lagging; ++ } ++ // Purpur end - Lagging threshold } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index a886a9f13..67be5724c 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -177,6 +177,11 @@ public class PurpurConfig { serverModName = getString("settings.server-mod-name", serverModName); } + public static double laggingThreshold = 19.0D; + private static void tickLoopSettings() { + laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold); + } + public static int barrelRows = 3; public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false;