Complete PluginContext interface reference.

Server Plugin API Reference

PluginDefinition

interface PluginDefinition {
  name: string;
  version: string;
  author?: string;
  description?: string;
  register(ctx: PluginContext): void | Promise<void>;
  unregister?(): void | Promise<void>;
}

PluginContext

interface PluginContext {
  // Event System
  eventBus: EventBus;
  // Subscribe: eventBus.on(event, handler)

// Entities & Zones (read-only) entities: EntityRegistry; zones: ZoneManager;

// Chat Commands registerCommand( name: string, handler: CommandHandler, options?: CommandOptions ): void;

// Custom Intents registerIntent( intentType: string, handler: IntentHandler ): void;

// Messaging sendSystemMessage(entityId: string, msg: string): void; broadcastSystemMessage(msg: string): void;

// Client Communication sendToClient(entityId: string, channel: string, data: any): void; broadcastToClients(channel: string, data: any): void; onClientMessage( channel: string, handler: (entityId: string, data: any) => void | Promise<void> ): () => void;

// Timers setInterval(cb: () => void, ms: number): () => void; setTimeout(cb: () => void, ms: number): () => void;

// Data Store getData<T>(key: string): T | undefined; setData<T>(key: string, value: T): void;

// Logging log: PluginLogger; }

CommandHandler

type CommandHandler = (
  entityId: string,
  args: string[],
  rawMessage: string
) => void | Promise<void>;

CommandOptions

interface CommandOptions {
  description?: string;
  usage?: string;
  minArgs?: number;
  adminOnly?: boolean;
}

IntentHandler

type IntentHandler = (
  entityId: string,
  data: any
) => void | Promise<void>;

PluginLogger

interface PluginLogger {
  info(msg: string, ...args: any[]): void;
  warn(msg: string, ...args: any[]): void;
  error(msg: string, ...args: any[]): void;
  debug(msg: string, ...args: any[]): void;
}