Advertisement
broken-arrow

Untitled

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