From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Denery <dorofeevij@gmail.com> Date: Sun, 6 Nov 2022 02:02:46 +0300 Subject: [PATCH] Fix player kick on shutdown Fix preemptive player kick on a server shutdown. If you update minecraft version / upstream and something is changed in this method make sure that a server doesn't disconnect a player preemptively, also check if all packets are ignored during the shutdown process. See net.minecraft.network.Connection#channelRead0(ChannelHandlerContext, Packet) and net.minecraft.util.thread.BlockableEventLoop#executeIfPossible(Runnable) diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java index 6ac03dee902051a26493dba468d6a2f5cecfe066..9a49f5271ec1d9de17632bfffe8309cb1ba0d8b1 100644 --- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java +++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java @@ -43,7 +43,7 @@ public class PacketUtils { public static <T extends PacketListener> void ensureRunningOnSameThread(Packet<T> packet, T listener, BlockableEventLoop<?> engine) throws RunningOnDifferentThreadException { if (!engine.isSameThread()) { - engine.executeIfPossible(() -> { + engine.execute(() -> { // Paper - Fix preemptive player kick on a server shutdown. packetProcessing.push(listener); // Paper - detailed watchdog information try { // Paper - detailed watchdog information if (MinecraftServer.getServer().hasStopped() || (listener instanceof ServerCommonPacketListenerImpl && ((ServerCommonPacketListenerImpl) listener).processedDisconnect)) return; // CraftBukkit, MC-142590