HyServerSelector
HyServerSelector is a Hytale server selector + router for multi-server networks.
It uses a HUB & SPOKE setup:
- HUB (Lobby): accepts TCP links from spokes and shows the full network list.
- SPOKE (Game servers): connects to the hub and can transfer players via hub routing.
Use it to run a network like: Lobby → HollowCrown → Everroot → etc

Features
- Server Selector UI (
/ss)
- Server cards (region tab, type badge, player count, ping, optional MOTD line, favorites)
- List updates when you change filters, region, or search; live tick refresh while the UI stays open is off by default in code (can be enabled for development)
- Cross-server routing
- Hub knows where each spoke lives (game host/port)
- Spokes ask hub to resolve transfers
- Region tabs
- Tabs from
MenuConfig.json5
- Optional tab permissions (LuckPerms)
- Permissions
- Gate
/ss
- Gate CONNECT per-server with optional node
- Optional portal system (WIP)
portals.json5 config exists
- Item/block wiring depends on Hytale item/block APIs
Commands
/ss
- Opens the server selector UI
/server <serverId>
- Transfers you to a server by id
/lobby
- Transfers you to the lobby server id (configurable)
/ss p <portalName>
- Portal item helper (requires item API wiring; may be stubbed)
/ss configkey
- Portal config key helper (requires item API wiring; may be stubbed)
Ping shown in /ss
- Your current server: shows your real client ping (tab-list RTT).
- Other servers: shows hub link RTT (HUB ↔ spoke TCP), not your client ping.
Reason: the server cannot measure your client RTT to a server you are not connected to.
Install
- Drop the mod/plugin JAR into your server’s plugins/mods folder (whatever your Hytale server build uses).
- Start the server once.
- Edit generated config files in
mods/HyServerSelector/.
- Restart.
Configuration
Config files are generated on first run:
mods/HyServerSelector/config.json5
serverId, secret, gameHost, gamePort, display fields
mods/HyServerSelector/Forwarder/hub.json5
- set
"enabled": true on the HUB
- choose listen host/port
mods/HyServerSelector/Forwarder/spoke.json5
- set
"enabled": true on each SPOKE
- set hub host/port
mods/HyServerSelector/MenuConfig.json5
- region tabs, labels, tab permissions
mods/HyServerSelector/portals.json5
- named portals (UI or server transfer)
Permissions (LuckPerms)
This mod integrates with LuckPerms.
Common nodes:
- Use
/ss: hyserverselector.serverselector
- Portal admin:
hyserverselector.portal.admin
- Optional per-server CONNECT node: set
connectPermission in config.json5 on that server
Notes / Limits
- Player transfer call depends on official Hytale transfer API.
- Portal item / block events depend on official Hytale item + block event APIs.
- Server display data is read from the Hytale game
Config.json when present (same fields as the stock server file). The mod resolves several relative paths (game root vs Server/ cwd, Config.json / config.json on case-sensitive filesystems, parent folder). Useful keys include:
ServerName → card title (else serverId)
MaxPlayers → current / max
MOTD or Description → subtitle line under the name
Version → forwarded to the hub for display metadata
- Enable
debug: true in mods/HyServerSelector/config.json5 to log which path was loaded (helps Docker / wrong cwd).
Support
If something looks wrong, enable debug in mods/HyServerSelector/config.json5 and check server logs.