Skip to content

Penjadwal Sosial & Sistem Event

KomponenKelas
Mesin Penjadwalnet.dasik.social.core.EntitySocialScheduler
Registri Eventnet.dasik.social.api.SocialEventRegistry
Tingkatan PrioritasPriorityTier (CRITICAL, HIGH, NORMAL, LOW)
Tipe SinyalSignalType (DANGER, OWNER_ACTION, THUNDER, DEATH_CRY, FOOD_DETECTED, SOCIAL_INVITE)

🔄 Model Penjadwalan Dua Jalur

Setiap entitas sosial memiliki EntitySocialScheduler pribadi yang mengeksekusi tugas pada dua jalur paralel:

  1. Jalur Mood (Kondisi Jangka Panjang): Dievaluasi pada frekuensi rendah (misal tiap 20-100 tick) untuk memperbarui suasana hati, hierarki kawanan, rasa lapar, atau keletihan.
  2. Jalur Ambient (Reaksi Taktis Seketika): Dievaluasi pada frekuensi tinggi (tiap 1-5 tick) untuk bereaksi langsung terhadap stimulus lingkungan, bahaya mendadak, atau penyesuaian posisi kawanan.
ascii
                      ┌───────────────────────────────┐
                      │    EntitySocialScheduler      │
                      └───────────────┬───────────────┘

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

📢 SocialEventRegistry & Implementasi Event

Mod mengimplementasikan antarmuka SocialEvent dan mendaftarkannya saat inisialisasi:

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

📊 Matriks Tingkatan Prioritas

TingkatanJalur MaksKebijakan InterupsiPenggunaan Tipikal
CRITICAL2Interupsi langsung, prioritas mutlakMenyelamatkan diri dari bahaya, pertempuran
HIGH8Menghentikan tugas normal/rendahPerintah kawanan, sinyal taktis
NORMAL16Alokasi anggaran standarInteraksi sosial, bermain, berkeliaran
LOW32Kapasitas terbesar, latar belakangPengamatan pasif terhadap lingkungan

🔗 Halaman Terkait

Official documentation & web portal for Dasik Igaijinn mods.