Complete ClientPluginContext interface reference.
Client Plugin API Reference
ClientPluginContext
interface ClientPluginContext {
pluginName: string;
// Server Communication
send(channel: string, data: any): void;
on(channel: string, handler: (data: any) => void): () => void;
onServerMessage(type: string, handler: (msg: any) => void): () => void;
// Game State
getState(): ClientPluginGameState;
onStateChange(handler: () => void): () => void;
// HUD Widgets
createWidget(config: WidgetConfig): string;
updateWidget(id: string, updates: Partial<WidgetConfig>): void;
removeWidget(id: string): void;
// Chat
addChatCommand(name: string, handler: (args: string[]) => void): () => void;
addLocalChatMessage(text: string, channel?: string): void;
// Timers
setInterval(cb: () => void, ms: number): () => void;
setTimeout(cb: () => void, ms: number): () => void;
// Logging
log: { info, warn, error, debug };
}
ClientPluginGameState
interface ClientPluginGameState {
selfId: string | null;
selfName: string;
selfPosition: { x: number; y: number };
currentZoneId: string | null;
currentZoneName: string | null;
selfHp: number;
selfMaxHp: number;
selfMp: number;
selfMaxMp: number;
selfSilver: number;
accountGold: number;
connected: boolean;
isDead: boolean;
isMounted: boolean;
playerLevel: number;
inventory: ItemInstance[];
equipment: Map<string, ItemInstance>;
skills: Map<string, CharacterSkill>;
activeEffects: StatusEffect[];
activeQuests: Quest[];
party: Party | null;
guild: Guild | null;
chatMessages: ChatMessage[];
entities: Map<string, GameEntity>;
survival: SurvivalVitals;
environment: EnvironmentState;
}
WidgetConfig
interface WidgetConfig {
html: string;
css?: string;
position?: { x: number; y: number };
anchor?: "top-left" | "top-right" | "bottom-left" | "bottom-right" | "center";
width?: number;
height?: number;
visible?: boolean;
zIndex?: number;
draggable?: boolean;
onClick?: () => void;
}