Due to the work of some brilliant people, it’s now possible to open a Minecraft Java Edition server to Bedrock Edition clients; and, due to another brilliant dude, it’s possible to connect even the nerfed console ports up to an arbitrary server. This means you can have simultaneous crossplay among the whole cornucopia of PC, Android, iOS, Win10, Fire/Stick, Switch, PS4, and Xbox One Minecraft clients!

(*The PS4, XBO, and Switch editions are on thin ice and may be kicked out by Mojang someday. But all the others should keep working forever.)

To open your Java server up to bedrock clients , it's as simple as the following:

1. Be running a Minecraft server that supports conventional plugins (e.g. Bukkit, Spigot, Paper, etc.)
• FYSA, this post was last updated on March 4th, 2022. At this time, I was using paper-1.18.2-222, Geyser-Spigot-2.0.2-SNAPSHOT-1043, and floodgate-spigot-2.1.0-SNAPSHOT-64.
• At the moment, this post does NOT explicitly cover setup for Waterfall, Velocity, or similar exotic architectures. They are supported; I'm just not documenting them today.
2. Prepare the plugins:
1. Geyser (Paper servers need the Spigot build)
2. Floodgate (Paper servers need the Spigot build)
2. Put the first two files in your plugins folder
3. Restart the server
4. Put the third file in the folder plugins/floodgate
3. You may wish to modify plugins/Geyser-Spigot/config.yml with the following:
• passthrough-motd: true
This will show Bedrock players your MOTD; I have no idea why it's not enabled by default.
• passthrough-protocol-name: true
This will show Bedrock players any custom "protocol" name you or your server software has configured.
• passthrough-player-counts: true
Shows bedrock players how many people are currently playing; again, I have zero clue why this isn't on by default.
• forward-player-ping: true
“While enabling this will allow Bedrock players to have more accurate ping, it may also cause players to time out more easily.”
• max-players: 5
Purely cosmetic hard-coded value. Recommend setting to your actual max-players value until a passthrough option is added, to avoid gaslighting Bedrock players.
• cache-images: 7
(Not sure what this affects but it seems like a good idea)
• emote-offhand-workaround: "no-emotes"
Set this to allow Bedrock players to switch items to their offhand by attempting to emote.
• force-resource-packs: false
“If set to false, it allows the user to connect to the server even if they don't want to download the resource packs.”
• If running a 1.17 or older server, you may need to set auth-type: floodgate, but there is no need to do so in recent versions.
4. You may wish to modify plugins/floodgate/config.yml with some of the following:
• username-prefix: "*"
• enable-own-linking: true
• link-code-timeout: 600
(600 = 10 minutes for convenience; default is 300 = 5 minutes)
5. Restart your server one final time to apply any config changes
6. Open port 19132/udp on your server's firewall, NAT, etc
• If they want to access the same character on both Java and Bedrock, tell them to visit the so-called "global link" server link.geysermc.org or run /linkaccount from their Java client, if you enabled "own linking".