GeyserMC Cross-Play Tutorial

Published on | Updated

Install and configure GeyserMC on a Java server: plugin, mod or Standalone, ports, the NetherNet switch for Bedrock 26.60, Floodgate and common issues.

Minecraft server

GeyserMC translates the Bedrock Edition network protocol into the Java Edition protocol, so Bedrock players on mobile, consoles and Windows can join your Java server. Here is how to set it up properly.

For the full walkthrough with console joining, proxies and account linking, see our complete Geyser and Floodgate guide.

What GeyserMC actually does

GeyserMC sits between your Java server and Bedrock clients. When a Bedrock player connects, Geyser translates their inputs and the server's responses in real time. Bedrock players keep a Bedrock-style interface while they play in the Java world.

It is not emulation of the whole game, it is protocol translation. The server thinks a Java client joined. Most gameplay works, but some Java features (custom model data, some particle effects, complex book formatting) may not look the same on Bedrock clients.

Installation methods

Method 1: Plugin or mod (recommended)

On Paper, Spigot or Purpur:

  1. Download the latest Geyser-Spigot plugin from geysermc.org
  2. Place the .jar file in your server's plugins/ folder
  3. Restart your server
  4. Edit plugins/Geyser-Spigot/config.yml

On Fabric or NeoForge, use the Geyser-Fabric or Geyser-NeoForge mod in the mods/ folder instead (Fabric also needs Fabric API). The config then lives in config/Geyser-Fabric/config.yml or config/Geyser-NeoForge/config.yml. The Geyser docs note that these two only run on the newest Java version, which is 26.3 since Geyser 2.12.0 on 14 October 2026.

Method 2: Standalone

If you run vanilla, a platform Geyser has no build for (Forge, for example), or want to keep Geyser separate:

  1. Download the Standalone version
  2. Run it on the same machine or a separate one
  3. Point it to your Java server's address and port

The plugin and mod versions are the better choice when you can use them. The GeyserMC FAQ says their direct connection gives faster loading, lower latency and accurate IP addresses. Whatever you choose, only server-side mods work for Bedrock players.

Essential configuration

Open config.yml and focus on these settings:

bedrock:
  address: 0.0.0.0
  port: 19132
  clone-remote-port: false
  transport: nethernet

java:
  auth-type: online
  • bedrock port: the port Bedrock players connect to. 19132 is Bedrock's default, but on a hosted server you use a port that belongs to your server (see below). With NetherNet it needs TCP (signaling) as well as UDP (gameplay).
  • transport: GeyserMC says Bedrock 26.60, released on 27 October 2026, stops connecting over RakNet, so set nethernet. Use Geyser build 1273 or newer, the first that supports 26.60. It makes nethernet the default for new configs, and build 1280 (31 October) also moves an existing raknet line to nethernet by itself; on builds 1273 to 1279 that line stays until you change it. Our NetherNet guide covers testing and the trust prompt.
  • clone-remote-port: keep it false. When true, Geyser puts Bedrock on the Java port and ignores port. GeyserMC's NetherNet post says it "only works with external signaling", so players would join with an address from the Warden service instead of yours.
  • auth-type: online requires a Java account. floodgate lets Bedrock players join with just their Microsoft account (recommended, requires the Floodgate plugin).

Standalone also has address and port under java, pointing to your Java server (127.0.0.1 if it runs on the same machine). Older Geyser versions call the java section remote.

The Bedrock port on a hosted server

The Bedrock port must reach your server over TCP and UDP, and the Geyser setup guide says it "cannot be the port of the Paper / Spigot server". On a Space-Node server, open the panel's Network tab, click Create Allocation, and put the new port in port under bedrock, with clone-remote-port: false and transport: nethernet as above. It costs nothing: your plan includes three allocations, and we can raise that to five on request. The panel opens each allocation for both TCP and UDP, which NetherNet needs, so the same setup works for Bedrock 26.60.

If your config came with clone-remote-port: true, set it to false and give your players the new port. With it on, Geyser falls back to external signaling and players join with the address it prints in the console.

Voice chat and the server query cannot share Geyser's port. Give each its own.

Players on Bedrock 26.40? GeyserMC's setup guide says versions such as 26.40 fetch the MOTD and player count over RakNet, and transport: both accepts RakNet next to NetherNet. Older versions cannot join since Geyser build 1273. With both, NetherNet needs a second UDP port as webrtc-port. With Java, Geyser and voice chat on three allocations, that is a fourth, so ask us to raise your limit. Our NetherNet guide explains when the Java port can take it instead.

Setting up Floodgate

Floodgate is GeyserMC's companion plugin. Without it, Bedrock players need a Java account to join. With it, they join with the Microsoft account they use on Bedrock.

  1. Download Floodgate from geysermc.org
  2. Place it in your plugins/ folder
  3. Restart the server
  4. In GeyserMC's config.yml, set auth-type: floodgate

Bedrock players appear in game with a prefix before their username, . by default. You can change it with username-prefix in Floodgate's config.

Common issues and fixes

Bedrock players cannot connect:

  • Run geyser connectiontest <ip> <port> in the console
  • Check that the Bedrock port reaches your server over TCP and UDP. On a panel host it must be one of your allocations, with clone-remote-port off
  • Check that transport is nethernet, not raknet. Updating Geyser does not change an existing line
  • Check that Geyser is on build 1273 or newer, the first that supports Bedrock 26.60
  • Check that voice chat or the query is not on the same port
  • Verify the port players type matches the Geyser config

Players appear invisible to each other:

  • Update GeyserMC and Floodgate to the latest builds
  • Check for plugins that hide or modify players

Textures look wrong for Bedrock players:

  • Bedrock clients need Bedrock resource packs. Geyser loads them from the packs folder next to its config. The GeyserMC FAQ says there is no automatic Java-to-Bedrock conversion, but you can convert packs with GeyserMC's PackConverter
  • Not all resource packs convert cleanly, custom models especially

Redstone and mechanics feel different:

  • The world runs on the Java server, so Java rules apply to everyone, Bedrock players included
  • Bedrock players used to Bedrock redstone may find their builds behave differently, quasi-connectivity for example
  • Geyser cannot change that, it only translates what the Java server does

Performance impact

GeyserMC adds work to the server for every Bedrock player, because each packet is translated. How much depends on your plugins, world and player count, so we do not quote a number per player. Check it on your own server with spark while Bedrock players are online, and see our complete guide for what to do on larger servers.

On Space-Node's hosting plans you can start small and move up a plan if the server gets busier.

Recommended plugins for mixed servers

  • Floodgate (essential): lets Bedrock players join with their Microsoft account
  • ViaVersion: lets clients on other Java versions connect, and is required by Geyser on servers older than the newest Java version
  • PlaceholderAPI: placeholders for scoreboards and chat
  • Floodgate API: lets your own plugins detect Bedrock players and show them native Bedrock forms

Cross-play opens your server to mobile and console players without giving up the Java plugin ecosystem. Keep Geyser and Floodgate updated, because Bedrock clients update automatically and an outdated Geyser build will reject them.

More Geyser guides: the complete Geyser and Floodgate guide, GeyserMC on a Paper server, step by step, connect mobile players to your Java server, what to check in a host before you run Geyser.