From 42d02904e4aeec9e783b18bae6dd79bf83d1307c Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 4 Nov 2023 20:16:48 -0700 Subject: [PATCH] return empty itemstack to PlayerBookTooLargeEvent if book is not being held --- patches/server/0119-PlayerBookTooLargeEvent.patch | 11 +++++++---- patches/server/0132-Dont-run-with-scissors.patch | 6 +++--- ...213-Shift-right-click-to-use-exp-for-mending.patch | 6 +++--- ...Option-to-disable-kick-for-out-of-order-chat.patch | 4 ++-- patches/server/0266-Remove-Timings.patch | 10 +++++----- ...ore-logger-output-for-invalid-movement-kicks.patch | 4 ++-- .../server/0277-Add-item-packet-serialize-event.patch | 6 +++--- 7 files changed, 25 insertions(+), 22 deletions(-) diff --git a/patches/server/0119-PlayerBookTooLargeEvent.patch b/patches/server/0119-PlayerBookTooLargeEvent.patch index 6e7540df2..b19c81d67 100644 --- a/patches/server/0119-PlayerBookTooLargeEvent.patch +++ b/patches/server/0119-PlayerBookTooLargeEvent.patch @@ -5,14 +5,17 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 14f6abe6e7eeaf5d3053bf3ecb540b898813c267..65c9e83063c84ccff38d52049160bb093a7a50e7 100644 +index d7230d7a0ab8088bfa77d07c2b8cff66953409a9..f221f14c345ec81bc422e0f50d940eb43cdbcc73 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1148,10 +1148,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1148,10 +1148,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); long byteAllowed = maxBookPageSize; -+ ItemStack itemstack = this.player.getInventory().getItem(packet.getSlot()); // Purpur ++ // Purpur start ++ int slot = packet.getSlot(); ++ ItemStack itemstack = Inventory.isHotbarSlot(slot) || slot == Inventory.SLOT_OFFHAND ? this.player.getInventory().getItem(slot) : ItemStack.EMPTY; ++ // Purpur end for (String testString : pageList) { int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; if (byteLength > 256 * 4) { @@ -21,7 +24,7 @@ index 14f6abe6e7eeaf5d3053bf3ecb540b898813c267..65c9e83063c84ccff38d52049160bb09 server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1175,6 +1177,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1175,6 +1180,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0132-Dont-run-with-scissors.patch b/patches/server/0132-Dont-run-with-scissors.patch index d8ca75471..06a56c76f 100644 --- a/patches/server/0132-Dont-run-with-scissors.patch +++ b/patches/server/0132-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 65c9e83063c84ccff38d52049160bb093a7a50e7..90561a2fb7c353bedb62b200689d8c73b3534033 100644 +index f221f14c345ec81bc422e0f50d940eb43cdbcc73..a84ec27e5fbbb270c4cb3ed814518272591ae613 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1610,6 +1610,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1613,6 +1613,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 65c9e83063c84ccff38d52049160bb093a7a50e7..90561a2fb7c353bedb62b200689d8c73 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1661,6 +1668,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1664,6 +1671,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return false; } // Paper end - optimise out extra getCubes diff --git a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch index 3e03aa2e6..6f8cbbf42 100644 --- a/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0213-Shift-right-click-to-use-exp-for-mending.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 0838b3c612c832276afa1edc090ef7771e8bf2fc..3250c21eded7872336d349a7a93c2c17160db723 100644 +index 0520d66d9de942f12f61dd1f735f8c19d5d62f07..818b360c205c7667946f49e324daa961b3b446cb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -518,6 +518,7 @@ public class ServerPlayerGameMode { @@ -36,10 +36,10 @@ index 0838b3c612c832276afa1edc090ef7771e8bf2fc..3250c21eded7872336d349a7a93c2c17 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 90561a2fb7c353bedb62b200689d8c73b3534033..9e4100ed797cfbafbb9c0b658f2a19c1c9a57ffc 100644 +index a84ec27e5fbbb270c4cb3ed814518272591ae613..ccaee317c02bba549787dbcfa558763d67eab1d2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2020,6 +2020,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2023,6 +2023,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch index 0bd304798..eb4671ead 100644 --- a/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0259-Option-to-disable-kick-for-out-of-order-chat.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable kick for out of order chat diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9e4100ed797cfbafbb9c0b658f2a19c1c9a57ffc..018a3597c7132ba1f5972fef74b6a32837a31cb3 100644 +index ccaee317c02bba549787dbcfa558763d67eab1d2..82a536db73221dc366a06818e66ce15f23536cde 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2338,7 +2338,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2341,7 +2341,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl do { instant1 = (Instant) this.lastChatTimeStamp.get(); if (timestamp.isBefore(instant1)) { diff --git a/patches/server/0266-Remove-Timings.patch b/patches/server/0266-Remove-Timings.patch index 3c1f2bf92..f12ddda8b 100644 --- a/patches/server/0266-Remove-Timings.patch +++ b/patches/server/0266-Remove-Timings.patch @@ -606,10 +606,10 @@ index de8e4fb4e0dac35cda26aced583f7dbd7f670f56..d5837c675e033c7277656e026cb98d55 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5bb234edb 100644 +index 82a536db73221dc366a06818e66ce15f23536cde..314fd1bfe080a1298a72ca063da510d22c621ed6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2448,7 +2448,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2451,7 +2451,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCommand(String s) { // Paper - private -> public org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher @@ -618,7 +618,7 @@ index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5 if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); -@@ -2458,7 +2458,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2461,7 +2461,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.cserver.getPluginManager().callEvent(event); if (event.isCancelled()) { @@ -627,7 +627,7 @@ index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5 return; } -@@ -2471,7 +2471,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2474,7 +2474,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); return; } finally { @@ -637,7 +637,7 @@ index fe54da743bf3583de98ff5c26d1746f686736729..1060672a14af92acd307e165a6c0f1b5 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 11b825f3dda93005e4b6fd4a5f36935215daf76a..d83f360d5f28f39fffca2949c5dbc114c04e7629 100644 +index 5c90dbdbaa4655458081fea0343a48674cfd3a55..50720000069a4914c11ef5c402a39c469966196f 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1249,7 +1249,7 @@ public abstract class PlayerList { diff --git a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch index 720b95303..38462fda1 100644 --- a/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0268-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50..165623f5abc237e63b236489af6375bb43daeaca 100644 +index 314fd1bfe080a1298a72ca063da510d22c621ed6..a086680bde989523dbaa52ef7c403ad6520ced98 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -736,6 +736,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -16,7 +16,7 @@ index 0c56b90dbcb4aaf904eeb1773a1aa82e9e018c50..165623f5abc237e63b236489af6375bb return; } -@@ -1324,8 +1325,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1327,8 +1328,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); diff --git a/patches/server/0277-Add-item-packet-serialize-event.patch b/patches/server/0277-Add-item-packet-serialize-event.patch index af1c75a4d..da57a8d69 100644 --- a/patches/server/0277-Add-item-packet-serialize-event.patch +++ b/patches/server/0277-Add-item-packet-serialize-event.patch @@ -36,7 +36,7 @@ index 2e395962b555bef0ce1a98e1d768e7738f011535..40f51062624161892c780ddae05e2285 this.writeId(BuiltInRegistries.ITEM, item); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 306195a8a57dc62379ffd856b214a651fd60e483..bc0dfdad161936d1881066f61de02e6c9a7ed8a7 100644 +index 926ba816e7bccec0d1b34c2f8fc3300be84df4c2..b61c4d1ebb9c15a7ecd7bec5eb864851c053fb7e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1549,6 +1549,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop