[{"data":1,"prerenderedAt":612},["ShallowReactive",2],{"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate\u002F":3,"guides:en":539,"published-guide-paths":600},{"id":4,"title":5,"author":6,"body":7,"category":492,"date":493,"description":494,"excerpt":495,"extension":496,"faq":497,"featured":507,"featuredOrder":495,"localeGroup":508,"meta":509,"navigation":510,"path":511,"published":510,"related":512,"seo":516,"slug":517,"sources":518,"stem":537,"updated":493,"__hash__":538},"guides\u002Fguides\u002F14.minecraft-crossplay-geyser-floodgate.md","Set Up Java and Bedrock Crossplay with Geyser and Floodgate","setupmc.com Team",{"type":8,"value":9,"toc":473},"minimark",[10,15,19,45,54,74,78,81,84,87,95,99,102,110,114,140,143,160,178,182,195,198,201,205,208,218,225,232,235,241,249,252,256,259,267,270,274,280,283,291,294,297,308,311,333,336,343,347,350,353,357,430,434,439,442,446,449,453],[11,12,14],"h2",{"id":13},"direct-crossplay-without-a-proxy","Direct crossplay without a proxy",[16,17,18],"p",{},"This is the simplest self-hosted crossplay setup if you want Bedrock players on a Java server without introducing a separate proxy layer:",[20,21,22,31,37,42],"ul",{},[23,24,25,26,30],"li",{},"a ",[27,28,29],"strong",{},"Paper"," server",[23,32,33,36],{},[27,34,35],{},"Geyser"," installed directly as a plugin",[23,38,39,36],{},[27,40,41],{},"Floodgate",[23,43,44],{},"no separate proxy layer",[16,46,47,48,53],{},"If you are not on Paper yet, start with ",[49,50,52],"a",{"href":51},"\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge\u002F","Paper vs Vanilla vs Fabric vs Forge",".",[16,55,56,57,63,64,67,68,73],{},"One important Geyser version note: Bedrock clients update automatically and Geyser tracks the ",[49,58,62],{"href":59,"rel":60},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fsupported-versions\u002F",[61],"nofollow","latest supported Java client version",". If your Paper server is ",[27,65,66],{},"not"," on that current Java version yet, install ",[49,69,72],{"href":70,"rel":71},"https:\u002F\u002Fviaversion.com\u002Fdownloads.html",[61],"ViaVersion"," so Bedrock players can still join older Java server versions.",[11,75,77],{"id":76},"what-geyser-and-floodgate-actually-do","What Geyser and Floodgate actually do",[16,79,80],{},"Geyser describes itself as a translator between Bedrock Edition clients and a Java Edition server.\nThat is what enables crossplay.",[16,82,83],{},"Floodgate adds a different piece: it allows Xbox Live authenticated Bedrock players to join without needing a paid Java Edition account.",[16,85,86],{},"The pair is common because:",[20,88,89,92],{},[23,90,91],{},"Geyser handles protocol translation",[23,93,94],{},"Floodgate handles Bedrock-friendly authentication",[11,96,98],{"id":97},"step-1-start-from-a-paper-server","Step 1: Start from a Paper server",[16,100,101],{},"This is the cleanest base for the direct plugin setup.",[16,103,104,105,109],{},"If your server is still in early deployment, you can begin with ",[49,106,108],{"href":107},"\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud\u002F","the Hetzner Docker setup guide"," and then move the server type to Paper in your Compose configuration.",[11,111,113],{"id":112},"step-2-install-the-plugins","Step 2: Install the plugins",[115,116,117,129,137],"ol",{},[23,118,119,120,123,124,53],{},"Download the current ",[27,121,122],{},"Geyser plugin build for Paper\u002FSpigot"," from the ",[49,125,128],{"href":126,"rel":127},"https:\u002F\u002Fgeysermc.org\u002Fdownload\u002F",[61],"official download page",[23,130,131,132,136],{},"Place the plugin jar in the server ",[133,134,135],"code",{},"plugins"," directory.",[23,138,139],{},"Restart the server.",[16,141,142],{},"Then do the same for Floodgate:",[115,144,145,153,158],{},[23,146,119,147,123,150,53],{},[27,148,149],{},"Floodgate plugin build for Paper\u002FSpigot",[49,151,128],{"href":126,"rel":152},[61],[23,154,155,156,136],{},"Place the plugin jar in the ",[133,157,135],{},[23,159,139],{},[16,161,162,163,168,169,173,174,177],{},"Geyser's ",[49,164,167],{"href":165,"rel":166},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fsetup\u002Fself\u002Fpaper-spigot",[61],"Paper\u002FSpigot setup guide"," documents the direct setup flow, and Floodgate's ",[49,170,167],{"href":171,"rel":172},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Ffloodgate\u002Fsetup\u002Fpaper-spigot\u002F",[61]," documents the required ",[133,175,176],{},"auth-type"," change.",[11,179,181],{"id":180},"step-3-switch-geyser-authentication-to-floodgate","Step 3: Switch Geyser authentication to Floodgate",[16,183,184,185,188,189,191,192,53],{},"Open ",[133,186,187],{},"\u002Fplugins\u002FGeyser-Spigot\u002Fconfig.yml",", find the ",[133,190,176],{}," setting, and change it to ",[133,193,194],{},"floodgate",[16,196,197],{},"Then restart the server again.",[16,199,200],{},"That is the required link between the two plugins.",[11,202,204],{"id":203},"step-4-publish-the-bedrock-port","Step 4: Publish the Bedrock port",[16,206,207],{},"Geyser documents the Bedrock listener like this:",[209,210,216],"pre",{"className":211,"code":213,"language":214,"meta":215},[212],"language-yaml","bedrock:\n  address: 0.0.0.0\n  port: 19132\n  clone-remote-port: false\n","yaml","",[133,217,213],{"__ignoreMap":215},[16,219,220,221,224],{},"That port is ",[27,222,223],{},"UDP",", not TCP.",[16,226,227,228,231],{},"Keep ",[133,229,230],{},"clone-remote-port"," disabled unless your host specifically requires Bedrock to reuse the Java port. Geyser's current setup docs note that enabling it overwrites the Bedrock port with the Java port.",[16,233,234],{},"If you run Docker, publish it explicitly:",[209,236,239],{"className":237,"code":238,"language":214,"meta":215},[212],"ports:\n  - \"25565:25565\u002Ftcp\"\n  - \"19132:19132\u002Fudp\"\n",[133,240,238],{"__ignoreMap":215},[16,242,243,244,248],{},"If players still cannot connect, fix the network path with ",[49,245,247],{"href":246},"\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux\u002F","the port troubleshooting guide",", but remember that the Bedrock side uses UDP 19132 by default.",[16,250,251],{},"Also note one current Geyser restriction from the setup docs: other UDP-based features such as voice chat or query cannot share Geyser's UDP port.",[11,253,255],{"id":254},"step-5-validate-with-a-bedrock-connection-test","Step 5: Validate with a Bedrock connection test",[16,257,258],{},"Geyser documents a built-in connection test command:",[209,260,265],{"className":261,"code":263,"language":264,"meta":215},[262],"language-text","geyser connectiontest \u003Cip> \u003Cport>\n","text",[133,266,263],{"__ignoreMap":215},[16,268,269],{},"Run it from the console and then test with a real Bedrock client.",[11,271,273],{"id":272},"important-note-for-console-players","Important note for console players",[16,275,276,277,279],{},"Crossplay support on the server side does ",[27,278,66],{}," automatically mean that every Bedrock console can type in any public server address directly.",[16,281,282],{},"That is the practical limitation many admins miss:",[20,284,285,288],{},[23,286,287],{},"Bedrock on phones, tablets, and Windows can usually add a custom server directly",[23,289,290],{},"console editions often do not expose the same free-form server entry in the normal UI",[16,292,293],{},"That is why console players sometimes need an additional workaround even though your Geyser setup itself is correct.",[16,295,296],{},"The key point is the reason, not the app name:",[20,298,299,302,305],{},[23,300,301],{},"this is a console client limitation",[23,303,304],{},"Geyser and Floodgate do not remove that limitation on their own",[23,306,307],{},"the workaround happens on the player side, not on the server",[16,309,310],{},"Two common examples are:",[20,312,313,323],{},[23,314,315,322],{},[49,316,319],{"href":317,"rel":318},"https:\u002F\u002Fgithub.com\u002FPugmatt\u002FBedrockConnect",[61],[27,320,321],{},"BedrockConnect",", which documents DNS-based and LAN-based join methods for consoles",[23,324,325,332],{},[49,326,329],{"href":327,"rel":328},"https:\u002F\u002Fgithub.com\u002FBedrockTogether",[61],[27,330,331],{},"BedrockTogether",", a third-party helper project some players use on consoles when they need another client-side workaround path",[16,334,335],{},"The exact workaround can vary by console and home network, and it is not a mandatory part of your server setup.",[16,337,338,339,342],{},"The practical takeaway is simple: if phone and Windows Bedrock clients can join but console players still cannot, the remaining problem is often the ",[27,340,341],{},"console join path",", not your Geyser or Floodgate installation.",[11,344,346],{"id":345},"limits-you-should-understand","Limits you should understand",[16,348,349],{},"This setup gives you practical direct crossplay, but it does not make Java and Bedrock identical.\nThere will still be gameplay differences and plugin compatibility edge cases.",[16,351,352],{},"The point of this guide is to get a robust first setup, not to pretend that every Bedrock behavior perfectly matches Java.",[11,354,356],{"id":355},"common-mistakes","Common mistakes",[358,359,360,376],"table",{},[361,362,363],"thead",{},[364,365,366,370,373],"tr",{},[367,368,369],"th",{},"Mistake",[367,371,372],{},"Result",[367,374,375],{},"Fix",[377,378,379,394,408,419],"tbody",{},[364,380,381,385,388],{},[382,383,384],"td",{},"Installing Geyser but not Floodgate",[382,386,387],{},"Bedrock players still need Java authentication",[382,389,390,391],{},"Install Floodgate and set ",[133,392,393],{},"auth-type: floodgate",[364,395,396,399,402],{},[382,397,398],{},"Opening only TCP ports",[382,400,401],{},"Java may work while Bedrock fails",[382,403,404,405],{},"Publish and allow UDP ",[133,406,407],{},"19132",[364,409,410,413,416],{},[382,411,412],{},"Running this on the wrong server type",[382,414,415],{},"Plugin path becomes awkward or unsupported",[382,417,418],{},"Use Paper for the direct plugin setup",[364,420,421,424,427],{},[382,422,423],{},"Treating SRV records as a Bedrock solution",[382,425,426],{},"Java DNS polish does not solve Bedrock ports",[382,428,429],{},"Keep Java and Bedrock join paths conceptually separate",[11,431,433],{"id":432},"faq","FAQ",[435,436,438],"h3",{"id":437},"do-i-need-a-separate-proxy-for-this-setup","Do I need a separate proxy for this setup?",[16,440,441],{},"No. This guide is deliberately scoped to the direct Paper plugin path.",[435,443,445],{"id":444},"can-java-and-bedrock-players-join-the-same-world","Can Java and Bedrock players join the same world?",[16,447,448],{},"Yes. That is the point of the translation layer, as long as the server and plugins involved behave acceptably with Geyser.",[11,450,452],{"id":451},"next-steps","Next steps",[20,454,455,460,466],{},[23,456,457,458,53],{},"If you still need to choose the right software stack, read ",[49,459,52],{"href":51},[23,461,462,463,53],{},"If your Java side is not reachable yet, fix ",[49,464,465],{"href":246},"port 25565 first",[23,467,468,469,53],{},"If you want a cleaner Java join address, configure ",[49,470,472],{"href":471},"\u002Fguides\u002Fminecraft-domain-without-port-srv-record\u002F","an SRV record",{"title":215,"searchDepth":474,"depth":474,"links":475},2,[476,477,478,479,480,481,482,483,484,485,486,491],{"id":13,"depth":474,"text":14},{"id":76,"depth":474,"text":77},{"id":97,"depth":474,"text":98},{"id":112,"depth":474,"text":113},{"id":180,"depth":474,"text":181},{"id":203,"depth":474,"text":204},{"id":254,"depth":474,"text":255},{"id":272,"depth":474,"text":273},{"id":345,"depth":474,"text":346},{"id":355,"depth":474,"text":356},{"id":432,"depth":474,"text":433,"children":487},[488,490],{"id":437,"depth":489,"text":438},3,{"id":444,"depth":489,"text":445},{"id":451,"depth":474,"text":452},"networking","2026-04-04","Want Bedrock players on phones or consoles to join your Java server? This guide shows a direct Paper-based Geyser and Floodgate setup without introducing a separate proxy layer.",null,"md",[498,501,504],{"question":499,"answer":500},"What does Geyser do?","Geyser translates traffic between Bedrock Edition clients and a Java Edition server so that Bedrock players can join a Java server.",{"question":502,"answer":503},"What does Floodgate add?","Floodgate allows Xbox Live authenticated Bedrock users to join without owning a paid Java Edition account.",{"question":505,"answer":506},"Which Bedrock port do I need to expose?","Geyser documents the Bedrock listener as UDP port 19132 by default unless you deliberately change it.",false,"geyser-floodgate-crossplay",{},true,"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate",[513,514,515],"minecraft-server-software-choice","open-port-25565-hetzner-linux","minecraft-srv-record-domain",{"title":5,"description":494},"minecraft-crossplay-geyser-floodgate",[519,522,525,527,530,533,535],{"title":520,"url":521},"Geyser overview","https:\u002F\u002Fgeysermc.org\u002F",{"title":523,"url":524},"Geyser setup","https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fsetup",{"title":526,"url":59},"Geyser supported versions",{"title":528,"url":529},"Floodgate setup","https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Ffloodgate\u002Fsetup\u002F",{"title":531,"url":532},"Paper software overview","https:\u002F\u002Fpapermc.io\u002Fsoftware\u002Fpaper\u002F",{"title":534,"url":317},"BedrockConnect repository",{"title":536,"url":327},"BedrockTogether GitHub","guides\u002F14.minecraft-crossplay-geyser-floodgate","BYZh__zkpOFVlU2xkDrO9jn8zgXCjWXfCWstuCzyjAs",[540,541,547,554,560,566,572,578,583,588,594],{"path":511,"title":5,"description":494,"excerpt":495,"author":6,"date":493,"category":492,"localeGroup":508},{"path":542,"title":543,"description":544,"excerpt":495,"author":6,"date":545,"category":546,"localeGroup":513},"\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge","Paper vs Vanilla vs Fabric vs Forge: Which Minecraft Server Software Should You Choose?","Choosing the wrong server software creates avoidable pain later. This guide compares Vanilla, Paper, Fabric, Quilt, Forge, and NeoForge based on plugins, mods, performance, and operational complexity.","2026-04-03","docker-operations",{"path":548,"title":549,"description":550,"excerpt":495,"author":6,"date":551,"category":552,"localeGroup":553},"\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance","View Distance vs Simulation Distance: Safe Starting Values for Paper","Paper exposes view-distance and simulation-distance separately, which makes them one of the safest first levers for performance tuning. This guide explains what each setting changes and which starting values are sensible.","2026-04-02","performance","paper-view-distance-simulation-distance",{"path":555,"title":556,"description":557,"excerpt":495,"author":6,"date":558,"category":552,"localeGroup":559},"\u002Fguides\u002Fspark-profiler-paper-docker","Use Spark Profiler to Find Minecraft Lag in Paper and Docker","Paper bundles Spark starting with 1.21, which makes it the preferred profiler for diagnosing lag. This guide shows how to capture a useful report and how to read the first findings without guesswork.","2026-04-01","spark-profiler-paper-docker",{"path":561,"title":562,"description":563,"excerpt":495,"author":6,"date":564,"category":552,"localeGroup":565},"\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up","Minecraft Server Lag Explained: TPS, MSPT, and 'Can’t Keep Up'","This guide explains what TPS and MSPT actually mean, why “Can’t keep up” appears in the console, and which checks help you separate CPU, chunk, entity, and plugin problems quickly.","2026-03-31","minecraft-lag-tps-mspt",{"path":567,"title":568,"description":569,"excerpt":495,"author":6,"date":570,"category":546,"localeGroup":571},"\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server","Fix Permission Denied in itzg\u002Fminecraft-server with UID\u002FGID and Bind Mounts","Seeing permission errors in \u002Fdata or files that Docker cannot write? This guide explains why itzg\u002Fminecraft-server defaults to UID 1000:GID 1000 and how to fix ownership safely.","2026-03-09","itzg-permission-denied",{"path":573,"title":574,"description":575,"excerpt":495,"author":6,"date":576,"category":546,"localeGroup":577},"\u002Fguides\u002Fadminister-docker-minecraft-server-rcon-console","Administer a Docker Minecraft Server Safely with RCON and Console Access","Need to op a player, manage the whitelist, or stop the server cleanly? This guide shows how to use RCON and interactive console access with itzg\u002Fminecraft-server without exposing extra risk.","2026-03-08","docker-minecraft-rcon-console",{"path":579,"title":580,"description":581,"excerpt":495,"author":6,"date":582,"category":492,"localeGroup":515},"\u002Fguides\u002Fminecraft-domain-without-port-srv-record","Minecraft Domain Without a Port: How to Set Up an SRV Record","Want players to join via example.com instead of an IP and port? This guide shows how SRV records work for Minecraft Java Edition and how to configure them correctly.","2026-03-07",{"path":584,"title":585,"description":586,"excerpt":495,"author":6,"date":587,"category":492,"localeGroup":514},"\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux","How to Open Port 25565 for a Minecraft Server on Hetzner and Linux","Players cannot join even though the container is running? This guide shows how to open port 25565 correctly across Docker, UFW, and the Hetzner Cloud Firewall.","2026-03-05",{"path":589,"title":590,"description":591,"excerpt":495,"author":6,"date":592,"category":546,"localeGroup":593},"\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server","Determining the Correct Java Version for Operating a Minecraft Server","If you want to set up a Minecraft server, you may encounter an error message related to the Java version when starting the server. In this article, you will learn how to determine the correct Java version for your Minecraft server.","2025-01-31","java-version-minecraft-server",{"path":595,"title":596,"description":597,"excerpt":495,"author":6,"date":598,"category":546,"localeGroup":599},"\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud","Setting up a Minecraft Server on a Hetzner Cloud Server with Docker Compose","In this article, we will show you how to set up a server for Minecraft: Java Edition on a Hetzner Cloud server. We will go through the steps of creating the cloud server, installing Debian, setting up an SSH key, and configuring Docker Compose for easy server management.","2025-01-28","hetzner-docker-setup",[601,602,603,604,605,606,607,608,609,610,611,595,561,555,548,542,511,589,584,579,573,567],"\u002Fde\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud","\u002Fde\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up","\u002Fde\u002Fguides\u002Fspark-profiler-paper-docker","\u002Fde\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance","\u002Fde\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge","\u002Fde\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate","\u002Fde\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server","\u002Fde\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux","\u002Fde\u002Fguides\u002Fminecraft-domain-without-port-srv-record","\u002Fde\u002Fguides\u002Fadminister-docker-minecraft-server-rcon-console","\u002Fde\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server",1775292570307]