Advertisement
broken-arrow

Untitled

Sep 26th, 2021
1,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.94 KB | None | 0 0
  1.     @Override
  2.     public boolean onClickingInsideGui(ContainerRegistry 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.  
  7.         if (event.getRawSlot() != 2 && event.getRawSlot() < 5) {
  8.             event.setCancelled(true);
  9.             return false;
  10.         }
  11.  
  12.         if (clickedItem.getType() != Material.AIR && event.getClick().name().contains("SHIFT") && !canPlaceItemInsideContainer(clickedItem)) {
  13.             event.setCancelled(true);
  14.             return false;
  15.         }
  16.  
  17.         ItemStack storageItem;
  18.         if (registry.getcontents(location).length > 0)
  19.             storageItem = registry.getcontents(location)[0];
  20.         else
  21.             storageItem = new ItemStack(Material.AIR);
  22.  
  23.         if (event.getRawSlot() == 2) {
  24.             if (cursor.getType() != Material.AIR) {
  25.                 if (!canPlaceItemInsideContainer(cursor)) {
  26.                     event.setCancelled(true);
  27.                     return false;
  28.                 }
  29.  
  30.                 BigInteger currentAmount = getAmount();
  31.                 BigInteger newAmount = currentAmount.add(BigInteger.valueOf(cursor.getAmount()));
  32.                 BigInteger maxAmount = getMaxAmount();
  33.                 int toAdd = cursor.getAmount();
  34.  
  35.                 if (maxAmount.compareTo(BigInteger.ZERO) > 0 && newAmount.compareTo(maxAmount) > 0) {
  36.                     toAdd = maxAmount.subtract(currentAmount).intValue();
  37.  
  38.                 }
  39.  
  40.                 if (toAdd != cursor.getAmount()) {
  41.                     setAmount(maxAmount);
  42.                     ItemStack cursorItem = storageItem.clone();
  43.                     cursorItem.setAmount(toAdd);
  44.                     event.setCancelled(true);
  45.                 }
  46.             } else {
  47.                 ItemStack itemToAdd = storageItem.clone();
  48.                 if (itemToAdd.getType() == Material.AIR)
  49.                     return false;
  50.  
  51.                 int newAmount = getAmount().min(BigInteger.valueOf(maxStackSize)).intValue();
  52.                 itemToAdd.setAmount(newAmount);
  53.  
  54.                 if (event.getClick().name().contains("SHIFT")) {
  55.                     Map<Integer, ItemStack> leftOvers = clickedPlayer.getInventory().addItem(itemToAdd);
  56.                     if (!leftOvers.isEmpty()) {
  57.                         ItemStack leftOver = leftOvers.get(0);
  58.                         if (leftOver.getAmount() == newAmount) {
  59.                             return false;
  60.                         } else {
  61.                             newAmount -= leftOver.getAmount();
  62.                         }
  63.                     }
  64.                 } else {
  65.                     //Todo fix runable task.
  66.                     Bukkit.getScheduler().runTaskLater(ChestStorage.getInstance(), () -> clickedPlayer.setItemOnCursor(itemToAdd), 1L);
  67.                     //Common.runLater(1, () -> clickedPlayer.setItemOnCursor(itemToAdd));
  68.                 }
  69.  
  70.                 setAmount(getAmount().subtract(BigInteger.valueOf(newAmount)));
  71.                 registry.setAmontOfItems(location, BigInteger.valueOf(amount.intValue()));
  72.                 if (registry.getAmontOfItems(this.location).equals(BigInteger.valueOf(0))) {
  73.                     registry.setcontents(this.location);
  74.                 }
  75.             }
  76.             setItemPlaceholderEmptyChest(registry);
  77.  
  78.             Common.runLaterAsync(0, () -> updateInventoryTitle(this.amount, cursor));
  79.         }
  80.  
  81.         return true;
  82.     }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement