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

import com.tiedup.remake.entities.ai.kidnapper.KidnapperState;
import java.util.UUID;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.ai.navigation.PathNavigation;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;

/**
 * Host interface for KidnapperCellManager callbacks.
 * Provides access to entity properties needed for cell management.
 */
public interface ICellHost {
    /**
     * Get the entity's level/world.
     */
    Level level();

    /**
     * Get the entity's current block position.
     */
    BlockPos blockPosition();

    /**
     * Get the associated structure UUID for camp-linked kidnappers.
     */
    @Nullable
    UUID getAssociatedStructure();

    /**
     * Get the entity's navigation component.
     */
    PathNavigation getNavigation();

    /**
     * Set the current AI state.
     */
    void setCurrentState(KidnapperState state);

    /**
     * Trigger dialogue with nearby players.
     */
    void talkToPlayersInRadius(
        com.tiedup.remake.dialogue.EntityDialogueManager.DialogueCategory category,
        int radius
    );

    /**
     * Get the kidnapper's name for logging.
     */
    String getNpcName();
}
