Documentation menu

Server registry

Servers announce themselves on boot and heartbeat automatically. The registry tracks live presence, host, port and player counts so matchmaking and transfers always see real state.

The registry is the network’s live picture of itself: which servers exist, where they are, whether they’re accepting players, and how full they are. Everything else (matchmaking, transfers, the dashboard) reads from it, so a routing decision always reflects real presence rather than a stale list.

Registration is automatic

You don’t wire this up by hand. When a server boots with the Hive core plugin, it registers itself (id, type, host, port, capacity and game state) and starts sending heartbeats. The hub marks a server gone when its heartbeat stops, so presence is self-healing: crash a box and it simply drops out of matchmaking.

A server’s region is resolved once from its address, so a globally-spread network gets region-aware routing for free. A NAT’d or containerized server can report a self-detected public IP for geolocation while still advertising a private host.

Read the directory

When you need the live picture yourself, for a server selector GUI, a custom /servers command, or your own tooling, read it through the SDK. Calls are async.

Directory.java
// A page of online "skywars" servers in Europe (search=null, page 0, 50/page).
hive.server().listServers("skywars", /* online */ true, null, Region.EUROPE, 0, 50)
    .thenAccept(page -> page.items().forEach(e ->
        System.out.println(e.serverId() + " · online=" + e.online())));

// Who's online on a server type right now.
hive.server().onlinePlayers("lobby")
    .thenAccept(players -> updateTabList(players));
CallWhat it does
listServers(type, online, search, region, page, limit)a page of servers, filtered by type, presence, a search term and region
onlinePlayers(type)the players currently online on a server type

listServers returns a ServerDirectoryPage of ServerDirectoryEntry records - each carries the id, type, display name, last host/port, online flag and geo region, plus the live ServerInfo (current/max players, joinable state) when the server is up. null filters are simply ignored, so pass only the ones you want.

Presence feeds everything

The same heartbeats and player-join/leave signals the core plugin sends are what power the rest of the platform:

  • Matchmaking reads capacity, joinable state and “needs N to start” straight from presence, so a match is never stale.
  • Transfers resolve the target’s live host and port from the registry before moving a player.
  • The dashboard shows your servers and their player counts in real time.

Current limits

Shipped narrow and honest. Today that means presence, the directory and player lookups. A push stream of registry changes and richer per-server metrics are still landing alongside the Hytale beta.

Need a presence webhook or a metric that isn’t here? Ask us - we answer fast.