Skip to content
Current coupon:10% offUse it in your order

Crossplay: Bedrock players (mobile, consoles, Windows) on a Java server

Geyser and Floodgate step by step: installation, the Bedrock port on our servers, config.yml settings, joining from phones and consoles, a whitelist with the prefix and fixing Unable to connect to world.

  • advanced
  • ~25 min
  • Updated 2 Oct 2026

Java and Bedrock are two different editions of Minecraft that can't play together on their own. The Geyser plugin translates between them, so players on phones, Windows (Bedrock), Xbox, PlayStation or Switch can join your Java server too. With the Floodgate add-on, they don't even need a Java account. This guide covers the installation, the port setup and every important option.

What you'll need

  • A Minecraft server at StormHost running Paper or Purpur (or Fabric, NeoForge or a Velocity proxy)
  • A Minecraft version that Geyser supports (see Supported servers and versions)
  • Access to the Plugins, Files, Network and Server properties tabs
  • A server backup (guide)
  • About 25 minutes

How Geyser and Floodgate work#

Java Edition talks over TCP, Bedrock Edition over UDP and with a completely different protocol. Geyser runs as a plugin on your server, listens on a UDP port for Bedrock players and “presents” each of them to the server as a Java player.

GeyserFloodgate
What it's forTranslates between Bedrock and Java (both ways). Without it, Bedrock players can't connect at all.Lets Bedrock players in without a paid Java account; a Microsoft (Xbox) account is enough.
RequiredYesIn practice, yes – without it every Bedrock player would also need to own Java Edition.
Where it runsOn the server Bedrock players connect to (on a network, on the proxy)On the same server as Geyser (on a network, on the proxy and optionally on the backends too)

Floodgate adds a prefix to Bedrock players' names (a dot by default, for example .Steve123), so they don't get mixed up with Java players who have the same name.

Crossplay limitations

Some things Bedrock can't do and Geyser can't translate: clickable links in chat, the Glowing effect, telling left and right clicks apart in inventories, banners with more than 6 layers and more. Plugins with their own inventory menus usually work, but test them. The full list is on the Current Limitations (opens in a new window) page.

Supported servers and versions#

  • Server type: Paper or Purpur (Geyser-Spigot), Fabric and NeoForge (Geyser as a mod), or a Velocity proxy. Geyser doesn't work on Vanilla.
  • Minecraft version: Geyser connects to the server as a Java client of one specific version. As of October 1, 2026, it supports Java 26.2 and Bedrock 26.30–⁠26.51 (the current status is on the Supported versions (opens in a new window) page).
    • Server on an older version (Paper or Purpur 1.20.5 and newer): also install the ViaVersion plugin. On servers older than 1.20.5, Geyser doesn't work as a plugin.
    • Server on a newer version than Geyser supports yet (for example 26.3): the most reliable option is to wait for a Geyser update (watch the Supported versions page), or to create the new server on a supported version. The Geyser documentation only counts on ViaVersion for servers older than the supported version. The ViaVersion and ViaBackwards pair can bridge the gap for a while, but it isn't officially documented – only try it with a backup. The catalog in the Plugins tab won't offer you Geyser for such a version, so you'd upload Geyser-Spigot.jar by hand from geysermc.org/download (opens in a new window).
    • Geyser as a mod (Fabric, NeoForge) works only on the version Geyser currently supports.
  • UDP port: Bedrock connects over UDP. Our server ports work for both TCP and UDP, so you can use either the game port or an additional port (see below).

