aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0434-Limit-recipe-packets.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0434-Limit-recipe-packets.patch')
-rw-r--r--patches/server/0434-Limit-recipe-packets.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/patches/server/0434-Limit-recipe-packets.patch b/patches/server/0434-Limit-recipe-packets.patch
new file mode 100644
index 0000000000..39de7be41f
--- /dev/null
+++ b/patches/server/0434-Limit-recipe-packets.patch
@@ -0,0 +1,41 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Shane Freeder <[email protected]>
+Date: Sat, 12 Dec 2020 23:45:28 +0000
+Subject: [PATCH] Limit recipe packets
+
+
+diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+index 1e6c8a23e892fc1c49da9538b435aa3eb0a28934..04de96af5415c3115703f5ab42e9fa3aa2ccee60 100644
+--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
++++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+@@ -279,6 +279,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+ private final TickThrottler chatSpamThrottler = new TickThrottler(20, 200);
+ private final TickThrottler tabSpamThrottler = new TickThrottler(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamIncrement, io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamLimit); // Paper - configurable tab spam limits
+ private final TickThrottler dropSpamThrottler = new TickThrottler(20, 1480);
++ private final TickThrottler recipeSpamPackets = new TickThrottler(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement, io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit);
+ private double firstGoodX;
+ private double firstGoodY;
+ private double firstGoodZ;
+@@ -395,6 +396,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+ this.keepConnectionAlive();
+ this.chatSpamThrottler.tick();
+ this.tabSpamThrottler.tick(); // Paper - configurable tab spam limits
++ this.recipeSpamPackets.tick(); // Paper - auto recipe limit
+ this.dropSpamThrottler.tick();
+ if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L) {
+ this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854
+@@ -3155,6 +3157,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+
+ @Override
+ public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) {
++ // Paper start - auto recipe limit
++ if (!org.bukkit.Bukkit.isPrimaryThread()) {
++ if (!this.recipeSpamPackets.isIncrementAndUnderThreshold()) {
++ this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam"));
++ return;
++ }
++ }
++ // Paper end - auto recipe limit
+ PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
+ this.player.resetLastActionTime();
+ if (!this.player.isSpectator() && this.player.containerMenu.containerId == packet.containerId()) {