From 7a4d62f6299444236797f8f4e25a3b6fb1fb78eb Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Sun, 6 Apr 2025 00:22:07 +0800 Subject: [PATCH] Try fix disable packet limit (#453) --- .../features/0119-Disable-packet-limit.patch | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 leaves-server/minecraft-patches/features/0119-Disable-packet-limit.patch diff --git a/leaves-server/minecraft-patches/features/0119-Disable-packet-limit.patch b/leaves-server/minecraft-patches/features/0119-Disable-packet-limit.patch new file mode 100644 index 00000000..21398eb0 --- /dev/null +++ b/leaves-server/minecraft-patches/features/0119-Disable-packet-limit.patch @@ -0,0 +1,59 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: violetc <58360096+s-yh-china@users.noreply.github.com> +Date: Sun, 6 Apr 2025 00:19:06 +0800 +Subject: [PATCH] Disable packet limit + + +diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java +index fd490f139e901c2ac598f1eab7aa8d50c65ef864..284cdbd6034ec8962409abba6da37eab311018cc 100644 +--- a/net/minecraft/network/Connection.java ++++ b/net/minecraft/network/Connection.java +@@ -244,8 +244,8 @@ public class Connection extends SimpleChannelInboundHandler> { + if (this.stopReadingPackets) { + return; + } +- if (this.allPacketCounts != null || +- io.papermc.paper.configuration.GlobalConfiguration.get().packetLimiter.overrides.containsKey(packet.getClass())) { ++ if (!org.leavesmc.leaves.LeavesConfig.modify.disablePacketLimit && (this.allPacketCounts != null || // Leaves - can disable ++ io.papermc.paper.configuration.GlobalConfiguration.get().packetLimiter.overrides.containsKey(packet.getClass()))) { // Leaves - can disable + long time = System.nanoTime(); + synchronized (PACKET_LIMIT_LOCK) { + if (this.allPacketCounts != null) { +diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index c30400d58235a16ec5ae0b63b23b1eeaa8c70429..88bd4cdc2d4f82baffcd0091a4a879ac8a2aa0cd 100644 +--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java ++++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +@@ -791,7 +791,7 @@ public class ServerGamePacketListenerImpl + public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) { + // PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - AsyncTabCompleteEvent; run this async + // CraftBukkit start +- if (!this.tabSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.getGameProfile()) && !this.server.isSingleplayerOwner(this.player.getGameProfile())) { // Paper - configurable tab spam limits ++ if (!org.leavesmc.leaves.LeavesConfig.modify.disablePacketLimit && !this.tabSpamThrottler.isIncrementAndUnderThreshold() && !this.server.getPlayerList().isOp(this.player.getGameProfile()) && !this.server.isSingleplayerOwner(this.player.getGameProfile())) { // Paper - configurable tab spam limits // Leaves - can disable + this.disconnectAsync(Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - Kick event cause // Paper - add proper async disconnect + return; + } +@@ -1897,6 +1897,7 @@ public class ServerGamePacketListenerImpl + private static int getSpamThreshold() { return io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.incomingPacketThreshold; } // Paper - Configurable threshold + + private boolean checkLimit(long timestamp) { ++ if (org.leavesmc.leaves.LeavesConfig.modify.disablePacketLimit) return true; // Leaves - disable + if (this.lastLimitedPacket != -1 && timestamp - this.lastLimitedPacket < getSpamThreshold() && this.limitedPackets++ >= 8) { // Paper - Configurable threshold; raise packet limit to 8 + return false; + } +@@ -2511,6 +2512,7 @@ public class ServerGamePacketListenerImpl + + // Spigot start - spam exclusions + private void detectRateSpam(String message) { ++ if (org.leavesmc.leaves.LeavesConfig.modify.disablePacketLimit) return; // Leaves - disable + // CraftBukkit start - replaced with thread safe throttle + if (org.spigotmc.SpigotConfig.enableSpamExclusions) { + for (String exclude : org.spigotmc.SpigotConfig.spamExclusions) { +@@ -3297,7 +3299,7 @@ public class ServerGamePacketListenerImpl + @Override + public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) { + // Paper start - auto recipe limit +- if (!org.bukkit.Bukkit.isPrimaryThread()) { ++ if (!org.leavesmc.leaves.LeavesConfig.modify.disablePacketLimit && !org.bukkit.Bukkit.isPrimaryThread()) { // Leaves - can disable + if (!this.recipeSpamPackets.isIncrementAndUnderThreshold()) { + this.disconnectAsync(net.minecraft.network.chat.Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - kick event cause // Paper - add proper async disconnect + return;