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