The cross-server backend for a Minecraft network on Paper, Folia and Velocity. Matchmaking, one shared economy, network-wide moderation and worlds on demand, each behind a single SDK call. Here is what you get, and the call that drives it.
Players queue from the lobby and HiveScale routes them to the best instance anywhere on the network, then transfers them. Boot a fresh SkyWars arena per match, or keep a pool of Bedwars games warm.
// Queue a player from the lobby into SkyWars.
hive.matchmaking()
.findServer(player.uuid(), player.name(), "skywars")
.thenAccept(result -> {
if (result.isSuccess())
hive.transfer(player, result.matchedServer());
}); One profile per player, not one per box. Coins, ranks, stats and playtime read the same on every server, so the economy is shared and perks travel from server to server.
// On join: load the network-wide profile and balances.
hive.player()
.fetchPlayerData(player.uuid(), player.name(), "lobby", GameType.MINECRAFT)
.thenAccept(data -> welcome(player, data.getCurrencies())); Bans, mutes and kicks apply across every Paper server and the Velocity proxy at once, and survive reconnects.
// Ban by name across the whole network, even while offline.
hive.punishments().createPunishmentByName(
"Griefer123", PunishmentType.BAN, "Raiding", null,
/* ipBased */ true, mod.uuid(), mod.name()); Boot an arena or a saved world on any node the moment it is needed, route the player in, and let it sleep when the round ends.
// Open a world on demand on any node, then route the player in.
hive.worlds().openPlayerWorld(player.uuid(), "skyblock", "island")
.thenAccept(route -> { /* READY: send them now. LOADING: wait, then send. */ }); Add the SDK to your plugins and run the Hive core plugin on each box. Every Paper and Folia server, and the Velocity proxy, announces itself to the registry and heartbeats on boot, so the network always knows what is live. Your code just talks to it.
// Once at startup, in your plugin. The Hive core plugin
// already announced this box to the network on boot.
HiveSdk hive = HiveSdk.create(HiveSdkConfig.builder()
.baseUrl("https://hub.hivescale.dev")
.apiKey(System.getenv("HIVE_API_KEY"))
.build()); Don't want to touch infrastructure? HiveScale provisions game servers straight into your own Hetzner Cloud, so control and billing stay with you while we keep them wired to your network.
Point your Paper, Folia and Velocity servers at one API key and the whole network is yours to talk to.