Skip to content
Version 2.11.0
↓ Get the launcher
Stellar framework · 2.11.0 · plugin SDK

Build Stellar plugins for Blue Protocol: Star Resonance.

Stellar is a Dalamud-style plugin framework — a read-only C# API over the live game, a native uGUI overlay toolkit, and a launcher that ships your plugin to players. Quality-of-life only; no cheating, by design.

50services on IPluginServices1,552API pages15registry plugins
HelloSpec.cs
public sealed class HelloSpec : IStellarPlugin
{
    private readonly IPluginServices _s;
    public string Name => "Hello Spec";

    public HelloSpec(IPluginServices s)
    {
        _s = s;
        _s.CombatEvents.CombatEventOccurred += OnCombat;
    }

    private void OnCombat(CombatEvent e)
    {
        // a nearby player's spec, known the moment they appear
        if (e is CombatEvent.SpecChanged c)
            _s.Log.Info($"spec → {c.NewSubProfessionId}");
    }

    public void Dispose() =>
        _s.CombatEvents.CombatEventOccurred -= OnCombat;
}

Start where you are

Three kinds of reader, three front doors

From pull request to players

Interactive — drag to pan, scroll to zoom, click a box for its source
All diagrams →
Ecosystem

What’s new for plugin authors

Generated from the CHANGELOG’s developer notes
Full changelog →
Framework 2.11.02026-09-26
  • Spec from talent root buffs: each of the 18 specs has exactly one root talent buff (“<Spec> Spec”); the map is derived at runtime from TalentStage → TalentTree → TalentTable effects (18 pinned fallback constants). Buff-derived spec is authoritative over cast inference; the swap gap holds the previous spec (expires after 10 s); a snapshot with no root clears it; Battle Imagine transform ids are not class changes. Evidence: devkit docs/recon/spec-from-public-wire-data.md (2,111/2,111 snapshots; owner-confirmed live).
  • New API (additive): ICombatSpec.TryGetTalentSpec(EntityId, out int); CombatEvent.SpecChanged(TimestampMs, TargetId, OldSubProfessionId, NewSubProfessionId, FromTalent) (once per real change, never for the swap gap); CombatEvent.EntityBuffsSeeded(TimestampMs, TargetId, Buffs) — SyncNearEntities / EnterScene now decode Entity.buff_infos and replace the entity’s buff set silently, one seed event per entity (live deltas unchanged; a later delta for a seeded buff arrives as Refreshed, its expiry as Removed). BuffsFor/LocalBuffs return cached read-only snapshots.
  • STELLAR_WIRECAP debug capture is now lossless for large frames (node budget 4096 → 262144, hex for short opaque byte fields, raw base64 when a frame still truncates).

Reference

Rebuilt from the source on every deploy — it cannot drift