Skip to content
Version 2.11.0
↓ Get the launcher

IClientState interface

Player session state plus the client-phase and UI-state signals. Session state (IsLoggedIn/Login/Logout) and client phase (Phase) are distinct concepts that coexist — they correlate today but answer different questions.

public interface IClientState
name description
CurrentSceneName { get; } Identifier (currently a numeric scene id, not a friendly name) for the active scene.
IsLoggedIn { get; } True when a character is fully loaded and in-world (same condition as IsAvailable).
IsWorldActive { get; } True in a stable world scene, false mid-transition (the world-connect / scene-switch handshake). Stricter than Phase == World — also false during in-world zone loads. This is the ONLY protective gate: every unit that touches live game state self-gates on it.
Phase { get; } Current client phase — read for the initial state (e.g. in a plugin ctor) or on demand. A signal: the framework gates nothing on it. Use for window visibility.
UiState { get; } Informational in-world UI flags (None while at the title screen). The framework detects and exposes this but never gates on it; a plugin’s ShouldRender may read it.
event Login Fired once when the player finishes loading into the world (in-world ready).
event Logout Fired once when the player disconnects or returns to character select.
event PhaseChanged Fires on each phase transition; the payload carries both the previous and next phase.
event SceneChanged Fired when the active scene changes. Argument is the new scene identifier, or null when no scene is active.