broken-arrow

Untitled

Oct 22nd, 2021 (edited)
392
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     @Override
  2.     public boolean onClickingInsideGui(ContainerRegistryAPI registry, GuiUpgradePages upgradePages, Location location, InventoryClickEvent event, Player player) {
  3.         Player clickedPlayer = (Player) event.getWhoClicked();
  4.         ItemStack cursor = event.getCursor() == null ? new ItemStack(Material.AIR) : event.getCursor();
  5.         ItemStack clickedItem = event.getCurrentItem() == null ? new ItemStack(Material.AIR) : event.getCurrentItem();
  6.         //System.out.println(cursor + "  " + clickedItem);
  7.  
  8.         if (event.getRawSlot() != 2 && event.getRawSlot() < 5) {
  9.             event.setCancelled(true);
  10.             return false;
  11.         }
  12.         if (clickedItem.getType() != Material.AIR && event.getRawSlot() == 2 && !canPlaceItemInsideContainer(clickedItem)) {
  13.             event.setCancelled(true);
  14.             return false;
  15.  
  16.         }
  17.         if (clickedItem.getType() != Material.AIR && event.getClick().isShiftClick()/*.name().contains("SHIFT")*/ && !canPlaceItemInsideContainer(clickedItem)) {
  18.             event.setCancelled(true);
  19.             return false;
  20.         }
  21.  
  22.         ItemStack storageItem;
  23.         if (registry.getcontents(location).length > 0)
  24.             storageItem = registry.getcontents(location)[0];
  25.         else
  26.             storageItem = new ItemStack(Material.AIR);
  27.  
  28.         if (event.getRawSlot() == 2) {
  29.             if (cursor.getType() != Material.AIR) {
  30.                 if (!canPlaceItemInsideContainer(cursor)) {
  31.                     event.setCancelled(true);
  32.                     return false;
  33.                 }
  34.                 BigInteger currentAmount = getAmount();
  35.                 BigInteger newAmount = currentAmount.add(BigInteger.valueOf(cursor.getAmount()));
  36.                 BigInteger maxAmount = getMaxAmount();
  37.                 int toAdd = cursor.getAmount();
  38.  
  39.                 System.out.println(" currentAmount.intValue() " + currentAmount + " BigInteger " + (maxAmount.compareTo(BigInteger.ZERO)) + " BigInteger maxAmount " + (newAmount.compareTo(maxAmount) > 0));
  40.  
  41.                 if (maxAmount.compareTo(BigInteger.ZERO) > 0 && newAmount.compareTo(maxAmount) > 0) {
  42.                     toAdd = maxAmount.subtract(currentAmount).intValue();
  43.                 }
  44.  
  45.  
  46.                 System.out.println(" toAdd " + toAdd + "" + (toAdd != cursor.getAmount()));
  47.                 if (toAdd != cursor.getAmount()) {
  48.                     setAmount(maxAmount);
  49.                     ItemStack cursorItem = storageItem.clone();
  50.                     cursorItem.setAmount(toAdd);
  51.                     event.setCancelled(true);
  52.                 }
  53.             } else {
  54.                 ItemStack itemToAdd = storageItem.clone();
  55.                 if (itemToAdd.getType() == Material.AIR)
  56.                     return false;
  57.  
  58.                 int newAmount = getAmount().min(BigInteger.valueOf(Math.min(itemToAdd.getMaxStackSize(), maxStackSize))).intValue();
  59.                 itemToAdd.setAmount(newAmount);
  60.  
  61.                 if (event.getClick().name().contains("SHIFT")) {
  62.                     Map<Integer, ItemStack> leftOvers = clickedPlayer.getInventory().addItem(itemToAdd);
  63.                     if (!leftOvers.isEmpty()) {
  64.                         ItemStack leftOver = leftOvers.get(0);
  65.                         if (leftOver.getAmount() == newAmount) {
  66.                             return false;
  67.                         } else {
  68.                             newAmount -= leftOver.getAmount();
  69.                         }
  70.                     }
  71.                 } else {
  72.                     //Todo fix runable task.
  73.                     Bukkit.getScheduler().runTaskLater(ChestStorage.getInstance(), () -> clickedPlayer.setItemOnCursor(itemToAdd), 0L);
  74.                     //Common.runLater(1, () -> clickedPlayer.setItemOnCursor(itemToAdd));
  75.                 }
  76.                 //Common.runLater(1, () -> clickedPlayer.setItemOnCursor(itemToAdd));
  77.                 System.out.println(" new amount fjahygfeakjiuygfe = " + newAmount);
  78.                 System.out.println(" set amount fjahygfeakjiuygfe = " + getAmount().subtract(BigInteger.valueOf(newAmount)));
  79.  
  80.                 setAmount(getAmount().subtract(BigInteger.valueOf(newAmount)));
  81.                 ItemStack item = itemToAdd.clone();
  82.                 item.setAmount(newAmount);
  83.                 //setItemsAmount(item);
  84.                 //registry.setAmontOfItems(location, this.amount);
  85.                 registry.setAmontOfItems(location, this.amount);
  86.                 if (registry.getAmontOfItems(this.location).equals(BigInteger.valueOf(0))) {
  87.                     registry.setcontents(this.location);
  88.                 }
  89.                 setItemPlaceholderEmptyChest(registry);
  90.  
  91.                 Common.runLaterAsync(0, () -> updateInventoryTitle(this.amount, cursor));
  92.             }
  93.         }
  94.  
  95.         return true;
  96.     }
  97.  
RAW Paste Data