From 5ae3895105bda5347fc60df63f5d780c2cc066dc Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 4 Feb 2019 22:39:00 -0500 Subject: [PATCH] Fix Async Tab Completion processing previous logic was super broken and did not truncate your currently typed part of the input from the suggestions. --- .../0217-AsyncTabCompleteEvent.patch | 13 +++++---- ...-allowed-colored-signs-to-be-created.patch | 6 ++-- .../0280-InventoryCloseEvent-Reason-API.patch | 20 ++++++------- ...nventory-when-cancelling-PlayerInter.patch | 6 ++-- ...event-players-from-moving-into-unloa.patch | 10 +++---- ...-after-profile-lookups-if-not-needed.patch | 28 +++++++++---------- ...t-allow-digging-into-unloaded-chunks.patch | 6 ++-- .../0403-Book-Size-Limits.patch | 8 +++--- .../0413-Fix-PlayerEditBookEvent.patch | 6 ++-- 9 files changed, 52 insertions(+), 51 deletions(-) diff --git a/Spigot-Server-Patches/0217-AsyncTabCompleteEvent.patch b/Spigot-Server-Patches/0217-AsyncTabCompleteEvent.patch index fcb3154a8..ea9e23a54 100644 --- a/Spigot-Server-Patches/0217-AsyncTabCompleteEvent.patch +++ b/Spigot-Server-Patches/0217-AsyncTabCompleteEvent.patch @@ -1,4 +1,4 @@ -From 4eedfa988b7e9b1d975fedfc09e4ac05fb071ac0 Mon Sep 17 00:00:00 2001 +From 5086b17a95581c2e6db5359144c215d354025377 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 26 Nov 2017 13:19:58 -0500 Subject: [PATCH] AsyncTabCompleteEvent @@ -14,7 +14,7 @@ completion, such as offline players. Also adds isCommand and getLocation to the sync TabCompleteEvent diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 9afe20d40..59b0084c7 100644 +index 7017c02ba..2ad238796 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -507,10 +507,10 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { @@ -30,7 +30,7 @@ index 9afe20d40..59b0084c7 100644 return; } // CraftBukkit end -@@ -520,12 +520,34 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -520,12 +520,35 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { stringreader.skip(); } @@ -58,10 +58,11 @@ index 9afe20d40..59b0084c7 100644 + } + // Paper start - async tab completion + } else if (!completions.isEmpty()) { -+ com.mojang.brigadier.suggestion.SuggestionsBuilder suggestionsBuilder = new com.mojang.brigadier.suggestion.SuggestionsBuilder(packetplayintabcomplete.c(), stringreader.getTotalLength()); -+ completions.forEach(suggestionsBuilder::suggest); ++ com.mojang.brigadier.suggestion.SuggestionsBuilder builder = new com.mojang.brigadier.suggestion.SuggestionsBuilder(packetplayintabcomplete.c(), stringreader.getTotalLength()); + -+ player.playerConnection.sendPacket(new PacketPlayOutTabComplete(packetplayintabcomplete.b(), suggestionsBuilder.build())); ++ builder = builder.createOffset(builder.getInput().lastIndexOf(' ') + 1); ++ completions.forEach(builder::suggest); ++ player.playerConnection.sendPacket(new PacketPlayOutTabComplete(packetplayintabcomplete.b(), builder.buildFuture().join())); + } + // Paper end - async tab completion + diff --git a/Spigot-Server-Patches/0251-Fix-exploit-that-allowed-colored-signs-to-be-created.patch b/Spigot-Server-Patches/0251-Fix-exploit-that-allowed-colored-signs-to-be-created.patch index 204c94609..4e9cc5e49 100644 --- a/Spigot-Server-Patches/0251-Fix-exploit-that-allowed-colored-signs-to-be-created.patch +++ b/Spigot-Server-Patches/0251-Fix-exploit-that-allowed-colored-signs-to-be-created.patch @@ -1,14 +1,14 @@ -From e5e2fc8ea552a3cadcf505ec83832845d8b3f7b7 Mon Sep 17 00:00:00 2001 +From e5a7d6787e3f20b05192d5a1bcf6929ed1c99080 Mon Sep 17 00:00:00 2001 From: 0x22 <0x22@futureclient.net> Date: Thu, 26 Apr 2018 04:41:11 -0400 Subject: [PATCH] Fix exploit that allowed colored signs to be created diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 59b0084c7b..f4b5627d46 100644 +index 2ad238796..1fdffcfb0 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2479,7 +2479,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -2480,7 +2480,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { String[] lines = new String[4]; for (int i = 0; i < astring.length; ++i) { diff --git a/Spigot-Server-Patches/0280-InventoryCloseEvent-Reason-API.patch b/Spigot-Server-Patches/0280-InventoryCloseEvent-Reason-API.patch index 595dd3cc6..6da8d3341 100644 --- a/Spigot-Server-Patches/0280-InventoryCloseEvent-Reason-API.patch +++ b/Spigot-Server-Patches/0280-InventoryCloseEvent-Reason-API.patch @@ -1,4 +1,4 @@ -From fa0a3dad58143b0bd96b5d8c6ed81f94c42b02b6 Mon Sep 17 00:00:00 2001 +From be44a8f7dca619d2ee1b614d648bf2bbb935f0fb Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 3 Jul 2018 21:56:23 -0400 Subject: [PATCH] InventoryCloseEvent Reason API @@ -7,7 +7,7 @@ Allows you to determine why an inventory was closed, enabling plugin developers to "confirm" things based on if it was player triggered close or not. diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 6150b56e0e..3ca579e381 100644 +index 6150b56e0..3ca579e38 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -943,7 +943,7 @@ public class Chunk implements IChunkAccess { @@ -29,7 +29,7 @@ index 6150b56e0e..3ca579e381 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index e06f03e80a..59f108e490 100644 +index e06f03e80..59f108e49 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -158,7 +158,7 @@ public abstract class EntityHuman extends EntityLiving { @@ -56,7 +56,7 @@ index e06f03e80a..59f108e490 100644 this.activeContainer = this.defaultContainer; } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index cd488d37f2..1054367d0e 100644 +index cd488d37f..1054367d0 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -344,7 +344,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -110,10 +110,10 @@ index cd488d37f2..1054367d0e 100644 this.m(); } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index f4b5627d46..b917e2ec76 100644 +index 1fdffcfb0..adc57a374 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2015,7 +2015,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -2016,7 +2016,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.getWorldServer()); if (this.player.isFrozen()) return; // CraftBukkit @@ -123,7 +123,7 @@ index f4b5627d46..b917e2ec76 100644 this.player.m(); } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 96eff10ffa..ddaa73e83d 100644 +index 96eff10ff..ddaa73e83 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -422,7 +422,7 @@ public abstract class PlayerList { @@ -136,7 +136,7 @@ index 96eff10ffa..ddaa73e83d 100644 PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game"); cserver.getPluginManager().callEvent(playerQuitEvent); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index b82aa903ca..a2bf6b0460 100644 +index b82aa903c..a2bf6b046 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -513,8 +513,13 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @@ -155,7 +155,7 @@ index b82aa903ca..a2bf6b0460 100644 public boolean isBlocking() { return getHandle().isBlocking(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0753a0f266..ce58cfc11e 100644 +index 0753a0f26..ce58cfc11 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -738,7 +738,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -168,7 +168,7 @@ index 0753a0f266..ce58cfc11e 100644 // Check if the fromWorld and toWorld are the same. diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index e75c188b5e..167a3baec7 100644 +index e75c188b5..167a3baec 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1110,8 +1110,19 @@ public class CraftEventFactory { diff --git a/Spigot-Server-Patches/0284-Refresh-player-inventory-when-cancelling-PlayerInter.patch b/Spigot-Server-Patches/0284-Refresh-player-inventory-when-cancelling-PlayerInter.patch index 10c005854..9757959a4 100644 --- a/Spigot-Server-Patches/0284-Refresh-player-inventory-when-cancelling-PlayerInter.patch +++ b/Spigot-Server-Patches/0284-Refresh-player-inventory-when-cancelling-PlayerInter.patch @@ -1,4 +1,4 @@ -From e90440b40f3966f973dd265572909ac1d14ba4b3 Mon Sep 17 00:00:00 2001 +From 18dc435476b4008046ffb520fcb7adaea73f993e Mon Sep 17 00:00:00 2001 From: Minecrell Date: Fri, 13 Jul 2018 14:54:43 +0200 Subject: [PATCH] Refresh player inventory when cancelling @@ -16,10 +16,10 @@ Refresh the player inventory when PlayerInteractEntityEvent is cancelled to avoid this problem. diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index b917e2ec76..abeec6b5c9 100644 +index adc57a374..9c1c1fbb4 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1930,6 +1930,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -1931,6 +1931,7 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } if (event.isCancelled()) { diff --git a/Spigot-Server-Patches/0389-Add-option-to-prevent-players-from-moving-into-unloa.patch b/Spigot-Server-Patches/0389-Add-option-to-prevent-players-from-moving-into-unloa.patch index f2989d46f..cbae891f1 100644 --- a/Spigot-Server-Patches/0389-Add-option-to-prevent-players-from-moving-into-unloa.patch +++ b/Spigot-Server-Patches/0389-Add-option-to-prevent-players-from-moving-into-unloa.patch @@ -1,4 +1,4 @@ -From f6e01d6360441f498d56175e148300b20c5f786f Mon Sep 17 00:00:00 2001 +From 716c9841e7095377b98c9f6d5116b31785b6c653 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Mon, 22 Oct 2018 17:34:10 +0200 Subject: [PATCH] Add option to prevent players from moving into unloaded @@ -6,7 +6,7 @@ Subject: [PATCH] Add option to prevent players from moving into unloaded diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 575281991c..f47a648af3 100644 +index 30985cdfc..2add466ac 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -574,4 +574,9 @@ public class PaperWorldConfig { @@ -20,7 +20,7 @@ index 575281991c..f47a648af3 100644 + } } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 0bcb9c1ab1..c1f47701cc 100644 +index 74975a138..853fc3149 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -341,6 +341,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { @@ -37,7 +37,7 @@ index 0bcb9c1ab1..c1f47701cc 100644 if (d10 - d9 > Math.max(100.0D, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && (!this.minecraftServer.H() || !this.minecraftServer.G().equals(entity.getDisplayName().getString()))) { // CraftBukkit end PlayerConnection.LOGGER.warn("{} (vehicle of {}) moved too quickly! {},{},{}", entity.getDisplayName().getString(), this.player.getDisplayName().getString(), d6, d7, d8); -@@ -848,9 +855,9 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -849,9 +856,9 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { double d1 = this.player.locY; double d2 = this.player.locZ; double d3 = this.player.locY; @@ -49,7 +49,7 @@ index 0bcb9c1ab1..c1f47701cc 100644 float f = packetplayinflying.a(this.player.yaw); float f1 = packetplayinflying.b(this.player.pitch); double d7 = d4 - this.l; -@@ -890,6 +897,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -891,6 +898,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { speed = player.abilities.walkSpeed * 10f; } diff --git a/Spigot-Server-Patches/0392-Don-t-sleep-after-profile-lookups-if-not-needed.patch b/Spigot-Server-Patches/0392-Don-t-sleep-after-profile-lookups-if-not-needed.patch index d29092eca..151e93545 100644 --- a/Spigot-Server-Patches/0392-Don-t-sleep-after-profile-lookups-if-not-needed.patch +++ b/Spigot-Server-Patches/0392-Don-t-sleep-after-profile-lookups-if-not-needed.patch @@ -1,4 +1,4 @@ -From 0ddf48a449d2c390bc4e5a8bdac9cd162a771214 Mon Sep 17 00:00:00 2001 +From 87abc431c2c2e1ec2e3c5d1f2922455c784771a3 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 23 Oct 2018 20:25:05 -0400 Subject: [PATCH] Don't sleep after profile lookups if not needed @@ -7,30 +7,30 @@ Mojang was sleeping even if we had no more requests to go after the current one finished, resulting in 100ms lost per profile lookup diff --git a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java -index 26a743722c..6ed3199c3d 100644 +index 71e48e87b..23f1447cf 100644 --- a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java +++ b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java @@ -42,6 +42,7 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository { - } - - final int page = 0; + } + + final int page = 0; + boolean hasRequested = false; // Paper - - for (final List request : Iterables.partition(criteria, ENTRIES_PER_PAGE)) { - int failCount = 0; + + for (final List request : Iterables.partition(criteria, ENTRIES_PER_PAGE)) { + int failCount = 0; @@ -67,6 +68,12 @@ public class YggdrasilGameProfileRepository implements GameProfileRepository { - LOGGER.debug("Couldn't find profile {}", name); - callback.onProfileLookupFailed(new GameProfile(null, name), new ProfileNotFoundException("Server did not find the requested profile")); - } + LOGGER.debug("Couldn't find profile {}", name); + callback.onProfileLookupFailed(new GameProfile(null, name), new ProfileNotFoundException("Server did not find the requested profile")); + } + // Paper start + if (!hasRequested) { + hasRequested = true; + continue; + } + // Paper end - - try { - Thread.sleep(DELAY_BETWEEN_PAGES); + + try { + Thread.sleep(DELAY_BETWEEN_PAGES); -- 2.20.1 diff --git a/Spigot-Server-Patches/0400-Don-t-allow-digging-into-unloaded-chunks.patch b/Spigot-Server-Patches/0400-Don-t-allow-digging-into-unloaded-chunks.patch index d7aef1fe9..b7d8015d1 100644 --- a/Spigot-Server-Patches/0400-Don-t-allow-digging-into-unloaded-chunks.patch +++ b/Spigot-Server-Patches/0400-Don-t-allow-digging-into-unloaded-chunks.patch @@ -1,14 +1,14 @@ -From a3abb8955d68007d99c6fef60c26c708a91a6485 Mon Sep 17 00:00:00 2001 +From 47f595ca18d5fb0a77009453183880356daebedf Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Sun, 11 Nov 2018 21:01:09 +0000 Subject: [PATCH] Don't allow digging into unloaded chunks diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index c1f47701cc..cb6d1deb88 100644 +index 853fc3149..93d2766d5 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1222,6 +1222,11 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -1223,6 +1223,11 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { case START_DESTROY_BLOCK: case ABORT_DESTROY_BLOCK: case STOP_DESTROY_BLOCK: diff --git a/Spigot-Server-Patches/0403-Book-Size-Limits.patch b/Spigot-Server-Patches/0403-Book-Size-Limits.patch index cdd4f0d35..2a0e092f3 100644 --- a/Spigot-Server-Patches/0403-Book-Size-Limits.patch +++ b/Spigot-Server-Patches/0403-Book-Size-Limits.patch @@ -1,4 +1,4 @@ -From 92e515581ac52b59c5c38945a382d061756c6f16 Mon Sep 17 00:00:00 2001 +From 40c15924cd11892e91ca103a60a577beb3e53437 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 16 Nov 2018 23:08:50 -0500 Subject: [PATCH] Book Size Limits @@ -6,7 +6,7 @@ Subject: [PATCH] Book Size Limits Puts some limits on the size of books. diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 52ce8f89e5..07f0b45295 100644 +index 52ce8f89e..07f0b4529 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -449,4 +449,11 @@ public class PaperConfig { @@ -22,7 +22,7 @@ index 52ce8f89e5..07f0b45295 100644 + } } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index cb6d1deb88..8d06b23eaf 100644 +index 93d2766d5..4987acbf5 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -12,6 +12,8 @@ import java.util.Collections; @@ -34,7 +34,7 @@ index cb6d1deb88..8d06b23eaf 100644 import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -@@ -747,6 +749,42 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -748,6 +750,42 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } public void a(PacketPlayInBEdit packetplayinbedit) { diff --git a/Spigot-Server-Patches/0413-Fix-PlayerEditBookEvent.patch b/Spigot-Server-Patches/0413-Fix-PlayerEditBookEvent.patch index d6017c678..3a8f7fce4 100644 --- a/Spigot-Server-Patches/0413-Fix-PlayerEditBookEvent.patch +++ b/Spigot-Server-Patches/0413-Fix-PlayerEditBookEvent.patch @@ -1,4 +1,4 @@ -From 8606eff98f1c567f87cebfbbfccd8019d0ff09bf Mon Sep 17 00:00:00 2001 +From 1f58488cda8caceda4a60a543157035e4cee37dc Mon Sep 17 00:00:00 2001 From: Michael Himing Date: Sun, 16 Dec 2018 13:07:33 +1100 Subject: [PATCH] Fix PlayerEditBookEvent @@ -10,10 +10,10 @@ it impossible to properly cancel the event or modify the book meta cancelled writing diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 8d06b23eaf..a8a6e236ea 100644 +index 4987acbf5..3bb285439 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -822,10 +822,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { +@@ -823,10 +823,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { this.player.setSlot(enumitemslot, CraftEventFactory.handleEditBookEvent(player, enumitemslot, itemstack1, itemstack2)); // CraftBukkit } else {