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
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
🎮I want to use modsInstall the launcher, pick plugins, play. It installs and auto-updates the framework for you.Getting started →🧩I want to write a pluginReference Stellar.Abstractions, implement IStellarPlugin, and draw UI with HudElement trees.Plugin guide →🛠️I want to extend the frameworkExpose a new wire field or game system. Builds and tests run against committed interop stubs — no game install.Contributor guide →
From pull request to players
Interactive — drag to pan, scroll to zoom, click a box for its source
Ecosystem
What’s new for plugin authors
Generated from the CHANGELOG’s developer notes
Framework 2.11.0
- 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 decodeEntity.buff_infosand 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/LocalBuffsreturn cached read-only snapshots. STELLAR_WIRECAPdebug 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
API referenceEvery public interface, record and enum in Stellar.Abstractions — generated from the XML docs.Open →Wire coverageEvery server message field the framework reads: what plugins can use, what still waits for a contributor.Open →Plugin galleryEvery plugin in the registry, with its source and the framework APIs it uses.Open →