package com.tiedup.remake.items;

import java.util.List;
import javax.annotation.Nullable;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

/**
 * ItemToken - Access pass for kidnapper camps.
 *
 * Slave Trader & Maid System
 *
 * Behavior:
 * - Reusable (no durability, permanent)
 * - Drop: 5% chance from killed kidnappers
 * - Effect: Kidnappers won't target the holder
 * - Effect: Allows peaceful interaction with SlaveTrader
 *
 * When a player has a token in their inventory:
 * - EntityKidnapper.canTarget() returns false
 * - EntitySlaveTrader opens trade menu instead of attacking
 */
public class ItemToken extends Item {

    public ItemToken() {
        super(new Item.Properties().stacksTo(1).rarity(Rarity.RARE));
    }

    @Override
    public void appendHoverText(
        ItemStack stack,
        @Nullable Level level,
        List<Component> tooltip,
        TooltipFlag flag
    ) {
        tooltip.add(
            Component.translatable("item.tiedup.token.title").withStyle(
                ChatFormatting.GOLD,
                ChatFormatting.BOLD
            )
        );
        tooltip.add(Component.literal(""));
        tooltip.add(
            Component.translatable("item.tiedup.token.effect_no_target").withStyle(
                ChatFormatting.GREEN
            )
        );
        tooltip.add(
            Component.translatable("item.tiedup.token.effect_trading").withStyle(
                ChatFormatting.GREEN
            )
        );
        tooltip.add(Component.literal(""));
        tooltip.add(
            Component.translatable("item.tiedup.token.hint").withStyle(
                ChatFormatting.GRAY,
                ChatFormatting.ITALIC
            )
        );
    }

    @Override
    public boolean isFoil(ItemStack stack) {
        return true; // Always glowing to indicate special item
    }
}
