Servers
The Servers module maintains the network's list of Minecraft server entries - connection addresses, display names, and a type (internal, external, or verification) - and powers the public "how to play" page. It's the canonical place staff go when a server's IP changes or a new server is added to the network's connect instructions.
📸 Screenshot: The /play page listing the network's connect addresses
This is a static connect-address directory, not to be confused with Mixed's live PGM server status page at /mixed/servers - that's a separate, unrelated concept showing real-time match-server heartbeats.
The Public Page​
Visit /play to see how to connect. The page shows every server marked as External - the addresses meant to be given out to players. Internal and verification-only servers are excluded from this list. The page is read-only; there's no other player interaction.
For Staff​
Servers are managed from Dashboard → Servers (requires zander.web.server).
📸 Screenshot: The servers admin list ordered by display position, with create/edit/delete actions
Server Fields​
| Field | Description |
|---|---|
| Display Name | Name shown for this server entry |
| Server Type | Internal, External, or Verification |
| Connection Address | The IP/hostname players connect to |
| Position | Controls display order in both the dashboard list and the public /play page |
All create, edit, and delete actions are audit-logged.
Only servers marked External ever appear on /play. Use Internal for servers that shouldn't be advertised to players, and Verification for servers used in account-linking flows.
Feature Toggle​
"server": false
Disabling features.server gates both the public /play page and the dashboard/API routes.
Behind the scenes, the actions that add, edit, or delete a server don't check permissions on their own - right now they're only protected because the dashboard form that calls them already requires zander.web.server. In practice this means access is safe as long as staff only make changes through the dashboard, but it's flagged as a gap worth closing so the underlying action is checked directly too, not just the form in front of it.