Ghaz-ranka

Untitled

May 23rd, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.85 KB | None | 0 0
  1. public class AnvilStoneInventory {
  2. private Esinia plugin;
  3. public AnvilStoneInventory(Esinia plugin){
  4. this.plugin = plugin;
  5. }
  6.  
  7.  
  8. Map<UUID, Task> tasks = new HashMap<>();
  9. Map<UUID, Scoreboard> boards = new HashMap<>();
  10.  
  11. //Listener for following event
  12. @Listener
  13. //Inventory Click event. Filtering based on the root player. Setting inventory variable as event variable.
  14. public void onInventoryClick(ClickInventoryEvent event, @Root Player player, @Getter("getTargetInventory") Inventory inventory) {
  15. ConfigurationNode nodeStone = plugin.root.getNode("Stoneworking", player.getUniqueId().toString());
  16. Integer level = nodeStone.getNode("Level").getInt();
  17. UUID id = player.getUniqueId();
  18.  
  19. //Checks if inventory name contains "Stone Working then proceeds"
  20. if (inventory.getName().get().contains("Stone Working")){
  21. //Sponge.getServer().getBroadcastChannel().send(Text.of("1"));
  22. //Cancels the event
  23. event.setCancelled(true);
  24. //Gets result of the cursor clicking on an item. Gets display name of the items. Checks if that display is "Stone Shovel" then proceeds if true
  25. if (event.getCursorTransaction().getFinal().get(Keys.DISPLAY_NAME).get().equals(Text.of("Stone Shovel"))){
  26. //Optional itemtype variable called shovelHead is created with the ItemType based off of the itemID if the ItemType exists
  27. Optional<ItemType> shovelHead_ = Sponge.getGame().getRegistry().getType(ItemType.class, "forgecraft:wootzshovelhead");
  28. //ItemType variable shovelHead equals shovelHead_
  29. ItemType shovelHead = shovelHead_.get();
  30. //boolean set to false
  31. boolean hasShovelHead = false;
  32. //boolean set to false
  33. boolean hasToolHandle = false;
  34. //Inventory variable titled slot is loops for every item slot in the players inventory that matches the itemstack shovelHead
  35. for (Inventory slot : player.getInventory().query(shovelHead).slots()){
  36. //Itemstack Variable stack is set to the itemstack inside the Inventory variable slot
  37. ItemStack stack = slot.peek().get();
  38. //Checks if the itemstack has display name "Stone Shovelhead" and if the item doesnt have an itemname it uses the text "EMPTY" instead to check
  39. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
  40. //boolean set to true
  41. hasShovelHead = true;
  42. //broadcasting to the server
  43. Sponge.getServer().getBroadcastChannel().send(Text.of("hasShovelHead: " + hasShovelHead));
  44. //breaks out of the loop
  45. break;
  46. }
  47. }
  48. //Inventory variable titled slot is looped for every item slot in the player inventory that matches ItemType.Stick
  49. for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()){
  50. //Itemstack variable is set to the itemstack inside the Inventory variable slot
  51. ItemStack stack = slot.peek().get();
  52. //Checks if itemstack has the displayname "Tool Handle"
  53. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
  54. //boolean set to true
  55. hasToolHandle = true;
  56. //broadcasting to server
  57. Sponge.getServer().getBroadcastChannel().send(Text.of("hasToolHandle: " + hasToolHandle));
  58. //breaks loop
  59. break;
  60. }
  61. }
  62. //if both booleans are true it proceeds
  63. if (hasShovelHead && hasToolHandle){
  64. //broadcast to server
  65. Sponge.getServer().getBroadcastChannel().send(Text.of("hasShovelHead and hasToolHandle"));
  66.  
  67. //integer variable titled quantity equals 0
  68. int quantity = 0;
  69. //Inventory variable titled slot is looped for every item slot in the player inventory that matches itemtype variable shovelHead
  70. for (Inventory slot : player.getInventory().query(shovelHead).slots()) {
  71. //Itemstack variable set to itemstack inside inventory variable slot
  72. ItemStack stack = slot.peek().get();
  73. //Display name checking again
  74. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
  75. //adds to quantity the size of stack (This happens each loop until looping is complete)
  76. quantity += stack.getQuantity();
  77. }
  78. }
  79. Sponge.getServer().getBroadcastChannel().send(Text.of("quantity: " + quantity));
  80. // integer variable titled quantity2 equals 0
  81. int quantity2 = 0;
  82. //Inventory variable titled slot is looped for every item slot in the player inventory that matches itemtype.Stick
  83. for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()) {
  84. //Itemstack variable stack is set to itemstack inside inventory variable slot
  85. ItemStack stack = slot.peek().get();
  86. //checking for display name again
  87. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
  88. //adds to quantity2 the size of stack (This happens each loop until looping is complete)
  89. quantity2 += stack.getQuantity();
  90. }
  91. }
  92. //broadcasting to server
  93. Sponge.getServer().getBroadcastChannel().send(Text.of("quantity2: " + quantity2));
  94. //if quantity is less than 1 it proceeds
  95. if (quantity < 1) {
  96. //sends player a message
  97. player.sendMessage(Text.of(""));
  98. //task complete
  99. return;
  100. }
  101. //if quantity2 is less than 1 it proceeds
  102. if (quantity2 < 1) {
  103. //sends player a message
  104. player.sendMessage(Text.of(""));
  105. //task complete
  106. return;
  107. }
  108. //if both quantity and quantity2 are larger than 1 it proceeds
  109. if (quantity >= 1 && quantity2 >= 1) {
  110. Objective obj = Objective.builder()
  111. .criterion(Criteria.DUMMY)
  112. .name("timer")
  113. .displayName(Text.of(TextColors.DARK_BLUE, "[ ]"))
  114. .build();
  115. Scoreboard board = Scoreboard.builder()
  116. .objectives(ImmutableList.of(obj))
  117. .build();
  118. obj.getOrCreateScore(Text.of(player.getName())).setScore(0);
  119. player.setScoreboard(board);
  120. board.updateDisplaySlot(obj, DisplaySlots.SIDEBAR);
  121. boards.put(player.getUniqueId(), board);
  122. AtomicInteger integer = new AtomicInteger(10);
  123. tasks.put(id, Task.builder()
  124. .delay(1, TimeUnit.SECONDS)
  125. .interval(1, TimeUnit.SECONDS)
  126. .execute(() -> {
  127.  
  128. player.setScoreboard(board);
  129. /// Duration dur = Duration.of(integer.get(), ChronoUnit.SECONDS);
  130. char[] arr = new char[10];
  131. Arrays.fill(arr, 0, 11 - integer.decrementAndGet(), '|');
  132. obj.setDisplayName(Text.of(TextColors.DARK_BLUE, "[", String.valueOf(arr), "]"));
  133.  
  134. if (integer.get() == 0) {
  135.  
  136. obj.setDisplayName(Text.of(TextColors.DARK_BLUE, "[||||||||||]"));
  137. for (Inventory slot : player.getInventory().query(shovelHead).slots()) {
  138. ItemStack stack = slot.peek().get();
  139. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
  140. if (stack.getQuantity() >= 1) {
  141. slot.poll(1);
  142. break;
  143. }
  144. }
  145. }
  146.  
  147. for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()) {
  148. ItemStack stack = slot.peek().get();
  149. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
  150. if (stack.getQuantity() >= 1) {
  151. slot.poll(1);
  152. break;
  153. }
  154. }
  155. }
  156.  
  157. Optional<ItemType> Stoneshovel_ = Sponge.getGame().getRegistry().getType(ItemType.class, "forgecraft:wootzshovel");
  158. ItemType StoneShovelType = Stoneshovel_.get();
  159. ItemStack stoneshovel = ItemStack.of(StoneShovelType, 1);
  160. stoneshovel.offer(Keys.DISPLAY_NAME, Text.of("Stone Shovel"));
  161. //List<Text> itemShovelLore = new ArrayList<Text>();
  162. //itemShovelLore.add(Text.of(TextColors.GOLD, "Crafting Requirements:"));
  163. //itemShovelLore.add(Text.of(TextColors.GOLD, "1 Flat Stone"));
  164. //itemShovelLore.add(Text.of(TextColors.GOLD, "1 Tool Handle"));
  165. //stoneshovel.offer(Keys.ITEM_LORE, itemShovelLore);
  166. //giving player the itemstack stoneshovel
  167. player.getInventory().offer(stoneshovel);
  168. //game.getServer().getPlayer(id).ifPresent(pl -> {
  169. //pl.setLocationSafely(pl.getWorld().getSpawnLocation());
  170. //});
  171. tasks.remove(id).cancel();
  172. boards.remove(id);
  173. }
  174. })
  175. .submit(this));
  176.  
  177. }
  178. }
  179. }
  180. }
  181. }
  182. }
Advertisement
Add Comment
Please, Sign In to add comment