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

import com.tiedup.remake.entities.skins.Gender;
import java.util.UUID;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;

/**
 * Host interface for KidnapperAppearance callbacks.
 * Provides access to entity data and configuration needed for appearance management.
 */
public interface IAppearanceHost {
    /**
     * Get the entity's UUID for deterministic skin selection.
     */
    UUID getUUID();

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

    /**
     * Get the world/level.
     */
    @Nullable
    Level level();

    /**
     * Set whether the kidnapper uses slim arms model.
     */
    void setSlimArms(boolean slimArms);

    /**
     * Set the kidnapper's gender.
     */
    void setGender(Gender gender);

    /**
     * Set the kidnapper's display name.
     */
    void setNpcName(String name);

    /**
     * Get the kidnapper's display name.
     */
    String getNpcName();

    /**
     * Set synced entity data string value.
     */
    void setEntityDataString(EntityDataAccessor<String> accessor, String value);

    /**
     * Get synced entity data string value.
     */
    String getEntityDataString(EntityDataAccessor<String> accessor);
}
