diff --git a/patches/server/0262-Max-joins-per-second.patch b/patches/server/0262-Max-joins-per-second.patch new file mode 100644 index 000000000..8e0e24492 --- /dev/null +++ b/patches/server/0262-Max-joins-per-second.patch @@ -0,0 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Tue, 18 Jan 2022 06:35:54 -0600 +Subject: [PATCH] Max joins per second + +When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick + +diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java +index 81dde0efc1a06420c0791520b9e40b24dd1f0318..bf053d317981a49b33f5d1f80feabbc40650a15f 100644 +--- a/src/main/java/net/minecraft/network/Connection.java ++++ b/src/main/java/net/minecraft/network/Connection.java +@@ -503,11 +503,20 @@ public class Connection extends SimpleChannelInboundHandler> { + private static final int MAX_PER_TICK = com.destroystokyo.paper.PaperConfig.maxJoinsPerTick; // Paper + private static int joinAttemptsThisTick; // Paper + private static int currTick; // Paper ++ private static int tickSecond; // Purpur + public void tick() { + this.flushQueue(); + // Paper start + if (currTick != MinecraftServer.currentTick) { + currTick = MinecraftServer.currentTick; ++ // Purpur start ++ if (org.purpurmc.purpur.PurpurConfig.maxJoinsPerSecond) { ++ if (++tickSecond > 20) { ++ tickSecond = 0; ++ joinAttemptsThisTick = 0; ++ } ++ } else ++ // Purpur end + joinAttemptsThisTick = 0; + } + // Paper end +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index b73d039acf0bedf98702f5e4185d190e68f6cf7c..672cdb5d3a48ca66fb62c49f7b5ce88dea781b97 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -414,8 +414,10 @@ public class PurpurConfig { + } + + public static boolean useUPnP = false; ++ public static boolean maxJoinsPerSecond = false; + private static void networkSettings() { + useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP); ++ maxJoinsPerSecond = getBoolean("settings.network.max-joins-per-second", maxJoinsPerSecond); + } + + public static java.util.regex.Pattern usernameValidCharactersPattern;