|
1 | 1 | package it.angrybear.yagl.listeners;
|
2 | 2 |
|
| 3 | +import it.angrybear.yagl.items.MovablePersistentItem; |
3 | 4 | import it.angrybear.yagl.items.PersistentItem;
|
4 | 5 | import it.angrybear.yagl.persistent.DeathAction;
|
5 | 6 | import org.bukkit.entity.Player;
|
|
16 | 17 | import org.bukkit.event.player.PlayerInteractEvent;
|
17 | 18 | import org.bukkit.event.player.PlayerItemConsumeEvent;
|
18 | 19 | import org.bukkit.event.player.PlayerItemDamageEvent;
|
| 20 | +import org.bukkit.inventory.Inventory; |
19 | 21 | import org.bukkit.inventory.ItemStack;
|
20 | 22 | import org.bukkit.inventory.PlayerInventory;
|
21 | 23 | import org.jetbrains.annotations.NotNull;
|
@@ -102,8 +104,17 @@ protected void on(PlayerDropItemEvent event) {
|
102 | 104 | protected void on(InventoryClickEvent event) {
|
103 | 105 | Player player = (Player) event.getWhoClicked();
|
104 | 106 | ClickType type = event.getClick();
|
105 |
| - if (clickPersistentItem(event.getCurrentItem(), player, type, cancelled(event))) return; |
106 |
| - clickPersistentItem(event.getCursor(), player, type, cancelled(event)); |
| 107 | + ItemStack itemStack = event.getCurrentItem(); |
| 108 | + Inventory clicked = event.getClickedInventory(); |
| 109 | + Inventory playerInventory = player.getInventory(); |
| 110 | + |
| 111 | + Consumer<PersistentItem> ifPresent = e -> { |
| 112 | + if (!(e instanceof MovablePersistentItem) || !playerInventory.equals(clicked)) |
| 113 | + cancelled(event).accept(e); |
| 114 | + }; |
| 115 | + |
| 116 | + if (clickPersistentItem(itemStack, player, type, ifPresent)) return; |
| 117 | + clickPersistentItem(event.getCursor(), player, type, ifPresent); |
107 | 118 | }
|
108 | 119 |
|
109 | 120 | @EventHandler
|
|
0 commit comments