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

import com.tiedup.remake.entities.EntityKidnapper;
import com.tiedup.remake.entities.KidnapperCollarConfig;
import com.tiedup.remake.entities.KidnapperJobManager;
import com.tiedup.remake.entities.kidnapper.components.ITargetHost;
import com.tiedup.remake.entities.kidnapper.components.KidnapperAggressionSystem;
import java.util.UUID;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.ai.navigation.PathNavigation;
import net.minecraft.world.entity.ai.sensing.Sensing;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
import org.jetbrains.annotations.Nullable;

/**
 * Host implementation for KidnapperTargetSelector callbacks.
 * Provides access to entity properties needed for target selection and validation.
 */
public class TargetHost implements ITargetHost {

    private final EntityKidnapper entity;

    public TargetHost(EntityKidnapper entity) {
        this.entity = entity;
    }

    @Override
    public Level level() {
        return entity.level();
    }

    @Override
    public Sensing getSensing() {
        return entity.getSensing();
    }

    @Override
    public AABB getBoundingBox() {
        return entity.getBoundingBox();
    }

    @Override
    public float distanceTo(LivingEntity other) {
        return entity.distanceTo(other);
    }

    @Override
    public UUID getUUID() {
        return entity.getUUID();
    }

    @Override
    public boolean isTiedUp() {
        return entity.isTiedUp();
    }

    @Override
    public boolean hasCaptives() {
        return entity.hasCaptives();
    }

    @Override
    public boolean isWaitingForJobToBeCompleted() {
        return entity.isWaitingForJobToBeCompleted();
    }

    @Override
    public boolean isGetOutState() {
        return entity.isGetOutState();
    }

    @Override
    public boolean isKidnappingModeEnabled() {
        return entity.isKidnappingModeEnabled();
    }

    @Override
    @Nullable
    public UUID getAssociatedStructure() {
        return entity.getAssociatedStructure();
    }

    @Override
    public PathNavigation getNavigation() {
        return entity.getNavigation();
    }

    @Override
    public KidnapperAggressionSystem getAggressionSystem() {
        return entity.getAggressionSystem();
    }

    @Override
    public KidnapperJobManager getJobManager() {
        return entity.getJobManager();
    }

    @Override
    public KidnapperCollarConfig getCollarConfig() {
        return entity.getCollarConfig();
    }
}
