What Geyser and Floodgate do
Geyser translates between the two editions. Towards your server it acts like a Java client, so redstone, farms and plugins work exactly as for Java players. Floodgate lets Bedrock players log in with their Xbox account instead of a Java account.
| Plugin | Job | Where it runs |
|---|---|---|
| Geyser | Accepts Bedrock connections on a UDP port and translates them | Paper/Spigot server, or the proxy on a network |
| Floodgate | Login without a Java account, Bedrock names and skins | Same place as Geyser, optional on backend servers |
Before you start: Java and versions
- Geyser needs Java 21 or newer on the machine that runs it.
- Your server has to accept the newest Java version, because Geyser imitates such a client. Older servers need ViaVersion.
- Geyser-Spigot runs on Paper and Spigot from 1.20.5 upwards. Older servers need a proxy, Geyser Standalone or ViaProxy.
- Only current Bedrock versions are supported (October 2026: Bedrock 26.30 to 26.52, Java 26.2). Keep Geyser up to date, because Bedrock updates itself.
Download Geyser and Floodgate for your platform from the official GeyserMC download page.
Setup on a single Paper or Spigot server
- Put
Geyser-Spigot.jarandFloodgate-Spigot.jarinto thepluginsfolder. - Restart the server. Geyser creates
plugins/Geyser-Spigot/config.yml, Floodgate createsplugins/floodgate/withconfig.ymland akey.pem. - Open the Geyser config and check the
bedrocksection. Theportis what Bedrock players will type in. - Set the authentication type to
floodgateand restart again.
bedrock:
address: 0.0.0.0
port: 19132
clone-remote-port: false
java:
auth-type: floodgateOlder Geyser configs call the second section remote, so the setting is remote.auth-type. Current builds switch to Floodgate on their own when it runs on the same server; setting it does no harm.
On a single server, do not copy key.pem anywhere. Geyser reads it from Floodgate, and a leftover copy in the Geyser folder causes login errors.
Open the Bedrock port for UDP
Java uses TCP, Bedrock uses UDP. Most broken setups fail here.
- Hosting panel: add an extra port (many hosts call it an allocation) and enter it as
bedrock.port. Some hosts require Bedrock to use the same port as Java or change the Java port on every start; thereclone-remote-port: truemakes Geyser use the Java port. The Geyser setup page has instructions for many hosts. - Pterodactyl: allocate the port to the server in the Network tab.
- Own machine or VPS: open the port for UDP in the firewall and, at home, in the router. OVH and Oracle Cloud also block UDP in their own firewall.
sudo ufw allow 19132/udp
sudo ufw reloadVoice chat plugins or query cannot share the port with Geyser. Once the port is open, run geyser connectiontest <ip> <port> in the console; it checks the port and suggests fixes.
Setup on a Velocity or BungeeCord network
On a network, Bedrock players connect to the proxy just like Java players. Geyser therefore runs only on the proxy.
- Install Geyser and Floodgate for your proxy (Velocity or BungeeCord) and restart the proxy.
- Set the
bedrock.portand the authentication typefloodgatein Geyser's config on the proxy, and open the port for UDP as described above. - Install Floodgate-Spigot on every backend. It is required for plugins using the Floodgate API and improves skins.
- Set up forwarding: on BungeeCord set
ip_forward: truein itsconfig.ymlandbungeecord: truein each backend'sspigot.yml; on Velocity set up player information forwarding as described in the Velocity docs. - In Floodgate's config on the proxy, set
send-floodgate-data: true. - Copy
key.pemfrom the proxy's Floodgate folder into the Floodgate folder of every backend server, then restart the backends and the proxy.
send-floodgate-data: trueKeep key.pem secret: it lets accounts past Java authentication. Upload it via FTP in binary mode, or you get Tag mismatch errors.
Bedrock names: the dot prefix
Floodgate puts a prefix in front of every Bedrock name so it can never collide with a Java name. The default is a dot, so the Xbox gamertag Steve becomes .Steve on your server. Spaces in gamertags are replaced with _.
username-prefix: "."
replace-spaces: true- In commands, use the full name with the prefix. If a command does not accept it, put the name in quotes:
/tp ".Steve". - For the whitelist use
fwhitelist add Steve. The prefix is not needed there. - If LuckPerms has trouble with Bedrock names, set
allow-invalid-usernames: truein its config.
GeyserMC advises keeping the prefix. Bedrock players also vote with this name: on BestMCServerList they enter .Steve, the name your vote reward plugin sees.
Linked accounts and skins (optional)
Global Linking is enabled by default in Floodgate. Players who own both editions join link.geysermc.org with both accounts and type /linkaccount. After that they play with their Java inventory and location from either device, so they should move their Bedrock items first. A local link database needs an extra Floodgate extension.
Floodgate converts and uploads Bedrock skins so Java players see them. This runs through a queue and can take a while.
Common errors and fixes
| Symptom | Usual cause | Fix |
|---|---|---|
| "Unable to connect to world" | UDP port closed, wrong port or host setting | Open the port for UDP, follow your host's Geyser instructions, run geyser connectiontest |
| Works on Java, not on Bedrock | Port opened only for TCP | Bedrock needs UDP |
| "Invalid IP address!" | The domain only has an SRV record | Bedrock does not support SRV records. Enter the IPv4 address instead |
Address already in use on startup | Something else uses the port | Give Geyser its own UDP port |
| "Please connect through the official Geyser" | Outdated plugins or different key.pem files | Update Geyser and Floodgate, copy the proxy key again |
| "Outdated server" | Server too old for Geyser | Install ViaVersion or update the server |
Some things cannot be translated: left and right clicks in inventories look the same, commands without Brigadier get no tab completion, chat links are not clickable. Test menus with a real Bedrock device. Plugins can show native Bedrock forms via the Floodgate API, which needs Floodgate on their server.
Show both addresses on BestMCServerList
Bedrock players connect with your address plus the Bedrock port, for example play.example.net and 19132. BestMCServerList shows the Java and Bedrock address separately on every server page, each with a copy button.
- Open Add your server and enter your Java address.
- Tick Bedrock players are supported.
- Enter the Bedrock port from
bedrock.port. Leave the Bedrock IP empty if it is the same as the Java address.
Crossplay is a real advantage for a new server. See how to get players for a new server for the rest of the plan.