MCPcopy Create free account
hub / github.com/boxbeam/RedLib / onClick

Method onClick

src/redempt/redlib/inventorygui/InventoryGUI.java:433–500  ·  view source on GitHub ↗
(InventoryClickEvent e)

Source from the content-addressed store, hash-verified

431 }
432
433 @EventHandler
434 public void onClick(InventoryClickEvent e) {
435 if (!inventory.equals(e.getView().getTopInventory())) {
436 return;
437 }
438 if (e.getAction() == InventoryAction.COLLECT_TO_CURSOR && !e.getClickedInventory().equals(inventory)) {
439 e.setCancelled(true);
440 return;
441 }
442 if (!inventory.equals(e.getClickedInventory()) && e.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY) {
443 if (openSlots.size() > 0) {
444 Map<Integer, ItemStack> slots = new HashMap<>();
445 int amount = e.getCurrentItem().getAmount();
446 for (int slot : openSlots) {
447 if (amount <= 0) {
448 break;
449 }
450 ItemStack item = inventory.getItem(slot);
451 if (item == null) {
452 int diff = Math.min(amount, e.getCurrentItem().getType().getMaxStackSize());
453 amount -= diff;
454 ItemStack clone = e.getCurrentItem().clone();
455 clone.setAmount(diff);
456 slots.put(slot, clone);
457 continue;
458 }
459 if (e.getCurrentItem().isSimilar(item)) {
460 int max = item.getType().getMaxStackSize() - item.getAmount();
461 int diff = Math.min(max, e.getCurrentItem().getAmount());
462 amount -= diff;
463 ItemStack clone = item.clone();
464 clone.setAmount(clone.getAmount() + diff);
465 slots.put(slot, clone);
466 }
467 }
468 if (slots.size() == 0) {
469 return;
470 }
471 onClickOpenSlot.accept(e, new ArrayList<>(slots.keySet()));
472 if (e.isCancelled()) {
473 return;
474 }
475 e.setCancelled(true);
476 ItemStack item = e.getCurrentItem();
477 item.setAmount(amount);
478 e.setCurrentItem(item);
479 slots.forEach(inventory::setItem);
480 Bukkit.getScheduler().scheduleSyncDelayedTask(RedLib.getInstance(), () -> {
481 ((Player) e.getWhoClicked()).updateInventory();
482 });
483 return;
484 }
485 e.setCancelled(true);
486 }
487 if (e.getInventory().equals(e.getClickedInventory())) {
488 if (openSlots.contains(e.getSlot())) {
489 List<Integer> list = new ArrayList<>();
490 list.add(e.getSlot());

Callers

nothing calls this directly

Calls 15

getInstanceMethod · 0.95
onClickMethod · 0.95
getMaxStackSizeMethod · 0.80
forEachMethod · 0.80
getInventoryMethod · 0.80
getSlotMethod · 0.80
getMethod · 0.65
equalsMethod · 0.45
setCancelledMethod · 0.45
sizeMethod · 0.45
getItemMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected