
Your Java server works great. But half your friends play on Xbox, Switch, or their phone. They use Bedrock Edition and cannot connect to Java servers. GeyserMC fixes this by translating between the two protocols in real time.
What GeyserMC Actually Does
Java Edition and Bedrock Edition are completely different games under the hood. Different networking protocols, different inventory systems, different combat mechanics. GeyserMC sits between Bedrock players and your Java server, translating every packet so both sides understand each other.
Bedrock players connect to Geyser. Geyser converts their packets into Java format. The Java server thinks everyone is a Java player. When the server sends data back, Geyser converts it to Bedrock format.
What You Need
- A Java server running Paper, Spigot, or similar (Paper recommended)
- GeyserMC plugin
- Floodgate plugin (lets Bedrock players join without a Java account)
- UDP port 19132 open on your host
Step 1: Download Geyser and Floodgate
Download both plugins from geysermc.org/download
- Geyser-Spigot.jar (for Paper/Spigot servers)
- floodgate-spigot.jar
Place both .jar files in your plugins/ folder.
Step 2: Start the Server
Restart the server. Geyser and Floodgate generate their config folders. You will see messages in the console like:
[GeyserMC] Started Geyser on 0.0.0.0:19132
This means Geyser is listening for Bedrock connections on port 19132.
Step 3: Open the UDP Port
Bedrock uses UDP port 19132 by default. On most hosting panels:
- Go to your server's Network/Ports section
- Add port 19132 with UDP protocol
- Save
If your host does not support adding UDP ports through the panel, contact their support. This step is required. Without it, Bedrock players cannot connect.
Step 4: Configure Geyser
Edit plugins/Geyser-Spigot/config.yml:
bedrock:
address: 0.0.0.0
port: 19132
motd1: "My Server"
motd2: "Bedrock + Java Crossplay"
remote:
address: auto
port: auto
auth-type: floodgate
Setting auth-type to floodgate means Bedrock players do not need a Java account. They authenticate through their Xbox/Microsoft account.
Step 5: Configure Floodgate
Edit plugins/floodgate/config.yml:
username-prefix: "."
This adds a dot before Bedrock player names. A Bedrock player named "Steve" appears as ".Steve" in-game. This prevents name conflicts between Java and Bedrock accounts with the same name.
Step 6: Connect from Bedrock
Xbox / Switch / Mobile
- Open Minecraft Bedrock Edition
- Go to Play > Servers
- Scroll to the bottom and click "Add Server"
- Enter your server IP and port 19132
- Connect
Windows 10/11 Bedrock
Same process: Play > Servers > Add Server > Enter IP:19132
Known Limitations
GeyserMC is not perfect. Bedrock and Java have fundamental differences that cannot be fully bridged:
| Feature | Java | Bedrock via Geyser | |---|---|---| | Combat | 1.9+ cooldown system | Works but timing feels different | | Redstone | Standard Java behavior | Some piston/redstone differences | | Custom maps | Full support | Some textures render differently | | Enchantment UI | Normal | Bedrock UI used (looks different) | | Skins | Standard | May show default skin (see fix below) | | Inventory | Normal | Slight differences in crafting UI |
Fixing Bedrock Skin Issues
Bedrock player skins sometimes appear as default Steve/Alex on Java clients. This is because Bedrock stores skins differently than Java.
Fix: Install SkinsRestorer alongside Geyser or configure Floodgate skin forwarding. See our Bedrock skin fix guide for detailed steps.
Permissions for Bedrock Players
Bedrock player names have the prefix (dot by default). When setting up permissions in LuckPerms:
/lp user .BedrockPlayer parent set vip
Include the prefix in the username. Plugin commands that reference player names must also include the prefix.
Troubleshooting
"Unable to connect to world"
- Check that UDP port 19132 is open on your host
- Verify Geyser is running by checking the console for the startup message
- Make sure the player is connecting to the right IP and port 19132 (not the Java port 25565)
"Disconnected" immediately after joining
- Check that Floodgate is installed and loaded
- Verify
auth-typeis set tofloodgatein Geyser config - Make sure
server.propertieshasonline-mode=true(Floodgate handles Bedrock auth separately)
Players stuck on loading screen
- This can happen with ViaVersion installed. Make sure Geyser, ViaVersion, and your server JAR are all on compatible versions
- Update all three to their latest builds
Performance Impact
Geyser adds moderate CPU and RAM overhead. Each connected Bedrock player uses roughly 50-100 MB more RAM than a Java player because Geyser must translate every packet.
For a server with 10 Bedrock players, add about 500 MB to 1 GB to your RAM requirement. A 4 GB plan handles 5-10 Java + 5-10 Bedrock players comfortably.
Space-Node servers support Geyser and Floodgate on all plans with UDP port allocation available. Get started here.
