Bedrock and Java together, Geyser and Floodgate setup honestly reviewed

Oct 25, 20256 min read

Bedrock and Java together, Geyser and Floodgate setup honestly reviewed

Java and Bedrock are different games. Different protocols, different physics, different inventory mechanics, different command behavior. They look the same on the surface, but under the hood, they are independent products.

Geyser and Floodgate, two projects from the GeyserMC team, let Bedrock players join Java servers. They work better than you'd expect and worse than the marketing suggests. This article tells you when they're worth setting up and when they aren't.

What each one does, visualized

Bedrock protocol
UDP 19132

Java protocol
TCP 25565

Authenticated UUID

Bedrock client
phone, Xbox, Switch, Win10

GEYSER
Translates Bedrock packets
into Java protocol on the fly

FLOODGATE
Bridges Microsoft / Xbox Live
auth into Java's UUID system

Java server
Paper, Forge, vanilla

Geyser is a protocol translator. It listens on a Bedrock port, accepts Bedrock connections, and translates the packets to Java protocol on the fly. From the Java server's perspective, the Bedrock player looks like a slightly-quirky Java player.

Floodgate is an authentication bridge. Bedrock players are authenticated through Microsoft / Xbox Live, not Minecraft's Java auth. Floodgate accepts their auth tokens and creates "FloodgateUUID" players that the Java server can recognize.

You almost always run both together. Geyser alone requires Bedrock players to have a paid Java account. Floodgate eliminates that.

What works well

For the most part, Bedrock players can:

  • Join the server, walk around, place and break blocks.
  • Interact with most chests and inventories.
  • Use most commands.
  • See chat messages, send chat messages.
  • Mine, craft, fight mobs.
  • Build coherently with Java players.
  • Play on most plugins (chat, economy, basic claims, vanilla-style gameplay).

For a casual SMP, Geyser + Floodgate is a near-magical experience. Your phone-using friend can play with your Java-using friend, on the same world, fairly seamlessly.

What doesn't work well

A non-trivial list:

Area Reality
Inventory layouts Bedrock has different recipes, stack sizes, crafting UI. Plugin GUIs may misrender.
PvP combat Java has 1.9 attack-cooldown. Bedrock has no cooldown. Mixed PvP is unbalanced.
Redstone Bedrock timing differs from Java. Builds may behave oddly.
Custom resource packs Java packs don't transfer fully. Bedrock players see vanilla textures for many custom items.
Command-block adventures Many break or behave oddly for Bedrock players.
Anti-cheat plugins Frequently false-positive on Bedrock players.
Cosmetic / GUI plugins Often unusable, click events don't translate.

If your server is a casual survival with vanilla-ish gameplay, this list barely affects you. If your server is a competitive minigame or a tightly-tuned PvP arena, this list is a dealbreaker.

Installation: the short version

Geyser can run in three modes:

  • As a Spigot/Paper plugin. Easiest. One server, two ports.
  • As a Bungee/Velocity plugin. Good for networks.
  • As a standalone proxy. Most flexible, most setup.

For a single Paper server hosting a Bedrock-friendly community, the plugin install is the right choice.

  1. Download Geyser-Spigot.jar from the Geyser releases page.
  2. Download Floodgate-Spigot.jar from the GeyserMC releases page.
  3. Drop both in plugins/.
  4. Restart the server.
  5. Both plugins generate config files in plugins/Geyser-Spigot/ and plugins/floodgate/.

In Geyser config:

bedrock:
  port: 19132
  motd1: "Your server name"
remote:
  address: auto
  port: 25565

The bedrock port (19132) is what Bedrock players connect to. The remote section is how Geyser reaches your Java server (auto means "same machine, look up the port").

For Floodgate, the defaults are usually fine. The plugin generates a key file (key.pem) which Geyser needs to read; in plugin mode, this happens automatically.

Networking

You need to open the Bedrock UDP port (default 19132). This is in addition to your usual Java TCP port (25565). On most paid hosts, you request the extra port through your panel.

