Skip to content
Version 2.11.0
↓ Get the launcher

IPluginServices interface

The single object passed to every plugin’s constructor. Plugins obtain all framework capabilities by reading sub-services from here.

public interface IPluginServices
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).