Uniting Minecraft Java Edition and Bedrock Edition players (mobile phones, tablets, Xbox, PlayStation, Nintendo Switch, and Windows Bedrock clients) within a single server community is one of the highest-value capabilities for server administrators. The Geyser proxy plugin translates network packets between protocols; however, its default configuration mandates that Bedrock players authenticate against a paid Java Edition license. Installing the Floodgate companion plugin eliminates this barrier by enabling native Xbox Live authorization.
This guide walks through configuring Geyser and Floodgate on Paper and Purpur servers, establishing encryption handshakes, defining player username prefixes, and opening UDP port 19132.
How Geyser and Floodgate Coordinate Crossplay#
Minecraft Java Edition and Bedrock Edition use fundamentally distinct network transports, render engines, and block data specifications:
- Java Edition: Transports packets over TCP (default port 25565), verifying player credentials through Mojang session servers.
- Bedrock Edition: Transports packets over UDP using RakNet (default port 19132), binding identity directly to Microsoft Xbox Live accounts.
Geyser functions as an emulating translator: it listens on UDP port 19132, unpacks Bedrock datagrams, translates them into Java packet streams, and submits them to the local server engine.
Floodgate complements Geyser: it intercepts authentication handshakes and validates the Bedrock player's signed Xbox Live token. The plugin generates a synthetic Java profile backed by a deterministic UUID. Consequently, Bedrock players can connect without purchasing a separate Java Edition account.
Installing Plugins on Paper or Purpur Servers#
Download the current production releases of Geyser-Spigot and floodgate-spigot into the plugins/ directory:
cd /opt/minecraft/plugins
wget https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot -O Geyser-Spigot.jar
wget https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot -O floodgate-spigot.jar
Restart the Minecraft server daemon to generate default configuration files:
sudo systemctl restart minecraft
sudo journalctl -u minecraft -n 30 --no-pager | grep -i "geyser"
Following the restart, working folders plugins/Geyser-Spigot/ and plugins/floodgate/ will be generated.
Configuring Geyser: Listening Ports and Auth Mode#
Open the primary Geyser configuration file:
/opt/minecraft/plugins/Geyser-Spigot/config.yml
Configure the listener and link it to the local Java instance:
bedrock:
address: 0.0.0.0
port: 19132
clone-remote-port: false
motd1: "Geyser Crossplay Server"
motd2: "Java & Bedrock Together"
remote:
address: 127.0.0.1
port: 25565
auth-type: floodgate
The critical setting is auth-type: floodgate. This instructs Geyser to bypass Mojang Java account verification and rely on Floodgate for Xbox Live credentials.
Configuring Floodgate: Name Prefixes and Key Security#
Open the Floodgate configuration file:
/opt/minecraft/plugins/floodgate/config.yml
Configure the player username prefix:
username-prefix: "."
replace-spaces: true
username-prefix: "."— appends a dot before Bedrock player names (e.g.,.Alex). This eliminates naming conflicts if a Bedrock player shares a username with an existing Java account.replace-spaces: true— converts Xbox Live whitespace characters into underscores, preventing parsing errors inside permissions plugins such asLuckPerms.
Floodgate automatically creates a shared cryptographic key at plugins/floodgate/key.pem and passes it to Geyser. Verify strict permissions on this key file:
ls -l /opt/minecraft/plugins/floodgate/key.pem
chmod 600 /opt/minecraft/plugins/floodgate/key.pem
When managed via a modern server management panel, crossplay listeners and mobile firewall routing are provisioned automatically without manual YAML edits.
Firewall Configuration and UDP Port 19132 Forwarding#
The most common administrator misstep is opening port 19132 as TCP instead of UDP. Bedrock clients communicate strictly over UDP datagrams.
Configure UFW on the Linux host:
sudo ufw allow 25565/tcp comment "Minecraft Java Edition"
sudo ufw allow 19132/udp comment "Minecraft Bedrock Geyser"
sudo ufw status verbose
Verify that the UDP socket is actively listening:
sudo ss -ulnp | grep 19132
Restart the server process to load all configuration updates:
sudo systemctl restart minecraft
sudo journalctl -u minecraft -f --no-pager
Confirm that the server log outputs:
Started Geyser on 0.0.0.0:19132Players across smartphones, consoles, and desktop PCs can now join your Java world seamlessly without purchasing separate licenses.




