Skip to content

Commit

Permalink
return empty itemstack to PlayerBookTooLargeEvent if book is not bein…
Browse files Browse the repository at this point in the history
…g held
  • Loading branch information
granny committed Nov 5, 2023
1 parent 8a1e23d commit 42d0290
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 22 deletions.
11 changes: 7 additions & 4 deletions patches/server/0119-PlayerBookTooLargeEvent.patch
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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());
Expand Down
6 changes: 3 additions & 3 deletions patches/server/0132-Dont-run-with-scissors.patch
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
10 changes: 5 additions & 5 deletions patches/server/0266-Remove-Timings.patch
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()) {
Expand All @@ -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 {
Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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());
Expand Down
6 changes: 3 additions & 3 deletions patches/server/0277-Add-item-packet-serialize-event.patch
Original file line number Diff line number Diff line change
Expand Up @@ -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<TickTa
Expand All @@ -48,10 +48,10 @@ index 306195a8a57dc62379ffd856b214a651fd60e483..bc0dfdad161936d1881066f61de02e6c
while (iterator.hasNext()) {
ServerLevel worldserver = (ServerLevel) iterator.next();
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 165623f5abc237e63b236489af6375bb43daeaca..6638d769a34287d54b22e4416003556915e153f1 100644
index a086680bde989523dbaa52ef7c403ad6520ced98..34bb21e6e2812068e9bf82776cda4a0c1a34a2df 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3362,6 +3362,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -3365,6 +3365,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
}
}
Expand Down

0 comments on commit 42d0290

Please sign in to comment.