Skip to content

Social Scheduler & Event System

ComponentClass
Scheduler Enginenet.dasik.social.core.EntitySocialScheduler
Event Registrynet.dasik.social.api.SocialEventRegistry
Priority LevelsPriorityTier (CRITICAL, HIGH, NORMAL, LOW)
Signal ModesSignalType (DANGER, OWNER_ACTION, THUNDER, DEATH_CRY, FOOD_DETECTED, SOCIAL_INVITE)

🔄 Dual-Track Scheduling Model

Every social entity carries an EntitySocialScheduler which processes dual-track tasks:

  1. Mood Track (Long-Term Behavioral States): Evaluated at lower frequencies (e.g. every 20-100 ticks) to update emotional baseline, aggression levels, or stamina.
  2. Ambient Track (Short-Term Tactical Signals): Evaluated at high frequencies (every 1-5 ticks) for immediate reaction to signals, threats, or flocking adjustments.
ascii
                      ┌───────────────────────────────┐
                      │    EntitySocialScheduler      │
                      └───────────────┬───────────────┘

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

📢 SocialEventRegistry & Event Implementation

Mods implement SocialEvent and register instances with SocialEventRegistry during mod initialization:

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

📊 Priority Tier Matrix

TierMax TracksAllocation PolicyTypical Usage
CRITICAL2Immediate override, high priorityHazard escape, combat survival
HIGH8Preempts low/normal tasksTactical commands, pack calls
NORMAL16Standard execution budgetSocial interaction, idle movement
LOW32Max capacity, low priorityBackground ambient inspection

Official documentation & web portal for Dasik Igaijinn mods.