Blog · From the bench

Crossplay without the lag: Geyser + Floodgate done right

The short header

Bedrock players in your Java lobby without running a second server: where Geyser sits, why Floodgate exists, and the four decisions that decide whether crossplay feels native or cursed.

Where Geyser actually sits

Geyser is a protocol translator — it speaks Bedrock to the client and Java to your backend. It runs two ways: as a plugin on the Paper server itself, or standalone next to the proxy. Standalone behind Velocity is the setup that survives growth: one translation service, many backends, and Bedrock players land in the same lobby as everyone else.

Keep it on the same machine at first. A translation hop over a WAN adds latency you will feel in movement sync, and the first thing Bedrock players notice is rubber-banding.

Floodgate and the auth problem

Without Floodgate, Bedrock players authenticate as offline-mode fakes — which means anyone can impersonate them by picking the same name. Floodgate issues real accounts keyed to Xbox identity, carries a name prefix (default .) so Bedrock names can never collide with Java ones, and lets you keep online-mode=true for everyone.

The rule I ship by: online-mode true, Floodgate, Geyser standalone. Never expose a cracked Java mode just because crossplay "needs" it — that door stays closed.

The lag nobody warns you about

Bedrock sends movement more often, in smaller packets, and Geyser rebroadcasts entity metadata it can't map cheaply. The symptom is specific: MSPT spikes when a Bedrock crowd gathers in one place, not when they join. The crowd is fine; the translation of forty entities in one chunk is not.

  • Cap per-player view distance in the Geyser config — Bedrock players don't need twenty chunks to play.
  • Keep holo-entity farms and armor-stand spam away from spawn; every one of them gets translated.
  • Update Geyser often. Perf work ships constantly and old builds are the #1 cause of "crossplay is laggy" tickets.

Skins, forms and the things that just won't translate

Skim the weird list before launch night: skins need the skin server reachable from your box (or a custom provider), Bedrock UI forms are one-way, chat-menu plugins behave differently on Bedrock clients, tab-complete is limited, and resource packs map differently. Budget one evening to click every menu as a Bedrock player — it's a shorter list every release, and none of it is a blocker.

Sources

GeyserMC wiki — read on October 2026

Floodgate — geeysermc.org — read on October 2026

About RnK

RnK is a Minecraft developer with six years in the game — plugins, server setups and performance work across Paper, Spigot and Folia backends. Three networks run day to day; the rest of the time is client work. The bench is open on Discord.

Read next

The restart that fixed everything (and the one that broke it)