Installing on Paper and Purpur#

  1. Create a server backup in the Backups tab.

  2. Open the Plugins tab › Browse, choose Modrinth as the source and search for Geyser.

  3. On the Geyser project by GeyserMC, click Install and confirm.

    The catalog only shows versions for your server. If you can't find Geyser for your version, it most likely doesn't support it yet (see above).

  4. Download Floodgate for Spigot/Paper to your computer from the official page geysermc.org/download (opens in a new window) (the Floodgate-Spigot.jar file). On Modrinth, Floodgate is only available for Fabric and NeoForge.

  5. In the Files tab, open the plugins folder and upload the file with the Upload button. In the plugin list it will be marked Uploaded manually (you then keep track of its version and updates yourself).

  6. Restart the server.

    The console shows the line Started Geyser on 0.0.0.0:19132 (or Started Geyser on UDP port 19132), and the folders plugins/Geyser-Spigot and plugins/floodgate (with the key.pem file inside) are created.

Now set up the port and Floodgate.

The port for Bedrock players#

By default, Geyser listens on port 19132. That port doesn't belong to your server at StormHost, so nobody can connect on it. Pick one of two options:

Option A: the same port as JavaOption B: a separate port
What players enterThe same address and port as Java playersThe same address, but a different port
ProSimpler, doesn't use up another portDoesn't clash with other UDP services
ConQuery and other UDP plugins can't run on the game portUses up one of your additional ports
When to use itMost serversYou have Query or a UDP plugin (voice chat) running on the game port

The Java game uses TCP and Bedrock uses UDP, which is why they can share the same port number.

Option A: the same port as Java#

  1. In the Files tab, open plugins/Geyser-Spigot/config.yml.

  2. In the bedrock section, set clone-remote-port: true:

    plugins/Geyser-Spigot/config.ymlYAML
    bedrock:
      address: 0.0.0.0
      port: 19132
      clone-remote-port: true

    Don't change the port value – with clone-remote-port turned on, Geyser replaces it with the Java server's port on every start.

  3. Save the file (Ctrl+S).

Option B: a separate port#

  1. In the Network tab, under Additional ports, click Add port and note the new number.

  2. In the Files tab, open plugins/Geyser-Spigot/config.yml.

  3. In the bedrock section, enter the new port and leave clone-remote-port turned off:

    plugins/Geyser-Spigot/config.ymlYAML
    bedrock:
      address: 0.0.0.0
      port: <PORT>
      clone-remote-port: false

    Replace <PORT> with the port number from the Network tab, without the angle brackets, for example 27015.

  4. Save the file.

Setting up Floodgate#

  1. In plugins/Geyser-Spigot/config.yml, find the java section and set auth-type:

    plugins/Geyser-Spigot/config.ymlYAML
    java:
      auth-type: floodgate

    In older Geyser versions the section is called remote instead of java. The setting is the same.

  2. In the Server properties tab, in the Players group, turn off Require signed chat (enforce-secure-profile=false). Bedrock doesn't support chat signing, and Bedrock players wouldn't be able to chat otherwise.

  3. Click Save and restart.

The most important options in Geyser's config.yml#

SettingWhat it doesRecommended valueWhen to change it
bedrock.addressThe IP address Geyser listens on. 0.0.0.0 = all of them.0.0.0.0Don't change it.
bedrock.portThe UDP port for Bedrock players.The server's port (option B)When you change the port.
bedrock.clone-remote-portUses the Java server's port (option A).true for option A, otherwise falseWhen switching between the options.
java.auth-typeHow Bedrock players log in: floodgate (no Java account), online (must have a Java account), offline (no authentication, dangerous).floodgateonline only without Floodgate. Never offline on a public server.
motd.primary-motd, motd.secondary-motdThe first and second line of the description in the Bedrock server list.Your descriptionOnly used with passthrough-motd: false.
motd.passthrough-motdTakes the MOTD from the Java server.truefalse if you want a different description for Bedrock.
motd.passthrough-player-countsTakes the player and slot counts from the Java server.trueDon't change it.
gameplay.server-nameThe server name in Bedrock's pause menu and settings.Your server's nameAny time.
gameplay.show-coordinatesShows coordinates to Bedrock players.truefalse on servers where coordinates should stay secret (Java players always have them via F3).
gameplay.command-suggestionsSends command suggestions to Bedrock players. With hundreds of commands (lots of plugins), Bedrock can freeze the first time the command line is opened.truefalse if the game freezes for Bedrock players after typing /.
gameplay.xbox-achievements-enabledLets Bedrock players unlock Xbox achievements. An unknown command then shows up for the player as a message that cheats are disabled; other commands work.falsetrue if your players care about achievements.

