How to Set Up a Cross-Platform Minecraft Bedrock Server Step by Step

Learning how to set up a cross-platform Minecraft Bedrock server step by step is the single best way to get every friend playing together, no matter the device they own. Maybe half your group runs Java Edition on PC and the other half is on Xbox, Switch, PlayStation, or their phone. Out of the box, those players cannot share a world. With the right plugin stack, they can.

Yes, you can cross-platform on Minecraft servers. A tool called GeyserMC acts as a real-time translator between Java Edition and Bedrock Edition, letting console, mobile, and Windows 10 players join a standard Java server. Floodgate, its companion plugin, handles authentication so Bedrock players don’t need a paid Java account.

This guide walks through the entire process from scratch. I’ll cover why the two editions can’t talk to each other natively, what GeyserMC and Floodgate actually do, the prerequisites you need, full installation steps, configuration file settings, port forwarding, console-specific workarounds that most guides skip, and troubleshooting for the errors that trip people up most often. By the end, you’ll have a working crossplay server that welcomes players from virtually any platform.

Why Java and Bedrock Don’t Play Together Natively?

Java Edition and Bedrock Edition are built on completely different codebases. Java Edition, as the name implies, is written in Java and was the original version of the game. Bedrock Edition is written in C++ and was developed to run on consoles, phones, and Windows 10.

Because they use different languages and engines, they also use different network protocols. A Java server sends and receives TCP packets on port 25565 using the Java protocol format. A Bedrock client sends UDP packets on port 19132 using an entirely different packet structure. When a Bedrock player tries to connect to a Java server, the server receives packets it doesn’t understand and the connection simply fails.

Even simple things like how blocks are stored, how combat cooldowns work, and how player skins render differ between the two editions. This is not a setting you can toggle. The gap is fundamental to how each version was built. That gap is exactly what GeyserMC bridges.

What Is GeyserMC and How It Works

GeyserMC is an open-source plugin that translates between the Bedrock and Java network protocols in real time. When a Bedrock player connects, Geyser intercepts the incoming UDP Bedrock packets, translates them into TCP Java packets, and hands them to your Java server. The server never knows it’s talking to a Bedrock player.

The reverse works the same way. When the server sends a Java packet back, Geyser translates it into a Bedrock packet and forwards it to the player. This translation happens continuously, packet by packet, with minimal latency. For most players, the delay is barely noticeable on a reasonably powered server.

Geyser runs as a plugin on Paper, Spigot, or Purpur servers. It can also run as a standalone proxy (Geyser Standalone) that sits in front of any Java server, including vanilla. The plugin approach is the most common and easiest to configure, so that’s what this guide focuses on.

The short answer to how to make a Bedrock server cross-platform: install GeyserMC on a Java server. That translation layer is what makes crossplay possible.

Geyser vs Floodgate: What You Need and Why

Geyser and Floodgate are frequently mentioned together, and many people assume they’re interchangeable. They are not. They handle two completely different jobs, and you generally need both.

Geyser handles the protocol translation. It makes the network packets compatible. But translation alone isn’t enough. By default, a Java server running in online mode requires every connecting player to authenticate with a Microsoft Java Edition account. Bedrock players authenticate with Xbox Live, not with a Java account. Without something to bridge that authentication gap, a Bedrock player’s login attempt gets rejected even though the protocol translation worked.

Floodgate solves this. It allows Bedrock players to join using their Xbox Live account, also called a Bedrock account, without needing to own Java Edition. When Floodgate is installed, Bedrock players get a prefix (usually a period) added to their username so the server can tell them apart from Java players.

Do Bedrock players need a Java account to join? No. Not when Floodgate is installed. Without Floodgate, every Bedrock player would need their own paid Java Edition account, which defeats the purpose for most people.

Here’s the practical breakdown. Geyser alone lets Bedrock players connect only if they also own Java Edition and link accounts. Geyser plus Floodgate lets any Bedrock player join with just their free Xbox Live account. For nearly every server owner, the answer is to install both.

Prerequisites: What You Need Before Starting

Before you install anything, make sure you have the right foundation. GeyserMC runs as a plugin, which means you need a plugin-compatible Java server. The supported server software options are Paper, Spigot, Purpur, and their forks. Vanilla Minecraft servers do not support plugins and therefore cannot run Geyser directly.

