aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0753-Kick-on-main-for-illegal-chat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0753-Kick-on-main-for-illegal-chat.patch')
-rw-r--r--patches/server/0753-Kick-on-main-for-illegal-chat.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/patches/server/0753-Kick-on-main-for-illegal-chat.patch b/patches/server/0753-Kick-on-main-for-illegal-chat.patch
new file mode 100644
index 0000000000..90fe5ee6ad
--- /dev/null
+++ b/patches/server/0753-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 1a44358117e5f72789dd270ce4311f6c6a17bf6d..5dad35d1b38ef4e82d1480ccc04d306dcd6aa9c8 100644
+--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
++++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+@@ -2021,7 +2021,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+ }
+ // 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());
+
+@@ -2054,7 +2056,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+ @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());
+
+@@ -2140,7 +2144,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+ 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 causes
++ }); // Paper - push to main
+ return Optional.empty();
+ } else {
+ Optional<LastSeenMessages> optional = this.unpackAndApplyLastSeen(acknowledgment);