Cross-Play: Bedrock Players on Java Servers

Set up GeyserMC and Floodgate: Let Java and Bedrock players play together on your Minecraft server.

What Is GeyserMC?

GeyserMC is a translation layer that allows Bedrock Edition clients (Windows 10/11, Xbox, PlayStation, Switch, mobile) to connect to Java Edition servers. It translates packets between the Bedrock and Java protocols in real time.

This means Bedrock players can join your Java server without you running a separate Bedrock server. Java and Bedrock players share the same world, chat, and economy.

How It Works

Bedrock Client  -->  GeyserMC  -->  Java Server
(Xbox/PS/Mobile/Win10)  (Translation)  (Paper/Spigot/Fabric)

GeyserMC translates network packets, block/item IDs, and game mechanics between the two editions. The translation happens transparently — Java players see Bedrock players as regular players and vice versa.

Installation Methods

Running Geyser as a plugin is the simplest and most performant option. It has direct access to server internals, reducing translation overhead.

  1. Download Geyser-Spigot from the official GeyserMC downloads page or Modrinth
  2. Place the .jar in your /plugins folder
  3. Restart the server
  4. Geyser generates its configuration in /plugins/Geyser-Spigot/

As a Fabric Mod

  1. Download Geyser-Fabric from the official GeyserMC downloads page
  2. Place the .jar in your /mods folder alongside Fabric API
  3. Restart the server
  4. Configuration appears in /config/Geyser-Fabric/

As a Standalone Proxy

For advanced setups (BungeeCord, Velocity), Geyser can run as a standalone proxy:

  1. Download Geyser-Standalone
  2. Place it in a separate directory on your server
  3. Configure config.yml to point to your Java server’s address
  4. Run Geyser separately from your Minecraft server

This method adds a small latency overhead but allows Bedrock connections to be routed through a proxy layer.

Floodgate Authentication

Floodgate is a companion plugin that handles Bedrock player authentication. Since Bedrock players log in with Microsoft/Xbox accounts (not Java accounts), Floodgate provides a way to identify them.

Why Floodgate Is Needed

  • Bedrock players do not have Java usernames or UUIDs
  • Floodgate assigns Bedrock players a unique UUID and prefixed username (default prefix: .)
  • Without Floodgate, Bedrock players may be unable to join if online-mode=true

Installation

  1. Download Floodgate from the GeyserMC downloads page
  2. Place the .jar in /plugins (Paper/Spigot) or /mods (Fabric)
  3. Restart the server
  4. Configure /plugins/floodgate/config.yml as needed

Key Floodgate Configuration

# floodgate/config.yml

# Username prefix for Bedrock players (prevents name conflicts)
username-prefix: "."

# Should Bedrock players be linked to Java accounts?
auto-login-front-end: true

# Store Bedrock player data
enable-proxy-protocol: false

The username prefix distinguishes Bedrock players from Java players. If a Java player is named “Steve” and a Bedrock player’s gamertag is “Steve”, the Bedrock player appears as ”.Steve” on the server.

Geyser Configuration

The main Geyser configuration file is located at:

  • Plugin: /plugins/Geyser-Spigot/config.yml
  • Fabric: /config/Geyser-Fabric/config.yml
  • Standalone: <geyser-directory>/config.yml

Essential Settings

# Geyser config.yml

bedrock:
  # Port Bedrock clients connect to (must differ from Java port)
  port: 19132

  # The address Geyser binds to
  # Use "0.0.0.0" to listen on all interfaces
  address: "0.0.0.0"

  # The Minecraft Bedrock protocol version
  # Leave as "latest" for automatic detection
  bedrock-version: "latest"

remote:
  # Address of your Java server
  address: "127.0.0.1"

  # Port of your Java server
  port: 25565

  # Authentication type: "online", "offline", or "floodgate"
  auth-type: "floodgate"

Passthrough Settings

# Pass MOTD and player count from Java to Bedrock
passthrough-motd: true
passthrough-player-counts: true
passthrough-protocol-name: true

# Legacy ping passthrough (for BungeeCord/Velocity)
legacy-ping-passthrough: false

Connecting from Bedrock

Bedrock players connect using:

  • Server Address: Your server IP or domain
  • Port: The Bedrock port configured in Geyser (default: 19132)

On Xbox, PlayStation, and Switch, players add the server through the “Friends” tab or “Servers” tab. On mobile and Windows 10/11, players add it through the “Servers” tab in the Play menu.

Known Limitations

GeyserMC handles most gameplay well, but some differences between Bedrock and Java editions cannot be fully translated:

Block and Item Differences

  • Some blocks have slightly different properties or appearances
  • Redstone behavior differs between editions (complex contraptions may not work identically)
  • Some Java-exclusive blocks render as substitutes on Bedrock clients

Combat and Movement

  • Bedrock combat timing differs from Java (attack cooldown interpretation)
  • Movement physics have minor differences (bridging techniques, sprint-jumping)
  • Elytra behavior may feel slightly different for Bedrock players

UI and Inventory

  • Bedrock players see Bedrock-style UI elements
  • Some modded items or custom UIs may not render correctly
  • Chat formatting may differ

Unsupported Features

  • Java resource packs do not apply to Bedrock clients
  • Some complex mods may not translate correctly
  • Scoreboard display differences
  • Certain particle effects may differ

Performance Impact

GeyserMC adds moderate overhead to your server:

MetricImpact
RAM+256 to 512 MB
CPU per Bedrock playerSlightly higher than Java player
NetworkTranslation layer adds minimal latency

The plugin mode has the lowest overhead since it runs in the same JVM as the server. See RAM Requirements for sizing your server with Geyser included.

FAQ

Can Bedrock players join a Forge or Fabric modded server?

Technically yes through Geyser, but with significant limitations. Many modded blocks and items have no Bedrock equivalent and will appear as placeholder blocks. For heavily modded servers, cross-play is not recommended.

Do Bedrock players need a Java account?

No. Bedrock players use their Microsoft/Xbox account. Floodgate handles authentication and assigns them a server identity separate from Java accounts.

Can I restrict the server to Java players only?

Yes. Remove GeyserMC from your plugins or set the Bedrock port to an unused value. Without Geyser active, Bedrock clients cannot connect.

Does Geyser work with Folia?

Geyser has limited Folia compatibility. Check the GeyserMC documentation for the latest Folia support status. For Folia servers, consider running Geyser in standalone proxy mode instead.

What happens if a Bedrock player and Java player have the same name?

Floodgate’s username prefix resolves this. The Bedrock player gets a prefix (default .), so “Steve” becomes ”.Steve”. You can configure a different prefix in Floodgate’s config.yml.

Can Bedrock players use Java resource packs?

No. Bedrock uses a different resource pack format. Bedrock players continue to use Bedrock resource packs. Custom server resource packs for Java players do not affect Bedrock clients.

Does Geyser support voice chat mods?

No. Voice chat mods (Plasmo Voice, Simple Voice Chat) use completely different networking on each platform and are not compatible through Geyser.

Where can I host a cross-play server?

Minecraft Server Hosting supports GeyserMC on Paper and Fabric servers. Open both the Java port (25565) and Bedrock port (19132) to allow both player types to connect. Frankfurt and Salt Lake City locations provide low latency for both Java and Bedrock players.