diff options
Diffstat (limited to 'patches/server/0769-Kick-on-main-for-illegal-chat.patch')
-rw-r--r-- | patches/server/0769-Kick-on-main-for-illegal-chat.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/patches/server/0769-Kick-on-main-for-illegal-chat.patch b/patches/server/0769-Kick-on-main-for-illegal-chat.patch new file mode 100644 index 0000000000..8b321a120d --- /dev/null +++ b/patches/server/0769-Kick-on-main-for-illegal-chat.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nassim Jahnke <[email protected]> +Date: Mon, 17 Jan 2022 19:47:19 +0100 +Subject: [PATCH] Kick on main for illegal chat + +Makes the PlayerKickEvent fire on the main thread for +illegal characters or chat out-of-order errors. + +diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index 4bf8e2e371c78aeb175f068faeefc873b77d6379..161e8a8c7517c87784bd7f543d18d4ac0a323c8f 100644 +--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +@@ -2165,7 +2165,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic + } + // CraftBukkit end + if (ServerGamePacketListenerImpl.isChatMessageIllegal(packet.message())) { ++ this.server.scheduleOnMain(() -> { // Paper - push to main for event firing + this.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper - add cause ++ }); // Paper - push to main for event firing + } else { + Optional<LastSeenMessages> optional = this.tryHandleChat(packet.message(), packet.timeStamp(), packet.lastSeenMessages()); + +@@ -2199,7 +2201,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic + @Override + public void handleChatCommand(ServerboundChatCommandPacket packet) { + if (ServerGamePacketListenerImpl.isChatMessageIllegal(packet.command())) { ++ this.server.scheduleOnMain(() -> { // Paper - push to main for event firing + this.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper ++ }); // Paper - push to main for event firing + } else { + Optional<LastSeenMessages> optional = this.tryHandleChat(packet.command(), packet.timeStamp(), packet.lastSeenMessages()); + +@@ -2285,7 +2289,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic + private Optional<LastSeenMessages> tryHandleChat(String message, Instant timestamp, LastSeenMessages.Update acknowledgment) { + if (!this.updateChatOrder(timestamp)) { + ServerGamePacketListenerImpl.LOGGER.warn("{} sent out-of-order chat: '{}'", this.player.getName().getString(), message); ++ this.server.scheduleOnMain(() -> { // Paper - push to main + this.disconnect(Component.translatable("multiplayer.disconnect.out_of_order_chat"), org.bukkit.event.player.PlayerKickEvent.Cause.OUT_OF_ORDER_CHAT); // Paper - kick event ca ++ }); // Paper - push to main + return Optional.empty(); + } else { + Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(acknowledgment); |