Geyser and Floodgate in depth

What Geyser and Floodgate actually do on a Falix server — the preconfigured Version Changer variants, the extra UDP port, the config keys worth knowing, and linked accounts.

Bedrock, Java, and crossplay covers the big picture: run Geyser and your Bedrock friends can join a Java server. This guide goes one level deeper — what the two plugins each do, what Falix sets up for you, and the handful of config keys worth understanding before you point people at geysermc.org for the parts that move with every Minecraft version.

At a glance
You need A Java Minecraft server, running one of the Geyser options in the Version Changer
Plan Free plan is fine
Prerequisite Bedrock, Java, and crossplay for the basics

Two plugins, two jobs

They're often named in one breath, but Geyser and Floodgate do different things:

  • Geyser is a protocol translator. Your server still speaks Java; Geyser sits in front of it, translating a Bedrock player's packets into Java ones and back. It listens on its own UDP port so Bedrock clients have somewhere to connect.
  • Floodgate removes the account requirement. Without it, a Bedrock player joining through Geyser still needs to own a Java (Microsoft) account, because the Java server wants to authenticate them. Floodgate lets the server accept a Bedrock player on their Bedrock account alone — no Java purchase required.

You can run Geyser on its own (Bedrock players need a Java account), but almost everyone runs both.

What Falix sets up for you

In the Version Changer (opened from the Console page), Geyser isn't one entry — it's a small family, each one Geyser preconfigured on a different base server:

Version Changer option Base Pick it when
Geyser - Bedrock Bridge Purpur The default — a fast, plugin-capable base
Geyser PaperSpigot PaperSpigot You specifically want the Paper baseline
Geyser Spigot Spigot An older/very compatible plugin base
Geyser Pufferfish Pufferfish A performance-tuned plugin base
Geyser Fabric Fabric Crossplay on a Fabric-modded server
Geyser NeoForge NeoForge Crossplay on a NeoForge-modded server

Because these come preconfigured, the networking is already done: Falix allocates the extra UDP port for the Bedrock listener and wires Geyser's config to it, and Floodgate is set up to talk to Geyser. Your job is mostly to find that Bedrock port on the Network page and share it — Bedrock players type your address and that port in the two separate fields their client gives them.

🎯 Good to know: On the plugin-server bases (Purpur, Paper, Spigot, Pufferfish) the configs live under /plugins/Geyser-Spigot/config.yml and /plugins/floodgate/config.yml. On the modded bases (Fabric, NeoForge) Geyser is a mod, so its config sits under the server's config/ folder instead. Same keys, different home.

The config keys worth knowing

You rarely need to touch the networking keys — Falix set those. But a few keys explain how crossplay behaves, and you'll meet them in every Geyser tutorial:

Key Where What it controls
remote.auth-type Geyser config.yml How the server authenticates translated players. With Floodgate installed this is floodgate; the alternatives are online (needs a Java account) and offline
bedrock.port Geyser config.yml The UDP port Bedrock clients connect to — already set to your extra allocation, so leave it
username-prefix Floodgate config.yml A prefix stuck on Bedrock usernames so they never clash with a Java player's name. A dot (.) by default; many servers set it to nothing
player-link Floodgate config.yml Whether Bedrock and Java accounts can be linked (see below), and whether linking is required

After editing any of these in the File Manager, restart the server (or run /geyser reload) to apply.

⚠️ Heads up: Everything past these keys — supported Minecraft versions, packet-level options, extension APIs — changes with almost every release. Don't copy old config blocks off a forum. The current, version-matched reference is Geyser's own site: geysermc.org. Treat it as the source of truth.

Linked accounts

A Bedrock player and a Java player are, to the server, two different people — different UUIDs, different inventories, different everything. Account linking ties them together: link your Bedrock account to your Java account once, and you're the same player, with the same builds and balance, whichever edition you log in from.

There are two flavors, and they're a Floodgate feature:

  • Global linking — the player links through Geyser's hosted service and their link works on any server that has it enabled. This is the easy, recommended path for most servers.
  • Local linking — the server stores links itself (usually in a small database), so links only apply here. More setup; pick it only if you have a reason.

The player-facing command is /linkaccount. Because the exact steps and storage options shift over time, follow the current linking guide on geysermc.org rather than a fixed recipe here.

Skins mostly take care of themselves — Geyser translates a Bedrock player's skin onto their Java-side character automatically. When a skin looks off, it's nearly always a version or cache issue on Geyser's end, and its docs cover it.

Verify it works

  1. Start the server and watch the Console for the Done (…) line, then for Geyser and Floodgate reporting they enabled.
  2. Have a Java player join the normal way (name or address) — that proves the base server is healthy.
  3. Have a Bedrock player add your address and the extra UDP port in the separate fields and connect. If they get in and appear in the player list (with the prefix, if you kept one), crossplay is live.

Troubleshooting

  • Bedrock player can't connect at all — almost always the port. They must use the extra UDP port from the Network page, not your Java port, entered in the separate address/port fields.
  • "You must be logged in with a Java account" — Floodgate isn't doing its job. Check remote.auth-type is floodgate in Geyser's config and that Floodgate actually loaded (look for it in /plugins and in the console).
  • Two players with the same name / a name collision — that's what username-prefix prevents; if you set it to empty, a Bedrock player whose name matches a Java player's can conflict.
  • Bedrock world looks "wrong" — expected. It's a translated Java world; inventory, crafting, and some UI are Java-flavored. See the crossplay guide's honest limits.
  • Anything version-specific or skin-related — check geysermc.org; these are the parts that drift.

Next steps

Was this guide helpful?