A new way for Bedrock to connect

The latest Geyser versions also have a transport option in the bedrock section for a new way of connecting Bedrock clients (NetherNet). Leave the default value raknet until Geyser's documentation recommends changing it.

Floodgate: config.yml#

The plugins/floodgate/config.yml file:

SettingWhat it doesRecommended valueWhen to change it
username-prefixThe prefix in front of a Bedrock player's name."."Don't change it. Without a prefix, a Java and a Bedrock player could end up with the same name, and then teleports, bans and permissions break.
replace-spacesReplaces spaces in the Xbox name with an underscore.trueDon't change it – names with a space break most commands.
key-file-nameThe key file Geyser and Floodgate use to verify player data.key.pemDon't change it.
player-link.enabledAllows linking one player's Java and Bedrock accounts (they then share inventory and data).truefalse if you don't want linking.
player-link.require-linkOnly lets in Bedrock players with a linked Java account.falsetrue only on servers where you want to tie Bedrock players to a Java account.

Never share key.pem

The key.pem file lets anyone log in to the server as any Bedrock player without authentication. Don't share it, and don't put it in public backups or on GitHub.

Joining from Bedrock#

Bedrock players enter the address and the port separately (Bedrock doesn't use SRV records).

FieldWhat to enter
Server NameAny name, for example Muj server.
Server AddressThe server's IP address from the Network tab (without the port), our subdomain from the Domain tab, or your own domain.
PortOption A: the game port from the Network tab. Option B: the port set in bedrock.port.

In the game: Play › the Servers tab › Add Server, fill in the fields and click Save. More about addresses and domains in the guide Server address and domain.

Consoles (Xbox, PlayStation, Switch)#

Consoles only allow connections to selected servers. Players get to other servers through unofficial workarounds, typically the BedrockConnect service (changing DNS in the console's network settings) or apps that make the server visible on the local network. The steps for each console are described in Geyser's documentation on the Using Geyser with Consoles (opens in a new window) page. We don't run these services and can't guarantee they work.

Whitelist and permissions for Bedrock players#

  • Whitelist: use Floodgate's fwhitelist command without the prefix:

    text
    fwhitelist add Steve123
    fwhitelist remove Steve123
    • fwhitelist add – adds a Bedrock player to the whitelist (to whitelist.json).
    • Steve123 – the player's Xbox name without the leading dot.

    The regular whitelist add doesn't work for Bedrock players, because their names aren't in the Java account database.

  • Commands targeting a player (teleport, ban) use the name including the prefix, for example tp .Steve123.

  • LuckPerms: by default, LuckPerms rejects names with a dot. In plugins/LuckPerms/config.yml, set allow-invalid-usernames: true and restart the server (LuckPerms).

Geyser on a Velocity proxy#

On a network of servers behind a proxy, install Geyser and Floodgate only on the proxy. Bedrock players connect to the proxy's port, and the proxy sends them on to the servers.

  1. On Velocity, install Geyser and Floodgate for Velocity (both from geysermc.org/download (opens in a new window)).
  2. In Geyser's configuration on the proxy, set the port (option A or B as above) and auth-type: floodgate.
  3. In velocity.toml, set force-key-authentication = false, otherwise Bedrock players won't be able to chat.
  4. All servers behind the proxy must accept a Java client of the version Geyser supports – install ViaVersion on them if needed.

You only need Floodgate on the servers behind the proxy if plugins on those servers use its data. In that case, turn on send-floodgate-data: true in plugins/floodgate/config.yml on the proxy (the subfolder depends on the platform), install Floodgate on the backends and copy key.pem from the proxy to them. Details are in the guide A server network with Velocity.

Geyser on Fabric and NeoForge#

  1. In the Mods tab › Browse, install Geyser (on Fabric, the required Fabric API is added automatically).
  2. Install Floodgate (on Modrinth it's available for both Fabric and NeoForge).
  3. Restart the server and set the port and auth-type as above. Geyser's configuration is in config/Geyser-Fabric/config.yml (on NeoForge, config/Geyser-NeoForge/config.yml).

Geyser as a mod only supports one Minecraft version, the newest supported one. You can't use it on an older modded server.

Verification#

  1. After the restart, look for the line Started Geyser on … with your port in the console.

  2. Run a reachability test in the console:

    text
    geyser connectiontest <IP_ADDRESS> <PORT>
    • geyser connectiontest – checks whether Geyser can be reached from outside and suggests what's wrong if it can't.
    • <IP_ADDRESS> – the server's IP address from the Network tab.
    • <PORT> – the Bedrock port (option A: the game port, option B: your additional port).
  3. Check the server with the Minecraft Status tool in Bedrock mode.

  4. Join from Bedrock. Once you're in, the console shows a line saying the player with the prefix joined, and geyser list shows their name.

Troubleshooting#

Bedrock: Unable to connect to world#

The most common error. Go through these one by one:

  • The player entered the wrong port. Option A: the game port, option B: the port from bedrock.port. Port 19132 doesn't work at StormHost.
  • Geyser isn't running on the port you expect. Check the Started Geyser on … line in the console.
  • Something else is running on the same UDP port (Query, voice chat). Switch to option B.
  • Run geyser connectiontest (see Verification) and follow its advice.
  • On a phone, try fully closing the game and opening it again.
  • The Geyser documentation says ports below 10,000 sometimes cause trouble. If you can, pick a higher port.

Outdated Bedrock client! This server supports the following Bedrock versions: …#

The player has a different Bedrock version than Geyser supports. The player updates the game, or you update Geyser (in the Plugins tab › Check for updates; Floodgate uploaded by hand has to be updated by hand).

This server does not support Java Edition …, which is required for Geyser to connect.#

The server version differs from the version Geyser emulates. Install ViaVersion (and ViaBackwards for a newer server), or update Geyser.

This server requires a paid Java account.#

Geyser has auth-type: online, or Floodgate isn't running. Install Floodgate, set auth-type: floodgate and restart.

Please log into Xbox to join this server.#

The player isn't signed in to the game with a Microsoft account. Floodgate requires an Xbox account – the player signs in from the game settings.

Tried to log in as a Java Edition player! Is Floodgate set up correctly?#

Floodgate isn't running on the server or didn't load. Look for Floodgate errors in the console during startup and check that the plugins folder has the Spigot/Paper file.

javax.crypto.AEADBadTagException: Tag mismatch!#

Geyser and Floodgate are using different keys. Stop the server, delete the plugins/floodgate folder and any key file in Geyser's folder, then start the server – a new key is created.

Bedrock players can't chat#

enforce-secure-profile is turned on (on a Velocity proxy, force-key-authentication). Turn it off and restart.

A Bedrock player isn't on the whitelist#

Add them with fwhitelist add <NICK> without the dot, not with whitelist add.

Summary

  • Geyser translates Bedrock to Java, and Floodgate lets Bedrock players in without a Java account (auth-type: floodgate).
  • Port 19132 doesn't work at StormHost: either clone-remote-port: true (the same port as Java), or an additional port from the Network tab.
  • Query and other UDP plugins must not run on Geyser's port.
  • Turn off enforce-secure-profile, otherwise Bedrock players can't chat.
  • Bedrock players enter the address and port separately; use fwhitelist for the whitelist.
  • Never give key.pem to anyone.

Was this guide helpful?

Applies to

  • Paper, Purpur
  • Fabric, NeoForge
  • Velocity
  • Minecraft Bedrock (mobile, Windows, Xbox, PlayStation, Switch)

Services

Report a mistake in this guide

Search the guides