package com.tiedup.remake.entities.kidnapper.components;

import com.tiedup.remake.entities.KidnapperItemSelector;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;

/**
 * Host interface for KidnapperLootManager callbacks.
 * Provides access to entity methods needed for loot drop and equipment management.
 */
public interface ILootHost {
    /**
     * Get the entity's level/world.
     */
    Level level();

    /**
     * Get item in the given equipment slot.
     */
    ItemStack getItemBySlot(EquipmentSlot slot);

    /**
     * Set item in the given equipment slot.
     */
    void setItemSlot(EquipmentSlot slot, ItemStack stack);

    /**
     * Get the entity's random source.
     */
    RandomSource getRandom();

    /**
     * Spawn an item at the entity's location.
     */
    @Nullable
    ItemEntity spawnAtLocation(ItemStack stack);

    /**
     * Get the NPC's display name for logging.
     */
    String getNpcName();

    /**
     * Get the item selection for this kidnapper (themed items).
     */
    @Nullable
    KidnapperItemSelector.SelectionResult getItemSelection();
}
