Geyser and Floodgate: Let Bedrock Players Join Your Java Server
How to set up crossplay with Geyser and Floodgate - the UDP port everyone forgets, the right auth type, what Bedrock players do not get, and why console players are their own problem.
What the two pieces do
You need both, and each solves half the problem:
| What it does | |
|---|---|
| Geyser | Translates between Bedrock and Java so a Bedrock client can talk to your Java server |
| Floodgate | Lets Bedrock players in without owning the Java edition, while your server stays in online mode |
Geyser can run without Floodgate - but then every single Bedrock player has to own a Java account and log in with it. That is rarely what you want.
With Floodgate you keep
online-mode=trueinserver.properties. Your Java players are still verified as normal. That is the whole point of Floodgate, and it is why you should not turn online mode off.
If you are unsure what the difference between the two editions even is, start with Minecraft Java vs. Bedrock Edition Explained.
Step 1 - Install both as plugins
On Paper, Spigot or Purpur you want the plugin builds. They are faster, have lower latency, and detect your server's address and port themselves.
- Stop the server in the Potionhost control panel.
- Download Geyser-Spigot and Floodgate from geysermc.org.
- Put both
.jarfiles inplugins/. - Start the server so they create their folders, then stop it again.
You now have:
plugins/
├── Geyser-Spigot/config.yml
└── floodgate/
├── config.yml
└── key.pem
Do not touch
key.pem. With Geyser and Floodgate on the same server, Geyser finds the key itself. A spare copy of the key in Geyser's own folder is itself a documented cause of failures.You only need to copy the key around if you run a proxy network - then every server needs the same
key.pem. Transfer it in binary mode, not ASCII, or it will be corrupted.And never share it with anyone. It is what lets Bedrock accounts bypass Java's login.
Step 2 - Set auth-type to floodgate
Open plugins/Geyser-Spigot/config.yml and find:
java:
auth-type: floodgate
The three options:
| Value | When |
|---|---|
floodgate |
What you want. Bedrock players get in without a Java account, the server stays in online mode |
online |
Without Floodgate. Every Bedrock player must own a Java account and log in with it |
offline |
Only behind a proxy that handles login itself. Never as a shortcut |
offlineis not a shortcut for letting Bedrock players in. With that setting nobody is verified - anyone can join under any name, including yours, and inherit your permissions and your items. That is exactly what Floodgate exists to prevent.
Note that the configuration was restructured. The section used to be called
remote:and is nowjava:. MOTD settings live undermotd:, andserver-namemoved togameplay:. Geyser rewrites old files itself, but many guides still show the old paths.
Step 3 - Open the UDP port
This is the most common reason nothing works.
| Who | Port | Protocol |
|---|---|---|
| Java players | 25565 |
TCP |
| Bedrock players | 19132 |
UDP |
The Bedrock port is in addition - it does not replace the Java port. Both have to be open at the same time.
Bedrock uses UDP. Open 19132 as TCP and absolutely nothing happens. It is the single mistake behind most "Unable to connect to world" reports.
If your plan only gives you one port, there is a setting for that:
bedrock:
clone-remote-port: true
It makes Geyser use the same port number as the Java server. If you were assigned a separate UDP port, do not use this - just set bedrock.port to the port you were given.
Step 4 - Start and test
Start the server and check Console. Geyser prints that it is listening on the Bedrock port.
How a Bedrock player joins:
- Play → Servers tab. Not Friends
- Scroll past the featured servers to Add Server
- Address: your server address. Port: 19132
- Save, then join
Bedrock does not support SRV records. If your Java server runs without a port number via an SRV record, that address will not work for Bedrock players. Give them the IP address or a name with a normal A record.
Console players
Xbox, PlayStation and Switch cannot add third-party servers on their own. That is a restriction from Microsoft and Sony, not something you or we can change.
Third-party workarounds exist - BedrockConnect via a DNS change on the console, or an app that makes the server appear as a LAN game. They work, but they are not something we can support. Tell your players honestly up front and save yourself the tickets.
What Bedrock players do not get
Worth knowing in advance so you can answer straight away:
- Client mods do not work. GeyserMC's own rule of thumb: if a plain vanilla client can join your server, so can Bedrock. If your server requires a mod on the player's side, Bedrock is out
- Resource packs are not converted automatically. To have your pack on Bedrock you have to supply a Bedrock version in
.mcpackformat - Chest menus behave differently. Geyser cannot distinguish right-click from left-click in inventories, which breaks some GUI plugins
- Clickable chat links do not work, and command autocompletion is limited
- Combat feels different - Bedrock has no Java-style weapon cooldown
- A few visual things are missing: the glowing effect, banner layers past six, invisible item frames
Versions - the thing to watch
Geyser does not automatically follow new Bedrock versions. It supports a fixed list, and a version is only supported once a new Geyser build adds it.
Combined with the fact that Bedrock updates itself automatically on every platform, that means your Bedrock players are locked out the moment Mojang ships an update your Geyser predates.
Keep Geyser updated, and do it promptly after every Bedrock update. Leave the new-version warning enabled so the console tells you.
The error Outdated client! Please use <version> on a Bedrock player almost always means Geyser needs updating - not the server.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
Unable to connect to world |
The port was opened as TCP instead of UDP | Open 19132 as UDP |
Unable to connect to world (2) |
The player is using the Java port | They need the Bedrock port |
| Works on the same network but not from outside | UDP not open externally | Check the firewall and the port |
Invalid IP address! |
The address uses an SRV record | Give them the IP or an A record |
Please connect through the official Geyser |
key.pem does not match between Floodgate and Geyser |
Use the same key everywhere and delete spare copies |
Cannot reply to EncryptionRequestPacket |
A spare key.pem in Geyser's folder, or auth-type not matching the server's online mode |
Delete the spare key and restart |
Tag mismatch |
The key was corrupted in transfer | Delete the Floodgate folder, restart so the key is regenerated, and transfer in binary |
| Bedrock players have default skins | Floodgate is missing on the server that sees logins | Install Floodgate |
| MOTD and player counts are wrong | motd.passthrough-motd or passthrough-player-counts |
Both default to true - check they were not changed |
| A name change does not take effect | Old cache | Delete usercache.json and restart |
| Paper rejects the Bedrock name | The dot in front of the name | Disable username validation in Paper's config |
| Commands fail on Bedrock names | The prefix | The default prefix is a dot. Do not use * - it breaks commands |
| The Bedrock client freezes on the command list | Too many commands | Turn off gameplay.command-suggestions |
Bedrock players get a dot in front of their name by default - for example
.Player123. That is deliberate, so they cannot collide with real Java usernames. To change it, look inplugins/floodgate/config.ymlunderusername-prefix. Keep it to something that is not a letter.
Good advice
- Install Floodgate from day one. Running Geyser alone and switching later leaves you with a UUID mess.
- Leave
online-modeontrue. Floodgate is built precisely so you can. - Test from an actual Bedrock device yourself before telling your players it works.
- State clearly that console players need a third-party workaround - preferably before they ask.
- Update Geyser immediately after a Bedrock update. It is the only maintenance this needs.
Can your Bedrock players not get in? Send us the error from their screen along with a section of the server console from startup.