Crossplay between Java and Bedrock works in one direction: Bedrock players join a Java server through Geyser, a protocol translator that runs as a plugin or mod on your server. Add Floodgate and Bedrock players do not even need to own a Java account. The minimum setup: install the Geyser plugin/mod, open UDP port 19132 alongside your normal Java port, and Bedrock phones, consoles, and tablets can connect to the same world as everyone else.

This guide covers the install on Paper and Fabric, the Floodgate authentication piece, the port situation on rented servers, and the part most tutorials skip: what Bedrock players actually experience, because the translation is good but not invisible.

Tested on: Minecraft Java Edition 26.2 (Paper and Fabric servers), with current Geyser and Floodgate builds from geysermc.org. Bedrock auto-updates on all platforms, and Geyser tracks the latest Bedrock protocol; expect to update Geyser within days of every Bedrock release, independent of your Java version.

RateJava TCP 25565, Bedrock UDP 19132 (different defaults)
XP levelGeyser translates protocol, Floodgate handles Bedrock identity
Build timeTwo separate downloads, two separate jobs
DifficultyIntermediate

How the pieces fit

Geyser and Floodgate are two different projects that solve two different problems, and it is worth being precise about which does what before installing either.

Geyser sits on your server listening for Bedrock connections (UDP, default port 19132, the standard Bedrock port). When a Bedrock client connects, Geyser translates every packet both ways: Bedrock movement and actions into Java protocol, Java world data into Bedrock terms. The Java server itself sees a normal Java player. Geyser alone is enough to let Bedrock players connect, but without Floodgate they still need a real, paid Java account to log in through it, because Geyser on its own just forwards the connection to Mojang's normal Java authentication.

Floodgate solves authentication, and only authentication. It does not translate any gameplay packets; that is entirely Geyser's job. Without Floodgate, a Bedrock player must own and log into a paid Java account through Geyser, which defeats the point for console and mobile players who own only a Bedrock license. With Floodgate installed, Bedrock players authenticate with their Xbox account instead and join under their gamertag with a configurable prefix, . by default, so Steve on Bedrock appears as .Steve. The prefix prevents name collisions with real Java accounts, and the server keeps online-mode=true: Java players are still verified by Mojang, Bedrock players by Xbox Live through Floodgate. Do not disable online-mode for crossplay; it is neither needed nor safe, as covered in the server.properties guide.

Put simply: run Geyser alone if every Bedrock player already owns Java and is fine using that account. Add Floodgate the moment any of your Bedrock players are Bedrock-only, which in practice is most console and mobile players.

Plugin, mod, or standalone: which Geyser to run

Geyser ships in several forms and picking the wrong one is a common setup mistake:

  • Plugin (Spigot/Paper, Velocity, BungeeCord, Sponge). The right default for almost every server. Running inside the same process as Paper gives Geyser direct access to world data, which means lower memory use and more accurate translation than talking to the server over the network. This is the form covered in the walkthrough below.
  • Mod (Fabric, NeoForge). Functionally the plugin equivalent for mod loaders. Same direct-access benefits, same config layout philosophy, just packaged as a mod jar instead of a plugin jar.
  • Standalone proxy. A separate process that runs independently of the game server, useful in two cases: joining a server that has not installed Geyser itself (you run standalone locally, pointed at that server), or a large network where you want to update or restart Geyser without touching the backend servers at all, or offload its CPU cost onto a separate machine. For a typical single survival server, standalone adds an extra process to manage for no benefit over the plugin/mod form.

For the common case, a home or small community Java server, plugin or mod is the right choice, matching whichever your server already runs.

Install on Paper (the common case)

  1. Download Geyser-Spigot and Floodgate-Spigot from the GeyserMC download page (always from geysermc.org; the project moves fast and mirrors go stale).
  2. Drop both jars into plugins/, restart the server.
  3. Geyser generates plugins/Geyser-Spigot/config.yml. Two values matter on day one: under bedrock, the port (default 19132), and under remote, set auth-type: floodgate so Geyser hands authentication to Floodgate.
  4. Restart again. The console logs "Started Geyser on 0.0.0.0:19132" when it is listening.
  5. From a Bedrock device: Servers tab, Add Server, your server's IP, port 19132. Consoles cannot add servers natively; players there use the well-known BedrockTogether app or a DNS workaround, which is a client-side concern you can link your players to.

On Fabric, the same flow with the Geyser-Fabric and Floodgate-Fabric mods in mods/ (alongside your performance mod stack; they coexist fine). Config lands in the config/ folder. A modded server still only translates vanilla-equivalent gameplay for Bedrock players: custom mod blocks and items do not exist on the Bedrock side, so Geyser on heavily modded servers suits servers where mods are server-side optimizations rather than new content.

Ports, firewalls, and rented servers

Java uses TCP (default 25565), Bedrock uses UDP 19132. Both must be reachable. Self-hosting: forward UDP 19132 in your router in addition to your existing TCP forward; cloud VPS: open it in the provider's firewall too.

On rented game hosting, you often get exactly one port number. The standard trick: in Geyser's config, set the Bedrock port to the same number as your Java port. TCP and UDP are separate namespaces, so the numbers do not clash, and most panels open both protocols on your allocated port. Many hosts also offer Geyser as a one-click install that configures this for you; it is worth checking the hosting comparison for which panels treat crossplay as a first-class feature rather than a support ticket.

Geyser adds CPU overhead per Bedrock player (every packet is translated) and a modest fixed memory cost. For sizing, treat each Bedrock player as roughly a Java player plus translation overhead; the RAM guidance applies unchanged, with CPU mattering a bit more than usual.

