Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.06 KB | None | 0 0
  1. public static String itemArrayToBase(ItemStack[] items) throws IllegalStateException {
  2. try {
  3. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  4. BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);
  5.  
  6. dataOutput.writeInt(items.length);
  7.  
  8. for (int i = 0; i < items.length; i++) {
  9. dataOutput.writeObject(items[i]);
  10. }
  11.  
  12. dataOutput.close();
  13. return Base64Coder.encodeLines(outputStream.toByteArray());
  14. } catch (Exception e) {
  15. throw new IllegalStateException("Unable to save item stacks.", e);
  16. }
  17. }
  18.  
  19. public static ItemStack[] itemStackArrayFromBase64(String data) throws IOException {
  20. try {
  21. ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
  22. BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
  23. ItemStack[] items = new ItemStack[dataInput.readInt()];
  24.  
  25. for (int i = 0; i < items.length; i++) {
  26. items[i] = (ItemStack) dataInput.readObject();
  27. }
  28.  
  29. dataInput.close();
  30. return items;
  31. } catch (ClassNotFoundException e) {
  32. throw new IOException("Unable to decode class type.", e);
  33. }
  34. }
  35.  
  36. // itemcomplet
  37. public static String itemArrayToBaseIt(List<ItemComplet> items) throws IllegalStateException {
  38. try {
  39. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  40. DataOutputStream dataOutput = new DataOutputStream(outputStream);
  41. ItemStack[] itemstacks = new ItemStack[items.size()];
  42. Integer[] slots = new Integer[items.size()];
  43. for (int i = 0; i < items.size(); i++) {
  44. itemstacks[i] = items.get(i).getItemstack();
  45. slots[i] = items.get(i).getSlot();
  46. }
  47. dataOutput.writeUTF(itemArrayToBase(itemstacks));
  48. StringBuilder sb = new StringBuilder();
  49. for (int slot : slots) {
  50. sb.append(slot + ";");
  51. }
  52. dataOutput.writeUTF(sb.toString());
  53. dataOutput.close();
  54. return Base64Coder.encodeLines(outputStream.toByteArray());
  55. } catch (Exception e) {
  56. throw new IllegalStateException("Unable to save item stacks.", e);
  57. }
  58. }
  59.  
  60. public static ItemComplet[] itemStackArrayFromBase64ItemComplet(String data) throws IOException {
  61. ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
  62. DataInputStream dataInput = new DataInputStream(inputStream);
  63. String decode = dataInput.readUTF();
  64. String s = dataInput.readUTF();
  65. String[] slotstableau = s.split(";");
  66. List<ItemStack> items = Arrays.asList(itemStackArrayFromBase64(decode));
  67. ItemComplet[] i = new ItemComplet[items.size()];
  68. for (int k = 0; k < items.size(); k++) {
  69. ItemComplet itemComplet = new ItemComplet();
  70. itemComplet.setItemstack(items.get(k));
  71. itemComplet.setSlot(Integer.parseInt(slotstableau[k]));
  72. i[k] = itemComplet;
  73. }
  74.  
  75. dataInput.close();
  76. return i;
  77. }
  78.  
  79. public static String getInventorySerialiserPlayer(PlayerInventory playerInventory) {
  80. List<ItemComplet> contentItem = new ArrayList<>();
  81. int slot = 0;
  82. for (ItemStack itemStack : playerInventory) {
  83. if (itemStack != null && itemStack.getType() != Material.AIR) {
  84. ItemComplet itemComplet = new ItemComplet();
  85. itemComplet.setItemstack(itemStack);
  86. itemComplet.setSlot(slot);
  87. contentItem.add(itemComplet);
  88. }
  89. slot++;
  90. }
  91. return InventorySerializer.itemArrayToBaseIt(contentItem);
  92. }
  93.  
  94. public static String getInventorySerialiserPlayerArmor(List<ItemStack> armor) {
  95. List<ItemComplet> contentItem = new ArrayList<>();
  96. int slot = 0;
  97. for (ItemStack itemStack : armor) {
  98. if (itemStack != null && itemStack.getType() != Material.AIR) {
  99. ItemComplet itemComplet = new ItemComplet();
  100. itemComplet.setItemstack(itemStack);
  101. itemComplet.setSlot(slot);
  102. contentItem.add(itemComplet);
  103. }
  104. slot++;
  105. }
  106. return InventorySerializer.itemArrayToBaseIt(contentItem);
  107. }
  108.  
  109. public static String getInventorySerialiser(Inventory inventory) {
  110. ItemStack[] contents = inventory.getContents();
  111. List<ItemComplet> contentItem = new ArrayList<>();
  112. int slot = 0;
  113. for (int k = 0; k < contents.length; k++) {
  114. ItemStack itemStack = contents[k];
  115. if (itemStack == null || itemStack.getType() == null || itemStack.getType() == Material.AIR) continue;
  116. ItemComplet itemComplet = new ItemComplet();
  117. itemComplet.setItemstack(itemStack);
  118. itemComplet.setSlot(slot++);
  119. contentItem.add(itemComplet);
  120. }
  121. return InventorySerializer.itemArrayToBaseIt(contentItem);
  122. }
  123.  
  124. public static Inventory getInventoryBySerialiser(String serialisedinventory, Integer size) {
  125. ItemComplet[] contents = null;
  126. try {
  127. contents = InventorySerializer.itemStackArrayFromBase64ItemComplet(serialisedinventory);
  128. } catch (IOException e) {
  129. e.printStackTrace();
  130. }
  131. Inventory inventory;
  132. String inventoryname = SkyCore.getInstance().getConfigLoader().getEnderchest_name().replace("%size%", "" + size);
  133. if (contents != null) {
  134. inventory = Bukkit.createInventory(null, 9 * size, inventoryname);
  135. for (ItemComplet item : contents) {
  136. inventory.setItem(item.getSlot(), item.getItemstack());
  137. }
  138. } else inventory = Bukkit.createInventory(null, 9 * size, inventoryname);
  139. return inventory;
  140. }
  141.  
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement