Skip to content

Sozialer Planer & Ereignissystem

KomponenteKlasse
Scheduler-Enginenet.dasik.social.core.EntitySocialScheduler
Ereignis-Registrynet.dasik.social.api.SocialEventRegistry
PrioritätsstufenPriorityTier (CRITICAL, HIGH, NORMAL, LOW)
SignalmodiSignalType (DANGER, OWNER_ACTION, THUNDER, DEATH_CRY, FOOD_DETECTED, SOCIAL_INVITE)

🔄 Zweispuriges Scheduling-Modell

Jede soziale Entität verfügt über einen EntitySocialScheduler, der Aufgaben auf zwei parallelen Spuren abarbeitet:

  1. Mood Track (Langfristige Verhaltenszustände): Wird mit geringerer Frequenz (z. B. alle 20-100 Ticks) evaluiert, um das allgemeine Gemüt, Aggression oder Ausdauer zu aktualisieren.
  2. Ambient Track (Kurzfristige taktische Signale): Wird mit hoher Frequenz (alle 1-5 Ticks) evaluiert, um sofort auf Reize, Gefahren oder Schwarmjustierungen zu reagieren.
ascii
                      ┌───────────────────────────────┐
                      │    EntitySocialScheduler      │
                      └───────────────┬───────────────┘

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

📢 SocialEventRegistry & Ereignisimplementierung

Mods implementieren SocialEvent und registrieren Instanzen bei der Initialisierung:

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());

📊 Prioritätsstufen-Matrix

StufeMax. SpurenZuweisungsrichtlinieTypische Verwendung
CRITICAL2Sofortige Übernahme, höchste PrioritätFlucht vor Gefahren, Kampf
HIGH8Unterbricht normale/niedrige AufgabenTaktische Befehle, Rudelrufe
NORMAL16Standard-AusführungsbudgetSoziale Interaktion, Umherstreifen
LOW32Maximale Kapazität, HintergrundHintergrundbeobachtung der Umgebung

🔗 Verwandte Seiten

Official documentation & web portal for Dasik Igaijinn mods.