Whitelisting and managing Bedrock players

Floodgate players are not in Mojang's name database, so /whitelist add .Steve from the console fails to resolve offline: the vanilla whitelist looks up names via Mojang. The two reliable approaches: add the player while they are connected (the server then knows the UUID Floodgate derived from their Xbox identity), or temporarily disable the whitelist for their first join. The same applies to /op. Once added, they persist in whitelist.json and ops.json like anyone else; the mechanics are the same as in our whitelist and permissions guide.

Bans, kicks, and player-targeting commands all work normally once the player has joined at least once: from the server's perspective they are players with stable UUIDs.

Account linking: what changes with and without Floodgate

Without Floodgate, a Bedrock player connecting through Geyser is prompted to log into an actual Java account (Microsoft login, same as any Java client), and everything downstream, whitelist entries, permissions, stats, treats them exactly like a Java player, because as far as the server can tell, they are one. This works but requires every Bedrock player to separately own a Java license, which console and many mobile players simply do not have.

With Floodgate installed, the player instead authenticates through their existing Xbox Live account (the one tied to their Bedrock copy of the game already), and Floodgate hands the server a generated UUID plus the prefixed name. No Java purchase, no separate login step beyond what they already do to launch Bedrock. Some Geyser/Floodgate setups additionally support a linking command that lets a Bedrock player connect their Floodgate identity to a real Java account they own, useful if they want their skin or existing Java-side data to carry over; this is optional and unrelated to whether they can join at all. The takeaway for server admins: if you skip Floodgate, budget for support requests from Bedrock players who cannot log in because they do not own Java.

What does not translate (set expectations)

Geyser's translation is mature, but Bedrock and Java are different games at the edges. The honest list for your players:

  • Combat feel. Bedrock players get Java's combat rules (attack cooldown) since the server is Java. Bedrock-native players will notice the timing difference; PvP that feels normal on a Bedrock Realm feels different here.
  • Redstone behavior is Java's. The server simulates Java redstone, which is actually a gift for Bedrock players: every Java redstone guide applies, including quasi-connectivity, because the simulation is entirely server-side.
  • Visual approximations. A few blocks, particles, and entity animations render as nearest-equivalents on Bedrock. Custom server resource packs need a separately converted Bedrock version.
  • Forms and UI. Inventory edge cases (notably off-hand interactions) behave slightly differently; Geyser maps Bedrock's UI onto Java semantics and the seams occasionally show.
  • Performance on the client. Low-end phones struggle with high view distances; Geyser caps some settings per client automatically.
  • Java-only mechanics stay Java-only in one direction. Bedrock players connecting to your Java server get the real Java mechanics (this is a plus, not a limit, for things like redstone). What Bedrock players cannot bring with them is Bedrock-exclusive content: Bedrock marketplace items, Bedrock-only blocks, and Bedrock's own add-on system have no Java equivalent and simply do not exist on this server, because the world is a Java world.

Pros

  • Bedrock players get the real Java redstone, command, and world-generation behavior, not a simplified copy
  • One shared world for mixed friend groups instead of maintaining separate Java and Bedrock servers
  • Setup is a plugin/mod drop-in, no server rewrite needed

Cons

  • Combat timing feels different to Bedrock-native players used to Bedrock's own combat model
  • Custom resource packs and any Bedrock-exclusive content do not carry over
  • Consoles cannot enter a server IP directly, adding a client-side hurdle for those players specifically

None of these break shared survival. Mixed groups build, fight, and trade in the same world; the differences read as quirks, not blockers.

FAQ

Can Bedrock players join a Java server?

Yes, through Geyser, which translates the Bedrock protocol to Java on your server. With Floodgate added, they sign in with their Xbox account and need no Java license.

What port does Geyser use?

UDP 19132 by default, alongside your normal Java TCP port. On single-port hosting, set Geyser's Bedrock port to the same number as the Java port; TCP and UDP do not conflict.

Can Java players join a Bedrock (Realms/BDS) server instead?

Not with Geyser; the translation runs one way, Bedrock clients into Java servers. For a mixed group, host Java and let Bedrock players connect through Geyser.

Do Bedrock players need to install anything?

On phones and Windows, no: they add the server IP and port in the Servers tab. Consoles cannot enter arbitrary IPs natively and need the BedrockTogether app or a DNS workaround.

Why does my Bedrock friend get kicked with a whitelist error?

Floodgate names (with the dot prefix) cannot be resolved through Mojang's API while the player is offline. Add them to the whitelist while they are connected, or disable the whitelist for their first join, then re-enable it.

What is the actual difference between Geyser and Floodgate?

Geyser translates the network protocol so a Bedrock client can talk to a Java server at all; that is its entire job. Floodgate handles login, letting Bedrock players authenticate with Xbox Live instead of a paid Java account. You can run Geyser without Floodgate if every Bedrock player already owns Java; you cannot get Xbox-only login without Floodgate.

Should I run Geyser as a plugin, a mod, or standalone?

Plugin (Paper/Spigot/Velocity) or mod (Fabric/NeoForge) for almost every server, matching whatever your server already runs; both give Geyser direct world access for better performance. Standalone is for joining a server that has not installed Geyser itself, or for large networks that want to manage Geyser separately from the backend servers.


Updated for Minecraft 26.2 on September 9, 2026. Geyser tracks Bedrock releases continuously; when either side ships a major update, this guide is re-checked and the log updated.