ef0e5a642d
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 9ae3f10f SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API 48c0c547 PR-786: Add methods to get sounds from entities CraftBukkit Changes: 5cc9c022a SPIGOT-7152: Handle hand item changing during air interact event 4ffa1acf6 SPIGOT-7154: Players get kicked when interacting with a conversation 4daa21123 SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API e5d6a9bbf PR-1100: Add methods to get sounds from entities b7e9f1c8b SPIGOT-7146: Reduce use of Material switch in ItemMeta Spigot Changes: 4c157bb4 Rebuild patches
41 Zeilen
2.1 KiB
Diff
41 Zeilen
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Shane Freeder <theboyetronic@gmail.com>
|
|
Date: Thu, 5 Oct 2017 01:54:07 +0100
|
|
Subject: [PATCH] handle ServerboundKeepAlivePacket async
|
|
|
|
In 1.12.2, Mojang moved the processing of ServerboundKeepAlivePacket off the main
|
|
thread, while entirely correct for the server, this causes issues with
|
|
plugins which are expecting the PlayerQuitEvent on the main thread.
|
|
|
|
In order to counteract some bad behavior, we will post handling of the
|
|
disconnection to the main thread, but leave the actual processing of the packet
|
|
off the main thread.
|
|
|
|
also adding some additional logging in order to help work out what is causing
|
|
random disconnections for clients.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index 32c4383cfb4cab6329d7046c48daf3050fa027c6..c4f1ded84ec1ed152faeb835a3f50b7e31356655 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -3242,14 +3242,18 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
|
|
@Override
|
|
public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
|
|
- PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); // CraftBukkit
|
|
+ //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); // CraftBukkit // Paper - This shouldn't be on the main thread
|
|
if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) {
|
|
int i = (int) (Util.getMillis() - this.keepAliveTime);
|
|
|
|
this.player.latency = (this.player.latency * 3 + i) / 4;
|
|
this.keepAlivePending = false;
|
|
} else if (!this.isSingleplayerOwner()) {
|
|
+ // Paper start - This needs to be handled on the main thread for plugins
|
|
+ server.submit(() -> {
|
|
this.disconnect(Component.translatable("disconnect.timeout"));
|
|
+ });
|
|
+ // Paper end
|
|
}
|
|
|
|
}
|