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
As a Plugin (Paper/Spigot) — Recommended
Running Geyser as a plugin is the simplest and most performant option. It has direct access to server internals, reducing translation overhead.
- Download Geyser-Spigot from the official GeyserMC downloads page or Modrinth
- Place the
.jarin your/pluginsfolder - Restart the server
- Geyser generates its configuration in
/plugins/Geyser-Spigot/
As a Fabric Mod
- Download Geyser-Fabric from the official GeyserMC downloads page
- Place the
.jarin your/modsfolder alongside Fabric API - Restart the server
- Configuration appears in
/config/Geyser-Fabric/
As a Standalone Proxy
For advanced setups (BungeeCord, Velocity), Geyser can run as a standalone proxy:
- Download Geyser-Standalone
- Place it in a separate directory on your server
- Configure
config.ymlto point to your Java server’s address - 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
- Download Floodgate from the GeyserMC downloads page
- Place the
.jarin/plugins(Paper/Spigot) or/mods(Fabric) - Restart the server
- Configure
/plugins/floodgate/config.ymlas 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:
| Metric | Impact |
|---|---|
| RAM | +256 to 512 MB |
| CPU per Bedrock player | Slightly higher than Java player |
| Network | Translation 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.