Here’s what you need:

  • A server running Paper, Spigot, or Purpur (Paper is recommended for performance)

  • Java 17 or Java 21 installed, matching your server version (Minecraft 1.18 through 1.20.4 needs Java 17, 1.20.5 and later need Java 21)

  • At least 2 GB of RAM dedicated to the server, preferably 4 GB or more if you expect several Bedrock players

  • Access to your server’s files, either through a hosting panel, FTP, or direct console access

  • The ability to open and forward ports on your network or hosting provider’s firewall

If you’re using a managed host, check whether they offer a one-click Geyser installer. Many popular hosts do, which saves you the manual steps. If you’re self-hosting at home, you’ll need router access for port forwarding.

Two ports matter here. Java Edition uses TCP port 25565 for Java player connections. Bedrock Edition uses UDP port 19132 for Bedrock player connections. Both must be open and reachable for full crossplay.

How to Set Up a Cross-Platform Minecraft Bedrock Server Step by Step: GeyserMC Installation

This is the core process. Follow these steps in order, and don’t skip the restart between steps.

Step 1: Download the GeyserMC plugin. Go to the official GeyserMC downloads page at ci.opencollab.dev and grab the latest stable build of Geyser-Spigot (or Geyser-Paper, depending on what’s offered for your version). The file will be a JAR file. Never download Geyser from third-party sites. Stick to the official build server or the Hangar publishing platform.

Step 2: Upload the JAR to your plugins folder. Connect to your server’s file system. On a managed host, this is usually a file manager in your control panel. On a self-hosted or VPS setup, use SFTP or a direct terminal. Navigate to the plugins directory inside your server folder and place the Geyser JAR file there.

Step 3: Restart the server. A full restart is required, not just a reload. Geyser needs to initialize at server boot. After the restart completes, the plugin will have generated its configuration folder at plugins/Geyser-Spigot/.

Step 4: Verify the plugin loaded. Type plugins in the server console or in-game (if you have operator permissions). You should see Geyser listed and green, meaning enabled. If it’s red or missing, check your server log for errors. The most common cause is a server version mismatch.

Step 5: Note the default Bedrock port. By default, Geyser listens on UDP port 19132 for Bedrock connections. This is configurable later in config.yml, but make a mental note of it now since you’ll need it for port forwarding and for telling players how to connect.

At this point Geyser is installed and running. Bedrock players still can’t join successfully because authentication isn’t handled yet. That’s the next step.

Step-by-Step Floodgate Installation

Floodgate installs the same way Geyser does. It’s another plugin JAR file that goes in the same plugins folder.

Step 1: Download Floodgate. Get it from the same official ci.opencollab.dev build server. Download the Floodgate-Spigot build that matches your Geyser version. Version matching matters. If Geyser and Floodgate are out of sync, you’ll see authentication errors.

Step 2: Upload the JAR to your plugins folder. Place it alongside the Geyser JAR. Both plugins live in the same directory.

Step 3: Restart the server. Again, a full restart. Floodgate will generate its own config file at plugins/floodgate/config.yml.

Step 4: Set the auth-type in Geyser’s config. Open plugins/Geyser-Spigot/config.yml and find the line that says auth-type: online. Change it to auth-type: floodgate. This tells Geyser to let Floodgate handle Bedrock authentication instead of requiring Java account credentials. Save the file.

Step 5: Restart one more time. The auth-type change requires a restart to take effect. After this final restart, Bedrock players with only an Xbox Live account can join without owning Java Edition.

You should now see a Floodgate prefix on Bedrock player names. By default it’s a period, so a player named Steve would appear as .Steve on the server. This helps Java players and server logs distinguish who’s on which edition.

Configuration Settings: Understanding config.yml

The Geyser config file at plugins/Geyser-Spigot/config.yml controls how the plugin behaves. After the first run, it’s fully generated with sensible defaults, but several values deserve your attention. Here are the settings that matter most:

bedrock: section contains port: 19132. This is the UDP port Bedrock players connect on. Change it only if you have a port conflict, and remember to update your port forwarding to match.

clone-remote-port: false. Leave this false unless you’re running Geyser as a standalone proxy and want it to mimic the Java server’s port for Bedrock.

auth-type: floodgate. Already covered. This is the single most important setting for crossplay with free Bedrock accounts.

ci-auth-type and above-bedrock-nametag are cosmetic or niche. Leave defaults unless you have a specific reason to change them.

