Write Plugin
Empostor has a powerful plugin system. This section covers everything you need to develop, publish, and use plugins.
Plugin Development
Getting Started
Writing a Plugin is the complete step-by-step guide:
- Install the .NET SDK
- Create a C# class library project
- Add the
Empostor.ApiNuGet package - Write your plugin class (extend
PluginBase) - Add event listeners (
IEventListenerwith[EventListener]attributes) - Register listeners in
EnableAsync() - Build, copy to
plugins/, and run
Topics covered: dependency injection, server configuration for plugin paths, using external libraries, and version compatibility.
Internationalization (i18n)
Internationalization (i18n) — translate your plugin into 15 languages using the IPluginLanguageProvider interface. Includes the LanguageString API for placeholder replacement and formatting. For text-file-based messages, see HelloWorld.txt.
Hello Page
Hello Page documents how Empostor serves a customizable home page at http://your-server:22023/. On startup, the server creates a Pages/index.html file that you can edit freely — changes take effect without restarting.
Built-in Plugins
Empostor ships with several plugins that demonstrate the plugin API:
| Plugin | Description | Docs |
|---|---|---|
| Boot.Codes | Replace random game codes with human-readable words like SUNSET, ROCKET. Uses custom word lists. | Boot.Codes |
| Message | Leave offline messages for players by friend code. Messages are delivered when the recipient joins. | Message Plugin |
| Player Channel | Cross-game chat channels based on friend codes. Communicate with friends across different lobbies. | Player Channel |
| Chat Manager | Log all in-game chat and enforce configurable message length limits for players and hosts. | Chat Manager |
| Map Vote | Players vote for the next map using chat commands. The most popular map is selected automatically. | Map Vote |
| Narrator | AI-powered strategic advisor during meetings. Uses DeepSeek AI to provide contextual advice. | Narrator |
| Player Statistics | Track persistent per-player game stats: wins, kills, tasks, and more. | Player Stats |
| Welcome Messages | Localized welcome messages with placeholders, remote content, and random selection. | Welcome |
| Title System | Assign display title prefixes to players by friend code. One-time-use titles via config or API. | Titles |
| QQ Verify | QQ number verification for linking game accounts to QQ accounts. | QQ Verify |
| Friend Code Validator | Validate friend codes against format patterns and a built-in dictionary. | Friend Code Validator |
| Server Monitor | HTTP API endpoints for server health checks and status monitoring. | Server Monitor |
| Privacy Policy | Serve and manage a customizable privacy policy page via admin API. | Privacy Policy |
| Discord Webhook | Send game events to Discord channels via webhooks. | Discord Webhook |
| Chat Filter | Filter blocked words and rate-limit spam in game chat. | Chat Filter |
| Fixed Room Code | Assign fixed/predictable room codes to specific players by friend code. | Boot.Codes |
| Example | Demo plugin showcasing the full Empostor plugin API. | Writing a Plugin |
Plugin Marketplace
The Plugin Marketplace allows server admins to browse and install plugins from the admin panel. Learn the plugins.json format to publish your own plugins:
- Plugin metadata (id, name, description, author)
- Version history with download URLs
- Minimum Empostor version requirements
- Multi-version support with version picker in the admin UI