Files
Purpur/patches/server/0116-PaperMC-Buffer-joins.patch
William Blake Galbreath 6fecfcfebc Update to 1.16.2
2020-08-15 00:58:54 -05:00

49 lines
2.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Sun, 2 Aug 2020 18:27:13 +0100
Subject: [PATCH] PaperMC - Buffer joins
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
index 66f239040..fe9a770cb 100644
--- a/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
@@ -412,10 +412,23 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
}
// Paper end
+ private static final int MAX_PER_TICK = 3; // max joins per tick
+ private static int lastHit = 0; // unused for now
+ public static int thisTick; // current tick counter
+ private static int loginsThisTick = 0;
+ private static int currTick;
public void a() {
+ if (currTick != thisTick) {
+ currTick = thisTick;
+ loginsThisTick = 0;
+ }
this.p();
if (this.packetListener instanceof LoginListener) {
- ((LoginListener) this.packetListener).tick();
+ if ( ((LoginListener) this.packetListener).getLoginState() != LoginListener.EnumProtocolState.READY_TO_ACCEPT
+ || (thisTick > lastHit + 10 || loginsThisTick++ < MAX_PER_TICK)
+ ) {
+ ((LoginListener) this.packetListener).tick();
+ }
}
if (this.packetListener instanceof PlayerConnection) {
diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java
index 5f4dacf9c..9b2f93a4b 100644
--- a/src/main/java/net/minecraft/server/ServerConnection.java
+++ b/src/main/java/net/minecraft/server/ServerConnection.java
@@ -124,7 +124,7 @@ public class ServerConnection {
public void c() {
List list = this.connectedChannels;
-
+ NetworkManager.thisTick++; //Paper
synchronized (this.connectedChannels) {
// Spigot Start
this.addPending(); // Paper