Turn your Hytale servers into one network. Link is a free, open-source plugin that lets players move between your servers without leaving the game.
Type /play skywars in the lobby and land in a game with room. No proxy, no database, no account.
What you can build
- A lobby that sends players to your minigames
- Several lobbies that share the players between them
- A menu or NPC in your own plugin that sends players to another server
Features
- One command to play.
/play skywarssends players to a game with room./server sw-1picks a specific one. - Secure by default. Every move carries a signed pass, so players can't fake one.
- See who is where.
/servers,/playersand/findshow every server and who is on it. - Fill games, spread lobbies. Fill the busiest game that still has room, or spread players evenly over lobbies.
- Servers join on their own with Redis or a free Cloudflare Worker. Or list them in one shared file.
- Keeps working when things break. If Redis or Cloudflare goes down, players can still move.
How the pass works
Hytale moves a player by telling their game to connect to another server, and the pass travels through that game. Before the other server lets the player in, it checks that the pass:
- is signed with your network's secret, so nobody can create or change one
- names this player and this server, so nobody else can use it
- is used once, within 30 seconds, so a copied or old pass is refused
If a check fails, Link treats it as a normal join, or sends the player back to your lobby if you turn that on.
Quick start
- Put the jar in the
modsfolder of every server. - Start each server once. Link creates
mods/Link_Link/link.json. - List all your servers in that file and copy it to every server. Only
serverIdis different on each one. - Restart, then type
/serversin game.
Every setting, and the Redis and Cloudflare setups, are in the docs.
Commands
/play <group>: join the best server in a group/server <name>: go to one server/servers [group]: list the network, or one group/players [server]: who is online in the network, or on one server/find <player>: which server a player is on/link: connection status (admins)
For plugin developers
LinkPlugin.play(player, "skywars"); // matchmake into a group
LinkPlugin.send(player, "sw-1"); // to one server
LinkPlugin.servers("lobby"); // every lobby
LinkPlugin.find("Steve"); // which server Steve is on
See the Java API.