Skip to content

Commit ee4916d

Browse files
Fire kick event for out-of-order chat on main thread (#7942)
1 parent 6c52b5e commit ee4916d

4 files changed

+21
-9
lines changed

patches/server/0834-Kick-on-main-for-illegal-chars.patch renamed to patches/server/0834-Kick-on-main-for-illegal-chat.patch

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
22
From: Nassim Jahnke <jahnke.nassim@gmail.com>
33
Date: Mon, 17 Jan 2022 19:47:19 +0100
4-
Subject: [PATCH] Kick on main for illegal chars
4+
Subject: [PATCH] Kick on main for illegal chat
55

6+
Makes the PlayerKickEvent fire on the main thread for
7+
illegal characters or chat out-of-order errors.
68

79
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
8-
index 5927035f616f341f1d28b569efaf7812e4aa6880..6a83e098ebbf9ccde9c0726981393a376d99ab34 100644
10+
index a84ab1754ffee0436ac3abf05e3fd69f3523e5e6..dbd16fabc781a2820dc073154830667ea88cb27d 100644
911
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1012
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1113
@@ -2105,7 +2105,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
@@ -28,3 +30,13 @@ index 5927035f616f341f1d28b569efaf7812e4aa6880..6a83e098ebbf9ccde9c0726981393a37
2830
} else {
2931
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel());
3032
if (this.tryHandleChat(packet.command(), packet.timeStamp())) {
33+
@@ -2145,7 +2149,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
34+
private boolean tryHandleChat(String s, Instant instant) {
35+
if (!this.updateChatOrder(instant)) {
36+
ServerGamePacketListenerImpl.LOGGER.warn("{} sent out-of-order chat: '{}'", this.player.getName().getString(), s);
37+
+ this.server.scheduleOnMain(() -> { // Paper - push to main
38+
this.disconnect(Component.translatable("multiplayer.disconnect.out_of_order_chat"));
39+
+ }); // Paper - push to main
40+
return false;
41+
} else {
42+
if (this.isChatExpired(instant)) {

patches/server/0883-Prevent-tile-entity-copies-loading-chunks.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Prevent tile entity copies loading chunks
55

66

77
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
8-
index 3c3b2530faa3f4b1da21d2e1f383706a64db1d01..01d634fc6ec59e97b7a35b243044f0e7a677dc8c 100644
8+
index 842a1535e26afc6bc072f49d033479395de59a09..d8985815a947fd7007f87db8ebd2a6296899bee6 100644
99
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1010
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
11-
@@ -3174,7 +3174,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
11+
@@ -3176,7 +3176,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
1212

1313
if (!itemstack.isEmpty() && nbttagcompound != null && nbttagcompound.contains("x") && nbttagcompound.contains("y") && nbttagcompound.contains("z") && this.player.getBukkitEntity().hasPermission("minecraft.nbt.copy")) { // Spigot
1414
BlockPos blockposition = BlockEntity.getPosFromTag(nbttagcompound);

patches/server/0886-Pass-ServerLevel-for-gamerule-callbacks.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ index 83cc8db3ca76898f88a56c27c2b6fde6006723ba..aea18838a17fc52e1bf8cd84cd185565
1818

1919
if (dedicatedserverproperties.enableQuery) {
2020
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
21-
index 01d634fc6ec59e97b7a35b243044f0e7a677dc8c..0b74c52a2b138862335013846277064e6ad00047 100644
21+
index d8985815a947fd7007f87db8ebd2a6296899bee6..736444c288421db84ae127d7b8cb746b6edc355f 100644
2222
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
2323
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
24-
@@ -2783,7 +2783,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
24+
@@ -2785,7 +2785,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
2525
this.player = this.server.getPlayerList().respawn(this.player, false);
2626
if (this.server.isHardcore()) {
2727
this.player.setGameMode(GameType.SPECTATOR, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.HARDCORE_DEATH, null); // Paper
@@ -158,7 +158,7 @@ index 3c93bfeb94168f832904a8462ae23b06e81e080d..468c635d31cfa8051666bbefce8df4b4
158158
this.onChanged(server);
159159
}
160160
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
161-
index 998ad03f4daa9f3b6d3dd70c5c912bc935ffd12f..9175fa06419ac726c4508f38ae3d454451fbb380 100644
161+
index aa43f8fb00432ab96e459c19cc82c4b99fd2f33e..25e56be9055c5c432e1180d45341f4e9d9fcb7ca 100644
162162
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
163163
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
164164
@@ -1914,7 +1914,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {

patches/server/0897-Do-not-accept-invalid-client-settings.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Do not accept invalid client settings
55

66

77
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
8-
index 0b74c52a2b138862335013846277064e6ad00047..a9193fcd719e403e4b821a2a0cf22fe2a8490943 100644
8+
index 736444c288421db84ae127d7b8cb746b6edc355f..a82f5516274c2e7b582d38c70cd116d23d0687c8 100644
99
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1010
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
11-
@@ -3352,6 +3352,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
11+
@@ -3354,6 +3354,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
1212
@Override
1313
public void handleClientInformation(ServerboundClientInformationPacket packet) {
1414
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel());

0 commit comments

Comments
 (0)