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

import java.util.UUID;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;

/**
 * Host interface for KidnapperAggressionSystem callbacks.
 * Provides access to entity information needed for aggression tracking.
 */
public interface IAggressionHost {
    /**
     * Get the world/level for tick timing.
     */
    @Nullable
    Level level();

    /**
     * Get the entity's display name for dialogue.
     */
    String getNpcName();

    /**
     * Trigger alert dialogue when captive escapes.
     */
    void talkToPlayersInRadius(
        com.tiedup.remake.dialogue.EntityDialogueManager.DialogueCategory category,
        int radius
    );

    /**
     * Get the associated camp structure UUID.
     */
    @Nullable
    UUID getAssociatedStructure();

    /**
     * Punish a prisoner who attacks this kidnapper.
     *
     * @param player The player who attacked
     * @return true if punishment was applied
     */
    boolean punishAttackingPrisoner(ServerPlayer player);
}
