broken-arrow

Untitled

Jun 3rd, 2021 (edited)
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.82 KB | None | 0 0
  1.     @EventHandler
  2.     public void onClick(InventoryCloseEvent e) {
  3.         Map<String, Integer> map = new HashMap<>();
  4.         List<String> items = new ArrayList<>();
  5.         items.add("REPEATER");
  6.         Inventory clickedInventory = e.getView().getTopInventory();
  7.         Player player = (Player) e.getPlayer();
  8.         InventoryHolder inventoryHolder = InventoryHolder.getInstance();
  9.         Location location = SerializeUtil.deserializeLocation(CompMetadata.getMetadata(player, CHEST_METADATA));
  10.         if (!inventoryHolder.getInventory(location).contains(clickedInventory)) {
  11.             String matrial;
  12.             int number;
  13.             String item;
  14.             String stringtes;
  15.             Map<List<Integer>, Integer> slots = countItems(e.getInventory());
  16.  
  17.             for (Crafting string : Crafting.values()) {
  18.                 stringtes = string.toString();
  19.  
  20.                 for (String itemas : items) {
  21.                     item = itemas;
  22.                     for (Map.Entry<List<Integer>, Integer> entry : slots.entrySet()) {
  23.                         for (int page : entry.getKey()) {
  24.                             int amount = 0;
  25.                             ItemStack itemStack1 = e.getInventory().getItem(page);
  26.                             if (item.equals(String.valueOf(Crafting.valueOf(stringtes))) && itemStack1 != null) {
  27.  
  28.                                 if (itemStack1.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialName())) {
  29.                                     amount += itemStack1.getAmount();
  30.                                     map.put(itemStack1.getType().toString(), amount);
  31.                                 } else if (itemStack1.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames1())) {
  32.                                     amount += itemStack1.getAmount();
  33.                                     map.put(itemStack1.getType().toString(), amount);
  34.  
  35.                                 } else if (itemStack1.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames2())) {
  36.                                     amount += itemStack1.getAmount();
  37.                                     map.put(itemStack1.getType().toString(), amount);
  38.  
  39.                                 }
  40.                             }
  41.  
  42.                         }
  43.                     }
  44.                 }
  45.  
  46.                 for (Map.Entry<String, Integer> entrys : map.entrySet()) {
  47.                     matrial = entrys.getKey();
  48.                     number = entrys.getValue();
  49.                     for (String itemse : items) {
  50.                         System.out.println("test test " + itemse + " " + matrial + " " + number + " " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
  51.  
  52.                         if (number >= Crafting.valueOf(stringtes).getAmontNeededCrafting() && map.get(Crafting.valueOf(stringtes).getmatrialName()) != null) {
  53.                             System.out.println(Crafting.valueOf(stringtes).getmatrialNames2() + Crafting.valueOf(stringtes).getAmontNeededCrafting());
  54.                             if (Objects.equals(matrial, Crafting.valueOf(stringtes).getmatrialName()) && Crafting.valueOf(stringtes).getmatrialNames1() == null && Crafting.valueOf(stringtes).getmatrialNames2() == null) {
  55.  
  56.                                 if (itemse.equals(String.valueOf(Crafting.valueOf(stringtes)))) {
  57.                                     System.out.println("crafting values " + Crafting.valueOf(stringtes).getmatrialName() + " " + Crafting.valueOf(stringtes).getAmontNeededCrafting() + " " + Crafting.valueOf(stringtes).getNumberOutput());
  58.                                     e.getInventory().remove(Material.valueOf(Crafting.valueOf(stringtes).getmatrialName()));
  59.                                     Material getmatrialName = Material.valueOf(Crafting.valueOf(stringtes).name());
  60.                                     System.out.println("matrial " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
  61.                                     e.getInventory().addItem(new ItemStack(getmatrialName, Crafting.valueOf(stringtes).getNumberOutput() * map.get(Crafting.valueOf(stringtes).getmatrialName())));
  62.                                     return;
  63.                                 }
  64.                             } else if ((Objects.equals(matrial, Crafting.valueOf(stringtes).getmatrialName()) || Crafting.valueOf(stringtes).getmatrialName() != null) && Crafting.valueOf(stringtes).getmatrialNames1() != null && Crafting.valueOf(stringtes).getmatrialNames2() != null) {
  65.                                 //System.out.println("matrial of stone " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
  66.                                 if (itemse.equals(String.valueOf(Crafting.valueOf(stringtes))) &&
  67.                                         map.get(Crafting.valueOf(stringtes).getmatrialName()) >= Crafting.valueOf(stringtes).getAmontNeededCrafting() &&
  68.                                         map.get(Crafting.valueOf(stringtes).getmatrialNames1()) >= Crafting.valueOf(stringtes).getAmontNeededCrafting1() &&
  69.                                         map.get(Crafting.valueOf(stringtes).getmatrialNames2()) >= Crafting.valueOf(stringtes).getAmontNeededCrafting2()) {
  70.                                     for (Map.Entry<List<Integer>, Integer> entryes : slots.entrySet()) {
  71.                                         for (int page : entryes.getKey()) {
  72.                                             ItemStack itemStack = e.getInventory().getItem(page);
  73.                                             System.out.println(itemStack);
  74.                                             if (itemStack.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialName()))
  75.                                                 itemStack.setAmount(itemStack.getAmount() - Crafting.valueOf(stringtes).getAmontNeededCrafting());
  76.                                             else if (itemStack.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames1()))
  77.                                                 itemStack.setAmount(itemStack.getAmount() - Crafting.valueOf(stringtes).getAmontNeededCrafting1());
  78.                                             else if (itemStack.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames2()))
  79.                                                 itemStack.setAmount(itemStack.getAmount() - Crafting.valueOf(stringtes).getAmontNeededCrafting2());
  80.                                         }
  81.                                     }
  82.                                     Material getmatrialName = Material.valueOf(Crafting.valueOf(stringtes).name());
  83.                                     System.out.println("matrial number " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
  84.                                     e.getInventory().addItem(new ItemStack(getmatrialName, Crafting.valueOf(stringtes).getNumberOutput()));
  85.  
  86.                                 }
  87.                             }
  88.                         }
  89.                     }
  90.                 }
  91.             }
  92.         }
  93.     }
  94.  
  95.  
  96.     public Map<List<Integer>, Integer> countItems(Inventory inventory) {
  97.         Map<List<Integer>, Integer> itemStackMap = new HashMap<>();
  98.         List<Integer> slots = new ArrayList<>();
  99.         int amount = 0;
  100.  
  101.         for (int i = 0; i < inventory.getSize(); i++) {
  102.             ItemStack itemStack = inventory.getContents()[i];
  103.             if (itemStack != null) {
  104.                 amount += itemStack.getAmount();
  105.                 slots.add(i);
  106.             }
  107.         }
  108.         itemStackMap.put(slots, amount);
  109.  
  110.         return itemStackMap;
  111.     }
  112.  
Add Comment
Please, Sign In to add comment