From 4d7ed88be26d541d45d6c7ffd824a80985a68733 Mon Sep 17 00:00:00 2001 From: willies952002 Date: Tue, 26 Apr 2016 23:00:23 -0400 Subject: [PATCH] Reimplement PlayerEditBookEvent --- .../Reimplement-PlayerEditBookEvent.patch | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch diff --git a/Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch b/Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch new file mode 100644 index 0000000000..4c75f171b6 --- /dev/null +++ b/Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch @@ -0,0 +1,87 @@ +From 0000000000000000000000000000000000000000 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -0,0 +0,0 @@ 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())); + +@@ -0,0 +0,0 @@ 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(); +@@ -0,0 +0,0 @@ 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(); +@@ -0,0 +0,0 @@ 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(); + } +@@ -0,0 +0,0 @@ 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(); + } +@@ -0,0 +0,0 @@ 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)) { +@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { + } + } + } ++ // Paper start ++ } finally { ++ if (packetplayincustompayload.b().refCnt() > 0) { ++ packetplayincustompayload.b().release(); ++ } ++ } ++ // Paper end + + } + +-- \ No newline at end of file