Ghaz-ranka

Untitled

May 19th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.84 KB | None | 0 0
  1. package com.esinia.server.invintories.anvils;
  2.  
  3. import java.awt.Color;
  4. import java.io.IOException;
  5. import java.nio.file.Path;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.Optional;
  9.  
  10. import org.spongepowered.api.Sponge;
  11. import org.spongepowered.api.data.DataView;
  12. import org.spongepowered.api.data.key.Keys;
  13. import org.spongepowered.api.entity.living.player.Player;
  14. import org.spongepowered.api.event.Listener;
  15. import org.spongepowered.api.event.filter.Getter;
  16. import org.spongepowered.api.event.filter.cause.Root;
  17. import org.spongepowered.api.event.item.inventory.ClickInventoryEvent;
  18. import org.spongepowered.api.item.ItemType;
  19. import org.spongepowered.api.item.ItemTypes;
  20. import org.spongepowered.api.item.inventory.Inventory;
  21. import org.spongepowered.api.item.inventory.ItemStack;
  22. import org.spongepowered.api.item.inventory.property.InventoryTitle;
  23. import org.spongepowered.api.text.Text;
  24. import org.spongepowered.api.text.format.TextColors;
  25.  
  26. import ninja.leaping.configurate.ConfigurationNode;
  27. import ninja.leaping.configurate.commented.CommentedConfigurationNode;
  28. import ninja.leaping.configurate.hocon.HoconConfigurationLoader;
  29. import ninja.leaping.configurate.loader.ConfigurationLoader;
  30.  
  31. //Class Name and main Method
  32. public class AnvilStoneInventory {
  33. //private ConfigurationNode root;
  34.  
  35. //Listener for following event
  36. @Listener
  37. //Inventory Click event. Filtering based on the root player. Setting inventory variable as event variable.
  38. public void onInventoryClick(ClickInventoryEvent event, @Root Player player, @Getter("getTargetInventory") Inventory inventory) {
  39.  
  40. //assert root.getNode("something", "something-else", "key").getString().equals("value");
  41.  
  42. //Checks if inventory name contains "Stone Working then proceeds"
  43. if (inventory.getName().get().contains("Stone Working")){
  44. //Sponge.getServer().getBroadcastChannel().send(Text.of("1"));
  45. //Cancels the event
  46. event.setCancelled(true);
  47. //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
  48. if (event.getCursorTransaction().getFinal().get(Keys.DISPLAY_NAME).get().equals(Text.of("Stone Shovel"))){
  49. //Optional itemtype variable called shovelHead is created with the ItemType based off of the itemID if the ItemType exists
  50. Optional<ItemType> shovelHead_ = Sponge.getGame().getRegistry().getType(ItemType.class, "forgecraft:wootzshovelhead");
  51. //ItemType variable shovelHead equals shovelHead_
  52. ItemType shovelHead = shovelHead_.get();
  53. //boolean set to false
  54. boolean hasShovelHead = false;
  55. //boolean set to false
  56. boolean hasToolHandle = false;
  57. //Inventory variable titled slot is loops for every item slot in the players inventory that matches the itemstack shovelHead
  58. for (Inventory slot : player.getInventory().query(shovelHead).slots()){
  59. //Itemstack Variable stack is set to the itemstack inside the Inventory variable slot
  60. ItemStack stack = slot.peek().get();
  61. //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
  62. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
  63. //boolean set to true
  64. hasShovelHead = true;
  65. //broadcasting to the server
  66. Sponge.getServer().getBroadcastChannel().send(Text.of("hasShovelHead: " + hasShovelHead));
  67. //breaks out of the loop
  68. break;
  69. }
  70. }
  71. //Inventory variable titled slot is looped for every item slot in the player inventory that matches ItemType.Stick
  72. for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()){
  73. //Itemstack variable is set to the itemstack inside the Inventory variable slot
  74. ItemStack stack = slot.peek().get();
  75. //Checks if itemstack has the displayname "Tool Handle"
  76. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
  77. //boolean set to true
  78. hasToolHandle = true;
  79. //broadcasting to server
  80. Sponge.getServer().getBroadcastChannel().send(Text.of("hasToolHandle: " + hasToolHandle));
  81. //breaks loop
  82. break;
  83. }
  84. }
  85. //if both booleans are true it proceeds
  86. if (hasShovelHead && hasToolHandle){
  87. //broadcast to server
  88. Sponge.getServer().getBroadcastChannel().send(Text.of("hasShovelHead and hasToolHandle"));
  89.  
  90. //integer variable titled quantity equals 0
  91. int quantity = 0;
  92. //Inventory variable titled slot is looped for every item slot in the player inventory that matches itemtype variable shovelHead
  93. for (Inventory slot : player.getInventory().query(shovelHead).slots()) {
  94. //Itemstack variable set to itemstack inside inventory variable slot
  95. ItemStack stack = slot.peek().get();
  96. //Display name checking again
  97. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
  98. //adds to quantity the size of stack (This happens each loop until looping is complete)
  99. quantity += stack.getQuantity();
  100. }
  101. }
  102. Sponge.getServer().getBroadcastChannel().send(Text.of("quantity: " + quantity));
  103. // integer variable titled quantity2 equals 0
  104. int quantity2 = 0;
  105. //Inventory variable titled slot is looped for every item slot in the player inventory that matches itemtype.Stick
  106. for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()) {
  107. //Itemstack variable stack is set to itemstack inside inventory variable slot
  108. ItemStack stack = slot.peek().get();
  109. //checking for display name again
  110. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
  111. //adds to quantity2 the size of stack (This happens each loop until looping is complete)
  112. quantity2 += stack.getQuantity();
  113. }
  114. }
  115. //broadcasting to server
  116. Sponge.getServer().getBroadcastChannel().send(Text.of("quantity2: " + quantity2));
  117. //if quantity is less than 1 it proceeds
  118. if (quantity < 1) {
  119. //sends player a message
  120. player.sendMessage(Text.of(""));
  121. //task complete
  122. return;
  123. }
  124. //if quantity2 is less than 1 it proceeds
  125. if (quantity2 < 1) {
  126. //sends player a message
  127. player.sendMessage(Text.of(""));
  128. //task complete
  129. return;
  130. }
  131. //if both quantity and quantity2 are larger than 1 it proceeds
  132. if (quantity >= 1 && quantity2 >= 1) {
  133. //Looping inventory slots looking for slots with itemtype shovelHead
  134. for (Inventory slot : player.getInventory().query(shovelHead).slots()) {
  135. //Taking the itemstack out of the slot
  136. ItemStack stack = slot.peek().get();
  137. //Checking the itemstack for display name
  138. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
  139. //If the stack quantity is greater or equal to 1 it proceeds
  140. if (stack.getQuantity() >= 1) {
  141. //pulling 1 of the itemstack from the player
  142. slot.poll(1);
  143. //breaking out of the loop
  144. break;
  145. }
  146. }
  147. }
  148. //looping inventory slots looking for slots with ItemType Stick
  149. for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()) {
  150. //Taking the itemstack out of the slot
  151. ItemStack stack = slot.peek().get();
  152. //Checking the itemstack for displayname
  153. if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
  154. //Checking to see if stack size is greater than or equal to 1
  155. if (stack.getQuantity() >= 1) {
  156. //pulling 1 of the items from itemstack out of players inventory
  157. slot.poll(1);
  158. //beaking loop
  159. break;
  160. }
  161. }
  162. }
  163. //Creating Optional Itemtype variable titled Stoneshovel_ if the specified itemtype based off the the itemID exists
  164. Optional<ItemType> Stoneshovel_ = Sponge.getGame().getRegistry().getType(ItemType.class, "forgecraft:wootzshovel");
  165. //creating itemtype based on the optional itemtype
  166. ItemType StoneShovelType = Stoneshovel_.get();
  167. //creating itemstack based off of StoneShovelType with the quantiy 1
  168. ItemStack stoneshovel = ItemStack.of(StoneShovelType, 1);
  169. //Giving itemstack a displayname
  170. stoneshovel.offer(Keys.DISPLAY_NAME, Text.of("Stone Shovel"));
  171. //List<Text> itemShovelLore = new ArrayList<Text>();
  172. //itemShovelLore.add(Text.of(TextColors.GOLD, "Crafting Requirements:"));
  173. //itemShovelLore.add(Text.of(TextColors.GOLD, "1 Flat Stone"));
  174. //itemShovelLore.add(Text.of(TextColors.GOLD, "1 Tool Handle"));
  175. //stoneshovel.offer(Keys.ITEM_LORE , itemShovelLore);
  176. //giving player the itemstack stoneshovel
  177. player.getInventory().offer(stoneshovel);
  178.  
  179. }
  180. }
  181. }
  182. }
  183. }
  184. }
Add Comment
Please, Sign In to add comment