Letting Bedrock players join

Updated 13 Oct 2026

Why Bedrock cannot just connect

Minecraft comes in two editions that are not the same game underneath. Java Edition (the one your server runs) speaks its own protocol over TCP. Bedrock Edition, which is what phones, tablets, consoles and the Microsoft Store version run, speaks a different protocol over UDP and cannot read a Java server at all.

Bridging them takes a translator called Geyser, which speaks Bedrock to the player and Java to your server. A second piece, Floodgate, lets those players in without owning a Java account.

PieceDoesNeeded?
GeyserTranslates the protocolAlways
FloodgateLets Bedrock players join without a Java accountAlmost always
ViaVersionLets different Java versions connectUnrelated: different problem
Without Floodgate, everyone needs a Java account

Geyser alone will translate the connection, but your server still asks Mojang to verify a Java account that a Bedrock player does not have. Floodgate is what makes it work for players who only own Bedrock, which is the entire point for most servers.

Decide where Geyser goes

This is the decision that matters, and getting it wrong is the most common reason a setup half works. Geyser can run as a plugin on your server, or as its own standalone process.

SetupPut GeyserWhy
One Paper serverAs a plugin on itSimplest, nothing else to run
Several servers behind a proxyAs a plugin on the proxyOne entry point, players keep their session across servers
Several unrelated serversStandalone, onceOne translator serves them all
Never install Geyser on backend servers behind a proxy

If you run a proxy, Geyser belongs on the proxy and nowhere else. Installed on a backend as well, it fights the proxy over the player's session and produces disconnects on every server switch that look like network faults and are not. One Geyser per network.

Floodgate follows the same rule, with one addition: if Geyser is on your proxy, Floodgate goes on the proxy and on every backend server, so each one recognises the Bedrock player it is handed.

Install it

Download Geyser-Spigot.jar and floodgate-spigot.jar for a single Paper server, or the Velocity or BungeeCord builds if you are putting them on a proxy. Upload both to /plugins and restart fully. See Installing your first plugins if the upload is new to you.

Match the pair to the platform

Geyser and Floodgate both ship per-platform builds. A Spigot Floodgate on a Velocity proxy will not load, and the error only says the plugin failed to enable. Download both from the same place at the same time so their versions line up.

After the restart, plugins/Geyser-Spigot/config.yml exists. The lines that matter:

plugins/Geyser-Spigot/config.yml
bedrock:
  # The port Bedrock players connect to. Must be a port
  # your plan actually has allocated.
  port: 19132

remote:
  # Leave as auto on a single server - Geyser finds it itself.
  address: auto
  port: auto
  auth-type: floodgate

auth-type: floodgate is the setting that makes Bedrock-only players work. If you leave it at online, every Bedrock player is asked for a Java account and bounces.

Give it a UDP port

Bedrock uses UDP, not TCP, and on its own port. This is the second place setups go wrong: the plugin loads cleanly, the console looks healthy, and nobody can connect, because the port it is listening on was never allocated.

Open the Network tab and check your allocations. You need a port assigned to your server for Geyser, and bedrock.port in the config must be that exact number. Then restart and confirm Geyser says it started:

Console
[Geyser-Spigot] Started Geyser on 0.0.0.0:19132
[Geyser-Spigot] Done (2.145s)! Run /geyser help for help!
19132 is only the default

Bedrock clients assume 19132 when no port is typed, which is why it is worth having if it is free. It often is not, because it is one port shared across a node. Any allocated port works . Players just have to type it, the same as any non-default Java port.

Tell players how to join

Bedrock cannot read SRV records, so the tidy play.example.net address with no port that works in Java will not work here. Bedrock players need the address and the port as two separate fields.

EditionWhat they enter
Javaplay.example.net
Bedrock: Server Addressplay.example.net
Bedrock: Port19132 (or whatever you allocated)

On consoles, adding a server by address is restricted and players normally need a DNS app or a featured-server workaround. That is a limitation of the platform, not of your setup, and there is nothing to fix server-side.

Publish the port, always

Put the address and port on your store page, Discord and MOTD. Most “Bedrock is broken” reports are a player who typed the address alone and got a timeout, because Java players never have to think about the port.

What changes once Bedrock players are on

Two practical differences worth knowing before you advertise it.

Names carry a prefix

Floodgate prefixes Bedrock usernames, by default a dot, so .Steve. This keeps them from colliding with Java names, and it matters for anything that takes a name as input:

Console
whitelist add .Steve
ban .Steve

You can change the prefix in Floodgate's config, but do not remove it entirely. Without it a Bedrock player can take a Java player's name.

Not everything translates

Geyser does a lot, but Bedrock has no equivalent for some Java features. Custom resource packs, complex inventory GUIs and anything built on Java-only mechanics may look wrong or not appear. Keep your core gameplay out of fancy custom inventories if Bedrock players are a real part of your audience.

Bedrock updates break Geyser until you update it

When Mojang ships a Bedrock update, clients get it automatically and your Geyser does not. Players then see “Outdated server” or “Outdated Geyser proxy”, often within hours and with no change on your side. The fix is always the same: update the Geyser jar and restart. Expect this a few times a year.

Troubleshooting

The server does not appear in the Bedrock list at all

Almost always the port. Check the console says Started Geyser on 0.0.0.0:<port>, then check that same port is allocated in the Network tab, then check players are entering it in the Port field rather than appending it to the address. If Geyser never logged a start line, it failed to load. Look further up for the reason.

“Outdated server” or “Outdated Geyser proxy”

Bedrock updated and Geyser has not. Replace the Geyser jar with the current build and restart. This is also the one case where it is worth updating straight away rather than waiting. Until you do, no Bedrock player can join.

Bedrock players are kicked asking them to log in

auth-type is not set to floodgate, or Floodgate is missing or failed to load. On a proxy network, check Floodgate is on the proxy and on each backend. A missing backend copy kicks the player on the first server switch rather than at the door, which makes it look like a different fault.

They join but get disconnected moving between servers

Geyser is installed in more than one place. Remove it from the backend servers and keep it only on the proxy. See also Linking servers with Velocity.

Whitelist or bans will not match a Bedrock player

Include the Floodgate prefix: .Steve, not Steve. If you are typing it from chat, copy it rather than retyping, since the prefix is easy to miss.

Bedrock still not connecting? Open a ticket with your server ID and the port you allocated, and we will check it is reachable from outside.
Open a ticket

More guides