Players connect:

  • Java: play.yourserver.com on port 25565.
  • Bedrock: play.yourserver.com on port 19132 (often configured in their game's server list).

If you have a custom domain, you can add a Bedrock-friendly SRV record so Bedrock players don't have to type the port:

_minecraft._udp.bedrock.yourserver.com SRV 0 10 19132 host.yourserver.com

(Note: Bedrock's SRV behavior is unique. Read the GeyserMC docs for the latest.)

Authentication trade-offs

Floodgate creates Bedrock players with "Bedrock-style" UUIDs that are distinct from Java UUIDs.

This matters because:

  • A Java player and a Bedrock player are different players to your plugins, even if they're the same human. Permissions, balances, claims are tracked separately.
  • If a player switches platforms, they don't carry over.

You can pair this with a "link" plugin (LinkedAccounts and similar) that lets a player connect their Java and Bedrock accounts, but it's an extra step.

Most servers just accept this. "If you play on Bedrock, your save is your Bedrock save. Same for Java." Simple, no edge cases.

Performance considerations

Geyser adds some CPU overhead on the host. Translating packets in real time isn't free. For a single-digit Bedrock player count, the overhead is negligible. For 20+ Bedrock players, you'll notice it.

Tips:

  • Run Geyser on the same host as Paper for lowest latency. Cross-host networking adds delay.
  • Consider running Geyser as a standalone proxy on a separate machine for very large servers.
  • Keep Geyser updated. Performance improves regularly with new releases.

Common problems and fixes

Bedrock players can't connect.

  • Confirm UDP port is open on the host's firewall.
  • Confirm Geyser is listening on the right port (netstat -an | grep 19132).
  • On console editions, connecting to third-party "external" servers may require enabling third-party servers in the Xbox or PlayStation account settings. On mobile and Windows, players use the "Add Server" option directly.

Bedrock players see different blocks / textures.

  • Geyser uses Bedrock vanilla textures by default for everything. Custom Java resource packs don't transfer.
  • Consider creating a parallel Bedrock resource pack and using Geyser's pack-pushing config to send it.

Chat from Bedrock shows up garbled or with weird formatting.

  • Some color codes don't translate. Use only colors Bedrock supports if you want consistent chat.

Plugin commands don't work for Bedrock players.

  • Many slash-command UIs depend on Java-specific input. Bedrock players may need to type commands fully or use plugins that don't rely on click-to-execute.

Floodgate prefix everywhere.

  • By default Floodgate prefixes Bedrock usernames with . (e.g., .Steve). This can interact oddly with some plugins. Configure in floodgate/config.yml.

When to bother

Use Geyser + Floodgate if:

  • Your community has casual Bedrock players you'd lose otherwise.
  • You're running a survival or casual SMP.
  • You're willing to accept the limitations on PvP / redstone / plugins.

Don't bother if:

  • You're running a competitive Java-specific server.
  • Your community is 100 percent Java already.
  • You don't want to maintain another integration.

Should you install it? Decision tree

No

Yes

Survival / casual SMP

Competitive PvP / minigames

Heavy redstone or
command-block adventures

Modded server

Yes

No

Considering Geyser + Floodgate

Any friends or players
on Bedrock you'd
otherwise lose?

Don't bother. More moving parts
without benefit

Your server style?

Strong fit. Install.

Skip. Bedrock PvP timing
differs from Java

Skip. Bedrock players
will see broken builds

Skip. Geyser does not
bridge mods

Can you open
UDP 19132 on the host?

Install Geyser + Floodgate.
Drop both jars in plugins/

Talk to your host first.
UDP port is non-negotiable

A working example

Real config we run on a casual SMP, edited slightly for clarity:

bedrock:
  address: 0.0.0.0
  port: 19132
  motd1: "MyServer"
  motd2: "Bedrock + Java together"
  server-name: "MyServer"
  compression-level: 6

remote:
  address: auto
  port: 25565
  auth-type: floodgate

floodgate-key-file: key.pem

With Floodgate's default config, this lets a Bedrock player on a phone join the same world as a Java player on a PC. They can build together. The Bedrock player has the . prefix; we don't bother changing it.

Conclusion

Geyser and Floodgate are great tools and well worth setting up for casual cross-platform servers. They are not magic, and they don't make a Java server feel native to Bedrock players. Understand the limits before you commit, and your community gets a real cross-play experience that mostly works.


Hosting your game server with AndroHost means we handle most of what's in this post for you automatically: tier sizing, SRV records, off-site backups, DDoS protection.

Browse plans·More posts·Discord