For servers running Minecraft 1.19.1 or later, there’s a critical server-side setting that affects Geyser. Open your server’s server.properties file and look for enforce-secure-profile. This setting controls whether the server requires cryptographic chat signatures. Bedrock players can’t produce those signatures, so if this is set to true, Bedrock chat messages may be rejected or players may get kicked.

The fix is to set enforce-secure-profile=false in server.properties. This is safe for private and community servers. It only matters for servers that need strict chat signing enforcement, which is essentially never for a friends-and-community setup. After changing this value, restart the server.

For older server versions running newer Geyser builds, you may also want ViaVersion installed. ViaVersion lets a newer Java client connect to an older server, which complements Geyser’s Bedrock translation. It’s not required for crossplay itself, but it helps when your player base spans multiple Java versions.

Port Forwarding and Firewall Setup

Without proper port forwarding, Bedrock players outside your local network will never reach the server. This is the step that causes the most confusion, so let’s be precise about which protocol uses which port.

Java Edition uses TCP port 25565. Bedrock Edition uses UDP port 19132. These are different protocols. TCP and UDP are separate networking systems, so forwarding one does not automatically forward the other. You must forward both if you want Java and Bedrock players connecting.

What port does GeyserMC use? UDP port 19132 by default. That’s the port Bedrock players will enter when connecting. The Java port (25565 TCP) is used only by Java players and is configured separately in server.properties.

Here’s the port forwarding checklist:

  • Forward TCP 25565 to your server’s internal IP address

  • Forward UDP 19132 to your server’s internal IP address

  • Open both ports in any software firewall running on the server (Windows Defender Firewall, ufw on Linux, etc.)

  • If using a hosting provider, check their network firewall panel in addition to the OS firewall

  • Verify the ports are actually open using an online port checker tool

To find your server’s internal IP on Windows, run ipconfig in a terminal and look for the IPv4 address. On Linux, use ip addr. The internal IP is what goes in the forwarding rule’s destination field.

If you’re using a managed Minecraft host, they often handle port forwarding for you. Check whether UDP 19132 is included in your plan. Some budget hosts only allocate the default Java port and charge extra for additional ports. If your host doesn’t offer a UDP port, contact support, because Bedrock play requires it.

For home servers behind a residential router, the steps are: log into your router’s admin panel (usually 192.168.1.1 or 10.0.0.1), find the port forwarding or virtual server section, create a rule for UDP 19132 pointing to your server’s local IP, and create a separate rule for TCP 25565. Save and apply.

How Bedrock Players Connect by Platform?

Once the server is running Geyser and Floodgate with ports forwarded, players need to know how to connect from their specific device. The process differs by platform, and console players face an extra hurdle that many guides gloss over.

Windows 10/11 Bedrock and Mobile (iOS, Android): These platforms have a direct Add Server option. Open Minecraft Bedrock, go to Play, then Servers, then scroll to the bottom and click Add Server. Enter a server name (anything), the server’s public IP address, and the Bedrock port (19132 by default). Save and connect. These players should connect without issues.

Xbox One and Xbox Series X/S: Xbox doesn’t expose a free Add Server option for arbitrary IPs. You can connect to featured servers from the server list, but adding a custom server requires a workaround. The two main options are BedrockConnect and MCXboxBroadcast.

BedrockConnect is a free DNS-based workaround. You change your Xbox’s DNS settings to point at a BedrockConnect server, which intercepts the connection to a featured server and redirects you to a custom server menu where you can enter any IP. Setup involves going to Xbox network settings, setting the primary DNS to a BedrockConnect server address (Pugmatt’s public server is commonly used), and then joining any featured server. You’ll land in the BedrockConnect menu instead, where you can add your own server.

MCXboxBroadcast is a Geyser extension that makes your Java server appear in your Xbox friends’ server list as if it were a world you’re hosting. Install the extension in your Geyser extensions folder, and your Xbox friends see the server in the Friends tab without typing any IP. This is cleaner for ongoing groups but requires both you and your Xbox friends to be on each other’s Xbox friends lists.

Nintendo Switch: Same DNS workaround as Xbox. Change the Switch’s DNS settings to a BedrockConnect server address, then connect through a featured server to reach the BedrockConnect menu. Nintendo’s network settings are under System Settings, Internet, and the connection you’re using.

