Skip to content

Programador Social y Sistema de Eventos

ComponenteClase
Motor de Programaciónnet.dasik.social.core.EntitySocialScheduler
Registro de Eventosnet.dasik.social.api.SocialEventRegistry
Niveles de PrioridadPriorityTier (CRITICAL, HIGH, NORMAL, LOW)
Modos de SeñalSignalType (DANGER, OWNER_ACTION, THUNDER, DEATH_CRY, FOOD_DETECTED, SOCIAL_INVITE)

🔄 Modelo de Programación de Doble Vía

Cada entidad social contiene un EntitySocialScheduler que procesa tareas en dos vías independientes:

  1. Mood Track (Vía de Estado Emocional/Largo Plazo): Se evalúa a menor frecuencia (por ejemplo, cada 20-100 ticks) para actualizar el estado anímico, la agresividad o la energía.
  2. Ambient Track (Vía Táctica Ambiental/Corto Plazo): Se evalúa a alta frecuencia (cada 1-5 ticks) para reaccionar inmediatamente a señales, peligros o ajustes de formación.
ascii
                      ┌───────────────────────────────┐
                      │    EntitySocialScheduler      │
                      └───────────────┬───────────────┘

              ┌───────────────────────┴───────────────────────┐
              ▼                                               ▼
   ┌─────────────────────┐                         ┌─────────────────────┐
   │     Mood Track      │                         │    Ambient Track    │
   │ (Low Frequency Ticks)│                         │(High Frequency Ticks)│
   │ - Pack Hierarchy   │                         │ - Obstacle Avoidance│
   │ - Hunger / Fatigue  │                         │ - Signal Response   │
   └─────────────────────┘                         └─────────────────────┘

📢 SocialEventRegistry e Implementación de Eventos

Los mods implementan SocialEvent y registran instancias en SocialEventRegistry durante la inicialización:

java
public class HowlEvent implements SocialEvent {
    @Override public String getId() { return "betterdogs:howl"; }
    @Override public int getPriorityValue() { return 80; }
    @Override public String getTrackId() { return "pack_command"; }
    @Override public boolean canPreempt(SocialEvent other) { return other.getPriorityValue() < 80; }
    @Override public void onStart(TickContext context) {}
    @Override public boolean tick(TickContext context) { return false; }
    @Override public void onEnd(SocialEntity entity, EndReason reason) {}
}

// Register during mod initialization (frozen on first pulse)
SocialEventRegistry.register(new HowlEvent());

📊 Matriz de Prioridad PriorityTier

NivelVías MáximasPolítica de AsignaciónUso Habitual
CRITICAL2Reemplazo inmediato, prioridad máximaHuida de peligros, combate
HIGH8Desplaza tareas normales o bajasComandos tácticos, llamadas de manada
NORMAL16Presupuesto de ejecución estándarInteracciones sociales, deambular
LOW32Capacidad máxima, baja prioridadInspección ambiental de fondo

🔗 Páginas Relacionadas

Official documentation & web portal for Dasik Igaijinn mods.