Geyser and Floodgate

Cross-play

How Bedrock, premium Java, and cracked Java players are kept apart so identities never collide.

The clip shows, in order:

  1. Every session declares one identity type.
  2. Same name, different account, never merged.
  3. Premium Java, cracked Java and Bedrock apart.

#Identity types

Every session declares one identity type, and the API validates the identifier against it. A Bedrock player and a Java player with the same visible name never merge into one profile.

identityTypeIdentifierWhere it comes from
premium_javaMojang UUIDThe Mojang session server
bedrockFloodgate XUIDFloodgate, from the Xbox Live account
cracked_javaUsername, plus a login confirmation when one exists, and a Mojang UUID after a premium loginThe server, nLogin if you run it, and the Velocity proxy after a premium login

#How a player is matched

A premium Java player is matched on the UUID, so a name change keeps their history. A Bedrock player is matched on the XUID for the same reason. A cracked player has neither, so the username is the identity on that network and nowhere else.

A Java player counts as premium only when the proxy runs in online mode, or the server does when there is no proxy. On a network that lets cracked players in, every Java player is kept as cracked, including players who own the game.

One thing is added on such a network, from connector 1.0.12 on a Velocity proxy: the Mojang account of a player who logs in through premium login. With nLogin on the proxy, the connector takes it when nLogin reports that it finished a premium login, from nLogin's own record of that account. With FastLogin or LibreLogin, which have Velocity itself check the player with Mojang, it is read from the profile Mojang signed for that login. The player stays cracked under the same name, and their Mojang UUID is stored next to it, so their Tebex purchases match.

It is never taken from a name alone. A cracked player wearing a premium player's skin gets nothing, because nobody checked their login with Mojang. If another player on your network already holds that Mojang UUID, for example from a time the proxy ran in online mode, the two stay apart. A standalone Paper server in offline mode keeps every Java player cracked, with no Mojang UUID.

Install Floodgate alongside the connector on the proxy, or on the backend when you run standalone. No extra connector configuration is needed.