From 37a786ec29636754df0e28c6453f3852506f23bf Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Thu, 6 Jun 2019 01:08:11 -0700 Subject: [PATCH] Add Player#openBook(ItemStack) method This PR adds the openBook(ItemStack) method to Player that allows opening a Material.WRITTEN_BOOK for a player on demand. By: simpleauthority --- .../org/bukkit/craftbukkit/entity/CraftPlayer.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 4c5c78dd5b..8b5b22e923 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -108,6 +108,7 @@ import org.bukkit.event.player.PlayerRegisterChannelEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerUnregisterChannelEvent; import org.bukkit.inventory.InventoryView.Property; +import org.bukkit.inventory.ItemStack; import org.bukkit.map.MapCursor; import org.bukkit.map.MapView; import org.bukkit.metadata.MetadataValue; @@ -1638,4 +1639,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { getHandle().server.getCommandDispatcher().a(getHandle()); } + + @Override + public void openBook(ItemStack book) { + Validate.isTrue(book != null, "book == null"); + Validate.isTrue(book.getType() == Material.WRITTEN_BOOK, "Book must be Material.WRITTEN_BOOK"); + + ItemStack hand = getInventory().getItemInMainHand(); + getInventory().setItemInMainHand(book); + getHandle().a(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(book), net.minecraft.server.EnumHand.MAIN_HAND); // PAIL rename openBook + getInventory().setItemInMainHand(hand); + } }