Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public boolean onClickingInsideGui(ContainerRegistryAPI registry, GuiUpgradePages upgradePages, Location location, InventoryClickEvent event, Player player) {
- Player clickedPlayer = (Player) event.getWhoClicked();
- ItemStack cursor = event.getCursor() == null ? new ItemStack(Material.AIR) : event.getCursor();
- ItemStack clickedItem = event.getCurrentItem() == null ? new ItemStack(Material.AIR) : event.getCurrentItem();
- //System.out.println(cursor + " " + clickedItem);
- if (event.getRawSlot() != 2 && event.getRawSlot() < 5) {
- event.setCancelled(true);
- return false;
- }
- if (clickedItem.getType() != Material.AIR && event.getRawSlot() == 2 && !canPlaceItemInsideContainer(clickedItem)) {
- event.setCancelled(true);
- return false;
- }
- if (clickedItem.getType() != Material.AIR && event.getClick().isShiftClick()/*.name().contains("SHIFT")*/ && !canPlaceItemInsideContainer(clickedItem)) {
- event.setCancelled(true);
- return false;
- }
- ItemStack storageItem;
- if (registry.getcontents(location).length > 0)
- storageItem = registry.getcontents(location)[0];
- else
- storageItem = new ItemStack(Material.AIR);
- if (event.getRawSlot() == 2) {
- if (cursor.getType() != Material.AIR) {
- if (!canPlaceItemInsideContainer(cursor)) {
- event.setCancelled(true);
- return false;
- }
- BigInteger currentAmount = getAmount();
- BigInteger newAmount = currentAmount.add(BigInteger.valueOf(cursor.getAmount()));
- BigInteger maxAmount = getMaxAmount();
- int toAdd = cursor.getAmount();
- System.out.println(" currentAmount.intValue() " + currentAmount + " BigInteger " + (maxAmount.compareTo(BigInteger.ZERO)) + " BigInteger maxAmount " + (newAmount.compareTo(maxAmount) > 0));
- if (maxAmount.compareTo(BigInteger.ZERO) > 0 && newAmount.compareTo(maxAmount) > 0) {
- toAdd = maxAmount.subtract(currentAmount).intValue();
- }
- System.out.println(" toAdd " + toAdd + "" + (toAdd != cursor.getAmount()));
- if (toAdd != cursor.getAmount()) {
- setAmount(maxAmount);
- ItemStack cursorItem = storageItem.clone();
- cursorItem.setAmount(toAdd);
- event.setCancelled(true);
- }
- } else {
- ItemStack itemToAdd = storageItem.clone();
- if (itemToAdd.getType() == Material.AIR)
- return false;
- int newAmount = getAmount().min(BigInteger.valueOf(Math.min(itemToAdd.getMaxStackSize(), maxStackSize))).intValue();
- itemToAdd.setAmount(newAmount);
- if (event.getClick().name().contains("SHIFT")) {
- Map<Integer, ItemStack> leftOvers = clickedPlayer.getInventory().addItem(itemToAdd);
- if (!leftOvers.isEmpty()) {
- ItemStack leftOver = leftOvers.get(0);
- if (leftOver.getAmount() == newAmount) {
- return false;
- } else {
- newAmount -= leftOver.getAmount();
- }
- }
- } else {
- //Todo fix runable task.
- Bukkit.getScheduler().runTaskLater(ChestStorage.getInstance(), () -> clickedPlayer.setItemOnCursor(itemToAdd), 0L);
- //Common.runLater(1, () -> clickedPlayer.setItemOnCursor(itemToAdd));
- }
- //Common.runLater(1, () -> clickedPlayer.setItemOnCursor(itemToAdd));
- System.out.println(" new amount fjahygfeakjiuygfe = " + newAmount);
- System.out.println(" set amount fjahygfeakjiuygfe = " + getAmount().subtract(BigInteger.valueOf(newAmount)));
- setAmount(getAmount().subtract(BigInteger.valueOf(newAmount)));
- ItemStack item = itemToAdd.clone();
- item.setAmount(newAmount);
- //setItemsAmount(item);
- //registry.setAmontOfItems(location, this.amount);
- registry.setAmontOfItems(location, this.amount);
- if (registry.getAmontOfItems(this.location).equals(BigInteger.valueOf(0))) {
- registry.setcontents(this.location);
- }
- setItemPlaceholderEmptyChest(registry);
- Common.runLaterAsync(0, () -> updateInventoryTitle(this.amount, cursor));
- }
- }
- return true;
- }
Add Comment
Please, Sign In to add comment