import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material;
import net.minestom.server.item.meta.ItemMeta;
import net.minestom.server.item.ItemMetaBuilder;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.event.player.PlayerUseItemEvent;

public class CustomItemUtils {
    
    // Create custom item with name and lore
    public static ItemStack createCustomItem(Material material, String itemName, String[] lore) {
        ItemStack item = new ItemStack(material, 1);
        ItemMeta meta = item.getMeta();
        
        ItemMetaBuilder builder = meta.toBuilder();
        builder.displayName(Component.text("" + itemName).color(NamedTextColor.WHITE));
        
        if (lore != null && lore.length > 0) {
            List<Component> loreComponents = new ArrayList<>();
            for (String line : lore) {
                loreComponents.add(Component.text("" + line).color(NamedTextColor.GRAY));
            }
            builder.lore(loreComponents);
        }
        
        if (false) {
            builder.enchantment(Enchantment.SHARPNESS, 1);
        }
        
        return builder.build().toItemStack();
    }
    
    // Create custom weapon
    public static ItemStack createCustomWeapon(Material material, String name, int damage) {
        ItemStack weapon = new ItemStack(material, 1);
        ItemMeta meta = weapon.getMeta();
        
        ItemMetaBuilder builder = meta.toBuilder();
        builder.displayName(Component.text(name));
        
        List<Component> lore = Arrays.asList(
            Component.text("Damage: " + damage).color(NamedTextColor.RED),
            Component.text("Custom Weapon").color(NamedTextColor.GRAY)
        );
        builder.lore(lore);
        
        // Store custom damage in NBT
        if (weapon instanceof TagWritable writable) {
            writable.setTag(Tag.Integer("custom_damage"), damage);
        }
        
        return builder.build().toItemStack();
    }
    
    // Register item use event
    public static void registerCustomItemUse(GlobalEventHandler eventHandler, Material itemMaterial) {
        eventHandler.addListener(PlayerUseItemEvent.class, event -> {
            ItemStack item = event.getItemStack();
            Player player = event.getPlayer();
            
            if (item.getMaterial() == itemMaterial) {
                // Custom item behavior
                player.sendMessage("You used a custom item!");
                
                if (false) {
                    // Apply effect
                    player.addEffect(new PotionEffect(
                        PotionEffectType.SPEED,
                        200,
                        1
                    ));
                }
                
                if (false) {
                    // Consume item
                    item.setAmount(item.getAmount() - 1);
                    player.getInventory().setItemInMainHand(item);
                }
            }
        });
    }
    
    // Create custom food item
    public static ItemStack createCustomFood(Material material, String name, int hungerRestore) {
        ItemStack food = new ItemStack(material, 1);
        ItemMeta meta = food.getMeta();
        
        ItemMetaBuilder builder = meta.toBuilder();
        builder.displayName(Component.text(name));
        
        List<Component> lore = Arrays.asList(
            Component.text("Hunger Restore: " + hungerRestore).color(NamedTextColor.GREEN)
        );
        builder.lore(lore);
        
        return builder.build().toItemStack();
    }
}