Last active
October 28, 2021 16:26
-
-
Save M0rais/8d6022df4dd922807ebcca16bcf30165 to your computer and use it in GitHub Desktop.
Verify Take and Put item from inventory
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class InventoryListener implements Listener { | |
| @EventHandler | |
| public void onInventoryInteract(final InventoryClickEvent event) { | |
| if (event.getInventory() == null) return; | |
| int slot = event.getRawSlot(); | |
| if (slot < event.getInventory().getSize()) { | |
| //Verify inventory | |
| Player player = (Player) event.getWhoClicked(); | |
| PlayerInventory playerInventory = player.getInventory(); | |
| Inventory inventory = event.getInventory(); | |
| ItemStack item = inventory.getItem(slot); | |
| if (item == null) { | |
| //If the item on the slot is null | |
| int hotBar = event.getHotbarButton(); | |
| if (hotBar == -1) { | |
| //If isn't hotbar verify normal click | |
| item = event.getCursor(); | |
| if (item == null || item.getType() == Material.AIR) return; | |
| callEvent(new PutItemEvent(player, inventory, item)); | |
| return; | |
| } | |
| //Is hotbar | |
| item = playerInventory.getItem(hotBar); | |
| if (item == null) return; | |
| callEvent(new PutItemEvent(player, inventory, item)); | |
| return; | |
| } | |
| //Item isn't null | |
| if (event.getClick().isShiftClick()) { | |
| //Is shift click, verify free space player inventory | |
| if (playerInventory.firstEmpty() == -1) return; | |
| callEvent(new TakeItemEvent(player, playerInventory, item)); | |
| return; | |
| } | |
| int hotBar = event.getHotbarButton(); | |
| if (hotBar > -1) { | |
| //Verify hotbar and verify free space player | |
| if (playerInventory.firstEmpty() == -1) return; | |
| callEvent(new TakeItemEvent(player, playerInventory, item)); | |
| return; | |
| } | |
| //Normal click | |
| callEvent(new TakeItemEvent(player, playerInventory, item)); | |
| } | |
| if (event.isShiftClick()) { | |
| //Verify put with shift | |
| ItemStack item = event.getClickedInventory().getItem(event.getSlot()); | |
| if (item == null) return; | |
| if (inventory.firstEmpty() == -1) return; | |
| callEvent(new PutItemEvent(player, inventory, item)); | |
| } | |
| } | |
| @EventHandler | |
| public void onTake(TakeItemEvent event) { | |
| System.out.println("take"); | |
| } | |
| @EventHandler | |
| public void onPut(PutItemEvent event) { | |
| System.out.println("put"); | |
| } | |
| public void callEvent(Event event) { | |
| Bukkit.getServer().getPluginManager().callEvent(event); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class PutItemEvent extends Event { | |
| private static final HandlerList HANDLERS = new HandlerList(); | |
| private final Player player; | |
| private final Inventory targetInventory; | |
| private final ItemStack item; | |
| public PutItemEvent(Player player, Inventory targetInventory, ItemStack item) { | |
| this.player = player; | |
| this.targetInventory = targetInventory; | |
| this.item = item; | |
| } | |
| public Player getPlayer() { | |
| return player; | |
| } | |
| public Inventory getTargetInventory() { | |
| return targetInventory; | |
| } | |
| public ItemStack getItem() { | |
| return item; | |
| } | |
| @Override | |
| public HandlerList getHandlers() { | |
| return HANDLERS; | |
| } | |
| public static HandlerList getHandlerList() { | |
| return HANDLERS; | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| public class TakeItemEvent extends Event { | |
| private static final HandlerList HANDLERS = new HandlerList(); | |
| private final Player player; | |
| private final Inventory fromInventory; | |
| private final ItemStack item; | |
| public TakeItemEvent(Player player, Inventory fromInventory, ItemStack item) { | |
| this.player = player; | |
| this.fromInventory = fromInventory; | |
| this.item = item; | |
| } | |
| public Player getPlayer() { | |
| return player; | |
| } | |
| public Inventory getFromInventory() { | |
| return fromInventory; | |
| } | |
| public ItemStack getItem() { | |
| return item; | |
| } | |
| @Override | |
| public HandlerList getHandlers() { | |
| return HANDLERS; | |
| } | |
| public static HandlerList getHandlerList() { | |
| return HANDLERS; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment