You want to start a Minecraft server, but half your friends play on PC and the other half are on Xbox, Switch, or their phones. The bad news: Java Edition and Bedrock Edition don’t talk to each other out of the box. The good news: there’s a straightforward solution that doesn’t require running two separate servers.
This guide covers how cross-play actually works, why you’ll almost always want a Java server as your foundation, and how to get Bedrock players connected using Geyser.
The Cross-Play Problem (and Why It Exists)
Java Edition and Bedrock Edition aren’t just different versions of the same game - they’re built on completely different codebases. Java Edition is the original, written in Java, and runs on PC, Mac, and Linux. Bedrock Edition came later, rebuilt from scratch in C++, and runs on consoles, mobile devices, and the Windows 10/11 app.
Because they’re fundamentally different software, a Bedrock client can’t connect to a Java server any more than an Xbox can run a PlayStation disc. They speak different network protocols, handle game mechanics slightly differently, and store world data in incompatible formats.
Here’s the quick breakdown of who plays what:
| Edition | Platforms |
|---|---|
| Java | Windows, Mac, Linux (via the Minecraft Launcher) |
| Bedrock | Xbox, PlayStation, Nintendo Switch, iOS, Android, Windows 10/11 (via Microsoft Store) |
If you bought Minecraft through the Microsoft Store on Windows, you have Bedrock. If you bought it through minecraft.net and use the Java Launcher, you have Java. Windows players who bought the game recently likely have access to both through the Java & Bedrock bundle.
Your Options for Cross-Play
When you need both Java and Bedrock players on the same server, you have two paths:
Run a Bedrock server. Everyone can connect natively - no translation needed. But the official Bedrock Dedicated Server has limited extensibility compared to Java. Third-party Bedrock server stacks like PocketMine and Nukkit offer plugin APIs, but the ecosystem and feature parity don’t match what Java has. If you just want vanilla survival with minimal customization, this works. Most people want more than that.
Run a Java server with Geyser. This is the path most server owners take. You run a full-featured Java server with access to the entire plugin ecosystem - economy systems, permissions, minigames, whatever you want. Geyser sits on top and translates Bedrock connections on the fly, letting console and mobile players join as if they were Java clients.
The Java + Geyser approach wins for a simple reason: Java’s ecosystem is massive. Server software like Paper gives you performance optimizations and plugin support that Bedrock simply doesn’t have. Years of community development mean there’s a plugin for almost anything you want to do. Going with Bedrock means giving all of that up.
The only time standalone Bedrock makes sense is when you know for certain you’ll never want plugins and every single player is already on Bedrock. That’s a narrow use case.
What You Need to Know About Geyser
Geyser is a translation layer. Your server stays Java - it runs Paper or Spigot, loads Java plugins, and stores worlds in the standard Java format. When a Bedrock player connects, Geyser intercepts their connection and translates everything back and forth between Bedrock’s protocol and Java’s.
This means the simplest setup uses a plugin-compatible server. If you’re on Vanilla, you’ll want to switch to Paper or Spigot first. If you’re starting fresh, just start with Paper - it’s the most popular choice and handles Geyser well. Advanced users can also run Geyser as a standalone proxy in front of any Java server, but for most people the plugin approach is easier.
Modded Servers Have Limitations
Geyser does have Fabric and NeoForge variants, so modded servers aren’t completely off the table. But if your server relies on client-required mods or modpacks, Bedrock players won’t be able to experience that content - they don’t have the mods installed. Some server-side-only tweaks may work, but compatibility varies. Test before committing to a modded cross-play setup.
Geyser needs its own port to listen for Bedrock connections. Java uses TCP on port 25565 by default; Bedrock uses UDP, typically on port 19132. Your hosting provider needs to give you access to both. If you’re also running other UDP-based plugins like Simple Voice Chat, they can’t share Geyser’s port - each needs its own.
Bedrock players can connect from Windows 10/11, iOS, Android, Xbox, PlayStation, and Nintendo Switch. That covers pretty much everyone who isn’t on Java.
Console Players Need an Extra Step
Mobile and Windows 10/11 players can enter your server’s IP and port directly. Console players (Xbox, Switch, PlayStation) don’t have an “Add Server” button in their UI. They’ll need to use a workaround like BedrockConnect to connect to custom servers. Geyser’s documentation has a console connection guide with the full steps.
Geyser vs Floodgate
You’ll see both of these mentioned in setup guides, and the difference matters:
| Plugin | What It Does | Do You Need It? |
|---|---|---|
| Geyser | Translates Bedrock connections so they work on Java servers | Yes - this is the core of cross-play |
| Floodgate | Lets Bedrock players join without owning a Java account | Probably - unless all your Bedrock friends also own Java Edition |
Without Floodgate, Bedrock players connecting to an online-mode server need to authenticate with a paid Java account. That defeats the purpose for most groups. Floodgate lets them log in with their existing Microsoft/Xbox account, which is what they’re already using to play Bedrock anyway. Install both unless you have a specific reason not to.
What Bedrock Players Should Expect
Cross-play works well, but it’s not invisible. Bedrock players will notice a few differences.
Most gameplay translates seamlessly. Building, mining, fighting mobs, exploring - all of it works the way you’d expect. Your Bedrock friends can join, see the same world, and play alongside Java players without issues.
Combat timing feels slightly different. Java Edition has an attack cooldown that Bedrock doesn’t use natively. Geyser can simulate this, but the muscle memory won’t be quite the same for players used to Bedrock’s spam-click combat.
Skins can get weird. Custom Bedrock skins don’t always display correctly to Java players, and vice versa. This is cosmetic and doesn’t affect gameplay, but it’s worth knowing about if your group cares about how their characters look.
Some Java-specific features behave differently on Bedrock. Spectator mode exists but has limitations, certain UI elements look different, and a handful of mechanics don’t translate perfectly. For typical survival or minigame servers, this rarely matters. For highly technical servers that rely on Java-specific behavior, it might.
We see this in support tickets: someone sets up Geyser expecting a perfectly identical experience on both sides, then gets confused when small differences pop up. Go in knowing it’s 95% there and you won’t be disappointed.
Setting It Up on WinterNode
WinterNode offers both Java and Bedrock hosting at the same $1.99/GB. For cross-play, you want a Java server with Geyser installed.
WinterNode Minecraft servers deploy with ports allocated for Java, Bedrock, and additional plugins - you don’t need to request extra ports or wait on support to get started.
Here’s the high-level process:
1. Make sure you’re running Paper or Spigot. If your server is on Vanilla, use the Edition Installer in your control panel to switch. Go to Configuration → Server Actions → Install Different Edition and select Paper. Our Edition Installer guide walks through this in detail.
2. Download Geyser and Floodgate. Grab the Spigot/Paper versions from geysermc.org/download. You want Geyser-Spigot.jar and floodgate-spigot.jar.
3. Upload to your plugins folder. Use the file manager in your control panel or SFTP to drop both .jar files into the plugins directory.
4. Restart your server. This generates the config files for both plugins.
5. Configure your Bedrock port. Open plugins/Geyser-Spigot/config.yml and find the port setting under the bedrock section. Set this to one of your allocated ports. You can find your available ports in the Allocations section of your control panel.
6. Share the right addresses. Java players connect with your server’s normal address. Bedrock players use the same IP but with the Bedrock port you configured.
Our Geyser setup guide has the full details, including Floodgate configuration if you want Bedrock players to join without Java accounts.
Tip
If you get stuck during setup, our support team can help. Geyser configuration isn’t complicated, but there are enough moving pieces that it’s easy to miss something. Open a ticket or hop in Discord and we’ll get you sorted.
Start Playing Together
Cross-play used to be a messy workaround. With Geyser, it’s a solved problem. You run a Java server with all the plugins and customization you want, and your console and mobile friends join like it’s native.
We’re obviously biased, but WinterNode exists because we wanted hosting that didn’t nickel-and-dime people. All our game servers are $1.99/GB of RAM - we don’t charge extra for CPU usage, storage space, or basic features that other hosts mark up.
If you want to test the waters, we offer a 48-hour free trial on Minecraft servers. No credit card required.
Got questions? Our support team responds to tickets with actual humans, and we’re active on Discord if you prefer chatting there. We also have a full Minecraft Java help center if you want to dig into the details.
Frequently Asked Questions
Yes, using Geyser on a Java server. Geyser translates Bedrock connections so they can join Java servers. Bedrock servers cannot accept Java players.
Not if you install Floodgate alongside Geyser. Floodgate lets Bedrock players authenticate with their existing Microsoft/Xbox account.
Java servers support plugins and have a larger ecosystem of tools. Bedrock servers have limited customization. With Geyser, you get Java's flexibility plus Bedrock compatibility.
