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; } }