Do not perform neighbour updates when using debug stick (Fixes #2134)
CB blindly drops any update flags when recording block modifications, this causes the debug stick to blindly update neighbouring blocks on usage in order to control this, we will special case this item, however, this ideally should be fixed by recording the actual update flags used, but will induce ABI breaks... This patch also maintains the behavior of the BlockPlaceEvent, this behavior will NOT be guaranteed in the future, however.
This commit is contained in:
@@ -38,9 +38,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
@Override
|
||||
public void a(PacketPlayInBEdit packetplayinbedit) {
|
||||
+ // Paper start
|
||||
+ ItemStack testStack = packetplayinbedit.b(); // TODO(Proximyst): Add obfhelper here
|
||||
+ ItemStack testStack = packetplayinbedit.getBook();
|
||||
+ if (!server.isPrimaryThread() && !testStack.isEmpty() && testStack.getTag() != null) {
|
||||
+ NBTTagList pageList = testStack.getTag().getList("pages", 8);
|
||||
+ if (pageList.size() > 50) {
|
||||
+ PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with too many pages");
|
||||
+ minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!"));
|
||||
+ return;
|
||||
+ }
|
||||
+ long byteTotal = 0;
|
||||
+ int maxBookPageSize = com.destroystokyo.paper.PaperConfig.maxBookPageSize;
|
||||
+ double multiplier = Math.max(0.3D, Math.min(1D, com.destroystokyo.paper.PaperConfig.maxBookTotalSizeMultiplier));
|
||||
@@ -48,6 +53,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ for (int i = 0; i < pageList.size(); ++i) {
|
||||
+ String testString = pageList.getString(i);
|
||||
+ int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length;
|
||||
+ if (byteLength > 256 * 4) {
|
||||
+ PlayerConnection.LOGGER.warn(this.player.getName() + " tried to send a book with with a page too large!");
|
||||
+ minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!"));
|
||||
+ return;
|
||||
+ }
|
||||
+ byteTotal += byteLength;
|
||||
+ int length = testString.length();
|
||||
+ int multibytes = 0;
|
||||
|
||||
Reference in New Issue
Block a user