Volver al índice

src/main/java/ar/com/companeros/identity/AgentIdentity.java

package ar.com.companeros.identity;

import java.util.Objects;
import java.util.UUID;
import net.minecraft.core.GlobalPos;

/** Instantánea inmutable de identidad, independiente del inventario y de la entidad. */
public record AgentIdentity(UUID id, String name, AgentState state, UUID legacyOwner,
        GlobalPos camp, String mode, long createdAtUtc, long updatedAtUtc) {
    public AgentIdentity {
        Objects.requireNonNull(id, "id");
        Objects.requireNonNull(name, "name");
        Objects.requireNonNull(state, "state");
        Objects.requireNonNull(mode, "mode");
        if (!name.matches("[A-Za-z0-9_]{1,16}"))
            throw new IllegalArgumentException("Nombre de jugador inválido");
        if (!mode.equals("quieto") && !mode.equals("seguir") && !mode.equals("autonomo"))
            throw new IllegalArgumentException("Modo desconocido");
        if (createdAtUtc < 0 || updatedAtUtc < createdAtUtc)
            throw new IllegalArgumentException("Fechas de identidad inválidas");
    }

    public boolean autoLogin() { return state == AgentState.ACTIVE; }
}