PlayStation 4 and 5: PlayStation also lacks a custom server input. The BedrockConnect DNS method works on PlayStation as well. The process is the same: change DNS settings, connect to a featured server, get redirected to the BedrockConnect menu, add your server.

Java Edition players (PC/Mac/Linux): Connect as normal through Multiplayer, Add Server, using the server IP and port 25565. Java players don’t interact with Geyser at all from their end.

What Bedrock Players Should Expect

Crossplay works, but it’s not perfect. Bedrock players connecting through Geyser will notice some differences compared to playing on a native Bedrock server. Setting proper expectations reduces complaints and support questions.

Combat feels slightly different. Java Edition has attack cooldowns and sweep attacks that Bedrock doesn’t replicate the same way. A Bedrock player swinging a sword may notice timing that feels off. This is a translation limitation, not a bug in your setup.

Skins can display incorrectly. Java Edition uses a specific skin format. Bedrock uses a different one with support for custom geometry. Bedrock player skins may not render correctly to Java players and vice versa. Geyser includes skin translation, but complex or animated Bedrock skins often don’t convert cleanly.

Some Bedrock-specific features like certain blocks, the offhand slot behavior, and Bedrock-only mechanics may not translate perfectly. If a Bedrock player places a block that exists differently in Java, the server (which runs Java) applies Java behavior.

None of these issues break gameplay. They’re cosmetic and timing differences that most players adapt to within a session or two. For a mixed friend group, the ability to play together at all outweighs these small discrepancies.

Troubleshooting Common GeyserMC Issues

Even with careful setup, things go wrong. Here are the most common problems and their fixes, pulled from real forum reports on r/GeyserMC, r/admincraft, and the official GeyserMC Discord.

“Failed to Bind to Address” in console: This means Geyser can’t claim UDP port 19132 because something else is already using it. Another service on your server or another Geyser instance is the usual culprit. Change Geyser’s bedrock port in config.yml to a different value (like 19133) and update your port forwarding, or stop whatever else is using 19132.

“Unable to Connect to World” on Bedrock client: This is the most common error Bedrock players see. It usually means one of three things: the UDP port isn’t forwarded correctly, the server isn’t running, or auth-type is set wrong. Check port forwarding first, confirm Geyser shows as enabled with plugins, and verify auth-type is set to floodgate in config.yml.

Bedrock players get disconnected immediately after joining: This typically means Floodgate isn’t installed or the auth-type is still set to online. Without Floodgate, Bedrock players without Java accounts pass protocol translation but fail authentication. Install Floodgate and set auth-type to floodgate, then restart.

Chat messages from Bedrock players don’t appear: On servers running 1.19.1 or later, enforce-secure-profile in server.properties is likely set to true. Set it to false and restart. This allows unsigned chat from Bedrock players.

Console players can’t find the server: Console platforms don’t have a custom server input. Use BedrockConnect (DNS method) or the MCXboxBroadcast extension as described in the connection section above.

High latency or rubberbanding for Bedrock players: Geyser translation adds a small amount of overhead. If your server is already under CPU or memory pressure, that overhead becomes noticeable. Allocate more RAM, reduce your view distance in server.properties, or run Paper with its built-in performance optimizations.

“Outdated server” or version mismatch errors: Make sure your Geyser build matches your server version. Geyser publishes builds for specific Minecraft versions. If you updated your server but not Geyser, download the matching build. For players on multiple Java versions, install ViaVersion to bridge the gap.

Geyser not generating config folder: If plugins/Geyser-Spigot/ doesn’t appear after restart, the JAR file may be corrupt or the wrong build variant. Re-download from the official source and make sure you grabbed Geyser-Spigot, not Geyser-Standalone or Geyser-BungeeCord.

FAQs

Conclusion

Setting up a cross-platform Minecraft Bedrock server step by step comes down to five pieces working together: a Paper or Spigot Java server, the GeyserMC plugin for protocol translation, the Floodgate plugin for Xbox Live authentication, correct port forwarding on UDP 19132 and TCP 25565, and the right connection method for each player’s platform. Get those in place and friends on PC, console, and mobile can all share one world.

If you hit issues, work through the troubleshooting section methodically. The vast majority of problems trace back to one of three things: auth-type not set to floodgate, a missing or incorrect port forward, or a version mismatch. Fix those and the rest falls into line. Your next step is to download Geyser and Floodgate from the official build server, drop them in your plugins folder, and start playing together.

Leave a Comment