From 28dc0e6616aa92018560ce197d7b71f68170402c Mon Sep 17 00:00:00 2001 From: willies952002 Date: Sat, 23 Apr 2016 19:51:19 -0400 Subject: [PATCH] Reimplement PlayerEditBookEvent diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java index d2aec29..c2dfe72 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -2209,6 +2209,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { ItemStack itemstack; ItemStack itemstack1; + try { // Paper - Reimplement BookEditEvent if ("MC|BEdit".equals(s)) { packetdataserializer = new PacketDataSerializer(Unpooled.wrappedBuffer(packetplayincustompayload.b())); @@ -2226,12 +2227,14 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { if (itemstack1 != null) { if (itemstack.getItem() == Items.WRITABLE_BOOK && itemstack.getItem() == itemstack1.getItem()) { itemstack1.a("pages", (NBTBase) itemstack.getTag().getList("pages", 8)); + CraftEventFactory.handleEditBookEvent(player, itemstack1); // Paper } return; } } catch (Exception exception) { PlayerConnection.LOGGER.error("Couldn\'t handle book info", exception); + this.disconnect("Invalid Book Data!"); // Paper return; } finally { packetdataserializer.release(); @@ -2271,12 +2274,14 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { itemstack1.a("pages", (NBTBase) nbttaglist); itemstack1.setItem(Items.WRITTEN_BOOK); + CraftEventFactory.handleEditBookEvent(player, itemstack1); // Paper } return; } } catch (Exception exception1) { PlayerConnection.LOGGER.error("Couldn\'t sign book", exception1); + this.disconnect("Invalid Book Data!"); // Paper return; } finally { packetdataserializer.release(); @@ -2342,6 +2347,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } } catch (Exception exception3) { PlayerConnection.LOGGER.error("Couldn\'t set command block", exception3); + this.disconnect("Invalid Command Block Data!"); // Paper } finally { packetdataserializer.release(); } @@ -2411,6 +2417,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } } catch (Exception exception4) { PlayerConnection.LOGGER.error("Couldn\'t set command block", exception4); + this.disconnect("Invalid Command Block Data!"); // Paper } finally { packetdataserializer.release(); } @@ -2436,6 +2443,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } } catch (Exception exception5) { PlayerConnection.LOGGER.error("Couldn\'t set beacon", exception5); + this.disconnect("Invalid Beacon Data!"); // Paper } } } else if ("MC|ItemName".equals(s)) { @@ -2538,6 +2546,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } } } + // Paper start + } finally { + if (packetplayincustompayload.b().refCnt() > 0) { + packetplayincustompayload.b().release(); + } + } + // Paper end } -- 2.5.0