diff --git a/patches/server/0228-Max-joins-per-second.patch b/patches/server/0228-Max-joins-per-second.patch deleted file mode 100644 index fc2edcca8..000000000 --- a/patches/server/0228-Max-joins-per-second.patch +++ /dev/null @@ -1,47 +0,0 @@ -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/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java -index 3c866432c8a938c677a315612f3e159bda67a2a2..8661c1b1cfe2b3db000e1f08814fd4409c4b7fab 100644 ---- a/net/minecraft/network/Connection.java -+++ b/net/minecraft/network/Connection.java -@@ -617,11 +617,20 @@ public class Connection extends SimpleChannelInboundHandler> { - private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world - private static int joinAttemptsThisTick; // Paper - Buffer joins to world - private static int currTick; // Paper - Buffer joins to world -+ private static int tickSecond; // Purpur - public void tick() { - this.flushQueue(); - // Paper start - Buffer joins to world - if (Connection.currTick != net.minecraft.server.MinecraftServer.currentTick) { - Connection.currTick = net.minecraft.server.MinecraftServer.currentTick; -+ // Purpur start -+ if (org.purpurmc.purpur.PurpurConfig.maxJoinsPerSecond) { -+ if (++Connection.tickSecond > 20) { -+ Connection.tickSecond = 0; -+ Connection.joinAttemptsThisTick = 0; -+ } -+ } else -+ // Purpur end - Connection.joinAttemptsThisTick = 0; - } - // Paper end - Buffer joins to world -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 60bb703fdf582bc3ec1081f31818d696e3b276ed..222d1850a9c0c6907dc9de534cff64c122a0bb89 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -457,8 +457,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; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch new file mode 100644 index 000000000..ac6b9a64d --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch @@ -0,0 +1,23 @@ +--- a/net/minecraft/network/Connection.java ++++ b/net/minecraft/network/Connection.java +@@ -588,11 +_,20 @@ + private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world + private static int joinAttemptsThisTick; // Paper - Buffer joins to world + private static int currTick; // Paper - Buffer joins to world ++ private static int tickSecond; // Purpur - Max joins per second + public void tick() { + this.flushQueue(); + // Paper start - Buffer joins to world + if (Connection.currTick != net.minecraft.server.MinecraftServer.currentTick) { + Connection.currTick = net.minecraft.server.MinecraftServer.currentTick; ++ // Purpur start - Max joins per second ++ if (org.purpurmc.purpur.PurpurConfig.maxJoinsPerSecond) { ++ if (++Connection.tickSecond > 20) { ++ Connection.tickSecond = 0; ++ Connection.joinAttemptsThisTick = 0; ++ } ++ } else ++ // Purpur end - Max joins per second + Connection.joinAttemptsThisTick = 0; + } + // Paper end - Buffer joins to world 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 265b9faf3..329a3449f 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -450,8 +450,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 Pattern usernameValidCharactersPattern;