Код:
@EventHandler
public void onInvClick2(InventoryClickEvent e) {
Player player = (Player) e.getWhoClicked();
Inventory opened_inv = (Inventory) e.getView().getTopInventory();
ItemStack item = e.getCurrentItem();
if (opened_inv != null && e.getClickedInventory() != null && e.getClickedInventory() == player.getInventory()) {
if (opened_inv.getType() == InventoryType.CHEST) {
if (item != null && item.getType() == Material.BONE) {
e.setCancelled(true);
player.sendMessage("yourmessage");
}
}
}
}
Дело в том, что getInventory() возвращает верхний инвентарь (сундук), а не инвентарь игрока. Нужна проверка, что ты кликаешь в нужном инвентаре.
P.S. По крайней мере так написано в доках:
Посмотреть вложение 65102
P.P.S. Код не проверял, не знаю, будет ли работать
Можно ещё через
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/InventoryMoveItemEvent.html попробовать.