Advertisement
Guest User

Untitled

a guest
Jun 9th, 2017
658
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. package com.desle.bookmanager;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7.  
  8. import org.bukkit.Material;
  9. import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer;
  10. import org.bukkit.entity.Player;
  11. import org.bukkit.inventory.ItemStack;
  12. import org.bukkit.inventory.meta.BookMeta;
  13.  
  14. import io.netty.buffer.ByteBuf;
  15. import io.netty.buffer.Unpooled;
  16. import net.minecraft.server.v1_11_R1.IChatBaseComponent;
  17. import net.minecraft.server.v1_11_R1.PacketDataSerializer;
  18. import net.minecraft.server.v1_11_R1.PacketPlayOutCustomPayload;
  19.  
  20. public class BookManager {
  21.  
  22. private static Map<Player, BookManager> list = new HashMap<Player, BookManager>();
  23.  
  24. public static BookManager get(Player player) {
  25. if (BookManager.list.get(player) == null)
  26. return new BookManager(player);
  27.  
  28. return BookManager.list.get(player);
  29. }
  30.  
  31. private Player player;
  32. private ItemStack book;
  33.  
  34. public BookManager(Player player) {
  35. this.player = player;
  36.  
  37. ItemStack book = new ItemStack(Material.WRITTEN_BOOK);
  38.  
  39. this.book = book;
  40.  
  41. list.put(player, this);
  42. }
  43.  
  44. public ItemStack getBook() {
  45. return this.book;
  46. }
  47.  
  48. public void openBook() {
  49. int slot = this.player.getInventory().getHeldItemSlot();
  50. ItemStack item = this.player.getInventory().getItem(slot);
  51.  
  52. this.player.getInventory().setItem(slot, getBook());
  53.  
  54. ByteBuf buf = Unpooled.buffer(256);
  55. buf.setByte(0, (byte)0);
  56. buf.writerIndex(1);
  57.  
  58. PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload("MC|BOpen", new PacketDataSerializer(buf));
  59. ((CraftPlayer) this.player).getHandle().playerConnection.sendPacket(packet);
  60.  
  61. this.player.getInventory().setItem(slot, item);
  62. }
  63.  
  64. public void setPages(List<String> pages) {
  65. BookMeta bookmeta = (BookMeta) this.book.getItemMeta();
  66. bookmeta.setPages(pages);
  67.  
  68. this.book.setItemMeta(bookmeta);
  69. }
  70.  
  71. @SuppressWarnings("unchecked")
  72. public void setJsonPages(List<IChatBaseComponent> pages) {
  73. BookMeta bookmeta = (BookMeta) this.book.getItemMeta();
  74.  
  75. try {
  76. Field pagesField = Class.forName("org.bukkit.craftbukkit.v1_11_R1.inventory.CraftMetaBook").getDeclaredField("pages");
  77. pagesField.setAccessible(true);
  78.  
  79. List<IChatBaseComponent> pagelist = (List<IChatBaseComponent>) pagesField.get(bookmeta);
  80.  
  81. pagelist.clear();
  82. pagelist.addAll(pages);
  83.  
  84. } catch (Exception e) {
  85. player.sendMessage(e.getMessage());
  86. }
  87.  
  88. this.book.setItemMeta(bookmeta);
  89. }
  90.  
  91. public void setBook(ItemStack book) {
  92. this.book = book;
  93. }
  94.  
  95. public void destroy() {
  96. list.remove(this.player);
  97. }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement