@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (!(event.getWhoClicked() instanceof Player player)) {
return;
}
ItemStack cursorItem = event.getCursor();
ItemStack clickedItem = event.getCurrentItem();
if (cursorItem.getType() != Material.ENCHANTED_BOOK || !isArmor(clickedItem)) {
return;
}
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) cursorItem.getItemMeta();
if (meta == null || meta.getStoredEnchants().isEmpty()) {
return;
}
Enchantment enchantment = meta.getStoredEnchants().keySet().iterator().next();
int level = meta.getStoredEnchants().get(enchantment);
try {
clickedItem.addEnchantment(enchantment, level);
} catch (IllegalArgumentException e) {
player.sendMessage("Зачарование не подходит.");
return;
}
cursorItem.setAmount(cursorItem.getAmount() - 1);
player.updateInventory();
event.setCancelled(true);
}
public boolean isArmor(ItemStack item) {
if (item == null) return false;
return EnchantmentTarget.ARMOR.includes(item);
}
}