Description
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)
- Tabs from
- Permissions
- Gate
/ss - Gate CONNECT per-server with optional node
- Gate
- Optional portal system (WIP)
portals.json5config 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.json5serverId,secret,gameHost,gamePort, display fields
mods/HyServerSelector/Forwarder/hub.json5- set
"enabled": trueon the HUB - choose listen host/port
- set
mods/HyServerSelector/Forwarder/spoke.json5- set
"enabled": trueon each SPOKE - set hub host/port
- set
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
connectPermissioninconfig.json5on 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.jsonwhen present (same fields as the stock server file). The mod resolves several relative paths (game root vsServer/cwd,Config.json/config.jsonon case-sensitive filesystems, parent folder). Useful keys include:ServerName→ card title (elseserverId)MaxPlayers→current / maxMOTDorDescription→ subtitle line under the nameVersion→ forwarded to the hub for display metadata
- Enable
debug: trueinmods/HyServerSelector/config.json5to 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.
