IPluginServices interface
The single object passed to every plugin’s constructor. Plugins obtain all framework capabilities by reading sub-services from here.
public interface IPluginServicesMembers
Section titled “Members”| name | description |
|---|---|
| BossVitals { get; } | Native boss-HP tap — reads the same merged entity store the game’s own boss bar reads, immune to the combat wire mirror’s AOI-eviction (see GetVitals for the wire-derived fallback). |
| Chat { get; } | Chat message stream and send API. |
| ClientState { get; } | Player session state (logged-in, current scene, login/logout events). |
| CombatEvents { get; } | Real-time combat event stream (damage, buffs, skill casts). |
| CombatLookup { get; } | Lookup service for static combat data (skill tables, buff tables). |
| CombatSnapshot { get; } | Snapshot of the most-recent combat state for all tracked entities. |
| CombatSpec { get; } | Per-entity active sub-profession (spec), resolved from observed combat casts. |
| Config { get; } | Plugin-scoped persistent configuration (JSON-backed key-value store). |
| Data { get; } | Per-plugin binary file storage for data too large/opaque for Config (e.g. re-upload payloads). |
| DeepSlumber { get; } | Live Deep-Slumber Psychoscope (season cultivate) state — level, lines, socketed cards, node levels. Read live per call; never sourced from a saved profile. |
| Dungeon { get; } | Current dungeon run: per-run unique id (level_uuid) and clear-time/score once the run settles. |
| EntityContextMenu { get; } | Row context-menu extension point (register entity-scoped menu items). |
| EntityDetail { get; } | Per-entity detail (full attribute map + equipment) for the inspector. |
| EntityPortrait { get; } | Live 3D portrait of the local player (Entity Inspector). Self-only in v1. |
| EntityTransforms { get; } | Reads live world transforms (position + facing) of entities by id — for replay/position capture. |
| Exchange { get; } | The inter-plugin communication channel — a plugin offers a contract via Provide<T> and another consumes it via Consume<T>, without referencing each other. The ONE generic extension point for plugin-to-plugin cooperation; specific contracts live in a shared contracts assembly. |
| Framework { get; } | Framework lifecycle events and the per-tick Update callback. |
| GameAssets { get; } | Game asset loader — profession/class icons and other atlased UI sprites. |
| GameData { get; } | Read-only lookup over the game’s static table data (skills, buffs, items, etc.). |
| GameEnvironment { get; } | Region + version identity of the running game install (SEA / JP), detected once at boot. |
| GameEvents { get; } | Game lifecycle events (scene load / unload, hot-update ready). |
| Harmony { get; } | Per-plugin Harmony host — create id-namespaced Harmony instances that are auto-unpatched when the plugin is disposed. |
| Hotkeys { get; } | Bindable keyboard-action registration. |
| Inventory { get; } | Player inventory — item stacks and currency. |
| Launcher { get; } | Register a tile in the Stellar launcher menu (Phase B). |
| Loadout { get; } | Read and apply the player’s saved in-game loadouts (class + gear + spec + modules). |
| LoadoutSave { get; } | Save the worn setup into another saved loadout (the game’s own loadout Save). See ILoadoutSave. |
| Localization { get; } | Localizes this plugin’s own UI text into the active UI language (English fallback). |
| Log { get; } | Plugin-scoped log sink; output is routed to the BepInEx log with the plugin name as prefix. |
| Lua { get; } | Bridge to the game’s live tolua# Lua state (run chunks, read simple globals back). Main-thread only. |
| Market { get; } | The in-game player exchange/marketplace: query listings/care-list/notice items and buy through the game’s own trade system. (Named Market because Exchange is the inter-plugin channel.) |
| ModuleEquip { get; } | Module equip actions (install / uninstall equipment modules). |
| NamedTheme { get; } | Theme preset selector and global font scale. |
| NativeUi { get; } | Inject declarative mod uGUI into game-UI anchors (Phase 9d). |
| NoticeTips { get; } | Trigger the game’s noticetip system (dungeon bars, win/fail banners, pop-up tips) with full control over content and audio. |
| Notifications { get; } | Show short transient on-screen toasts (plugin-side feedback the game does not surface itself). |
| PartyControl { get; } | Party control — switch the party between 5- and 20-player via the game’s own dispatcher. |
| PartyEvents { get; } | Party lifecycle events (member join/leave, leader change). |
| PartyRoster { get; } | Party roster — member list and group/slot information. |
| PartySnapshot { get; } | Snapshot of the current party roster and member vitals. |
| PlayerState { get; } | Local player’s real-time state: name, level, HP, stamina, position. |
| PlayerStats { get; } | Live character attribute snapshot (ATK, DEF, crit rate, etc.). |
| ProfileCardActions { get; } | Contribute buttons to the game’s native profile card action bar (the framework injects + styles them). |
| Resonance { get; } | Local player’s equipped Battle Imagines (Resonance Skills), in slot order. |
| ResonanceData { get; } | Static game-data lookups for Battle Imagines (Resonance Skills): display + cooldown/charge info, and cast-skill → resonance reverse mapping. |
| RunTimer { get; } | Run-timer identity anchor (value + latch epoch) for the current dungeon run — the upgrade-proof companion of Dungeon’s RunTimerStartMs. See IRunTimer for why run identity must compare the EPOCH, not the value. |
| Theme { get; } | Active theme palette, text helpers, and colour registry. |
| Wardrobe { get; } | Save and switch the local player’s worn cosmetic outfits (wardrobe). |
| WardrobePreview { get; } | Live 3D preview of the local player wearing an arbitrary saved outfit (wardrobe preview). |
| Windows { get; } | uGUI interactive window toolkit (SP1 window shell). |
See Also
Section titled “See Also”- namespace Stellar.Abstractions.Services