Nizz05andClaude Opus 5.5 9e91642c89 Pin Minecraft/Paper to 26.3
Paper 26.3 is the newest stable release; Geyser 2.12.0 and Floodgate 2.2.5
support it, and it still runs on Java 25. Updates .env.example, the README
and the .env inside the Oracle deploy package.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 20:11:19 +02:00
2026-10-16 20:11:19 +02:00
2026-10-16 20:11:19 +02:00
2026-10-16 20:11:19 +02:00

Minecraft Crossplay-Server (Java + Bedrock)

Ein PaperMC-Server im Container, der per GeyserMC zusaetzlich Bedrock-Clients (Konsole, Handy, Windows-10-Edition) annimmt. Floodgate authentifiziert diese Spieler ueber Xbox Live, ein gekaufter Java-Account ist fuer sie nicht noetig.

Es bleibt ein Java-Server: Redstone, Kampfsystem und Mob-Verhalten folgen den Java-Mechaniken. Geyser sitzt als Uebersetzungsschicht dazwischen.

Java-Client  ──TCP 25565──┐
                          ├──► PaperMC (Java-Server)
Bedrock-Client ─UDP 19132─┴──► Geyser ──► Floodgate ──► Xbox-Live-Auth

Dateien

Datei Zweck
docker-compose.yml Der Stack: Image, Ports, Plugins, server.properties
.env Alle Stellschrauben (Version, RAM, Ports, MOTD, Ops, RCON-Passwort)
config/plugins/Geyser-Spigot/config.yml Geyser-Vorgabe, u.a. auth-type: floodgate

Die Welt und alle Plugin-Daten liegen im Docker-Volume mc-crossplay_mc-data, nicht im Projektordner (deutlich schnellere I/O unter Docker Desktop).

Schnellstart

docker compose up -d

Der erste Start dauert ein paar Minuten: Paper-Jar, Geyser und Floodgate werden geladen und die Welt wird generiert.

Logs mitlesen:

docker compose logs -f

Fertig ist der Server, sobald Started Geyser on UDP port 19132 und danach Done (…)! For help, type "help" in den Logs stehen.

Eingestellt ist Minecraft/Paper 26.3 (dazu Geyser 2.12.0, Floodgate 2.2.5). Zuletzt getestet mit Paper 26.2, Geyser 2.11.1 und Floodgate 2.2.5: Java-Ping auf 25565/TCP und RakNet-Ping auf 19132/UDP antworten beide, MOTD und Spielerzahl werden vom Java-Server an die Bedrock-Serverliste durchgereicht.

Verbinden

  • Java Edition: Adresse <Server-IP>, Port 25565
  • Bedrock Edition: Server hinzufuegen, Adresse <Server-IP>, Port 19132
  • Vom selben Rechner: localhost bzw. 127.0.0.1

Auf Konsolen (Switch, PS, Xbox) laesst sich oft keine freie Serveradresse eintragen. Ueblicher Weg dort: DNS-Umleitung im Heimnetz oder ein Dienst wie BedrockConnect.

Bedrock-Spieler erscheinen mit einem Punkt vor dem Namen, z.B. .MeinGamertag. Das ist der Floodgate-Praefix; er verhindert Namenskollisionen mit Java-Accounts. Aendern laesst er sich in plugins/floodgate/config.yml (username-prefix).

Firewall (Windows)

Docker Desktop oeffnet die Ports nur lokal. Fuer Zugriff aus dem LAN muessen beide Ports durch die Windows-Firewall — in einer Admin-PowerShell:

New-NetFirewallRule -DisplayName "Minecraft Java 25565" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow
New-NetFirewallRule -DisplayName "Minecraft Bedrock 19132" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow

Fuer Zugriff aus dem Internet zusaetzlich im Router portforwarden: 25565/TCP und 19132/UDP. Bedrock laeuft ueber UDP — ein reines TCP-Forwarding reicht nicht.

Erreichbarkeit pruefen

Sobald der Router-Port offen ist, testet Geyser die Erreichbarkeit von aussen selbst — das fragt einen oeffentlichen GeyserMC-Testdienst an, uebermittelt also deine oeffentliche IP und den Port dorthin:

docker compose exec minecraft rcon-cli "geyser connectiontest"

Betrieb

docker compose ps

Serverkonsole (Befehle wie op, whitelist, save-all):

docker compose exec minecraft rcon-cli

Einzelner Befehl:

docker compose exec minecraft rcon-cli op DeinName

Sauber stoppen (die Welt wird gespeichert, bis zu 2 Minuten Zeit):

docker compose down

Updates

  • Geyser/Floodgate: werden bei jedem Containerstart in der aktuellsten Version geladen. Nach einem Bedrock-Update also einfach docker compose restart — Geyser zieht dann den passenden Build nach.
  • Paper/Minecraft: MC_VERSION in der .env ist fest auf 26.3 gepinnt. Fuer ein Update die Zahl anheben (oder LATEST fuer immer die neueste Version).
  • Image: docker compose pull && docker compose up -d

Weitere Plugins

URL in docker-compose.yml unter PLUGINS als weitere Zeile ergaenzen, dann docker compose up -d. Aus der Liste entfernte Plugins werden beim naechsten Start auch aus dem plugins-Ordner geloescht.

Fuer Bedrock-Spieler gilt: Plugins moeglichst simpel halten. Komplexe Chest-GUI-Menues (Auktionshaeuser, Shop-Menues) funktionieren ueber Geyser oft nur fehlerhaft. Plugins mit Formular-Unterstuetzung fuer Bedrock sind die bessere Wahl.

Konfiguration aendern

  • server.properties: ueber die .env bzw. die Environment-Variablen in docker-compose.yml. Direkte Aenderungen an der server.properties im Volume werden bei diesen Werten beim naechsten Start ueberschrieben.
  • Geyser: config/plugins/Geyser-Spigot/config.yml bearbeiten, dann docker compose restart. Die Datei aus dem Projektordner gewinnt, sobald sie neuer ist als die im Volume.
  • Alles andere (Floodgate, weitere Plugins): liegt im Volume. Anschauen mit
docker compose exec minecraft cat /data/plugins/floodgate/config.yml

Dauerhaft vorgeben laesst es sich, indem man die Datei unter config/plugins/<Plugin>/ im gleichen Pfadaufbau ablegt.

Backup

Welt und Plugin-Daten aus dem Volume in eine Datei sichern:

docker run --rm -v mc-crossplay_mc-data:/data -v "$PWD":/backup alpine tar czf /backup/mc-backup.tar.gz -C /data .

Vorher docker compose exec minecraft rcon-cli save-all ausfuehren oder den Server stoppen, damit die Welt konsistent auf der Platte liegt.

Deployment in die Oracle Cloud

Der Umzug auf die OCI-Instanz hinter minecraft.djnizz.at ist in DEPLOY-ORACLE.md beschrieben.

Bekannte Einschraenkungen

  • Bedrock unterstuetzt nicht alle Java-Features grafisch 1:1 (bestimmte Bannermuster, manche Offhand-Interaktionen) — kleine optische Abweichungen sind normal.
  • Geyser erzeugt einen leichten CPU-Overhead pro Bedrock-Spieler. Auf moderner Hardware faellt das nicht ins Gewicht.
  • Bedrock-Spieler haben keine Java-Chatsignatur, deshalb ist enforce-secure-profile=false gesetzt. Ohne das fliegen sie beim Chatten raus.

Troubleshooting

Bedrock-Client findet den Server nicht — meist die Firewall oder ein fehlendes UDP-Forwarding. Test vom Host aus:

docker compose exec minecraft sh -c "netstat -uln | grep 19132"

„Unable to connect to world" — pruefen, ob Geyser sauber gestartet ist:

docker compose logs | grep -i geyser

Container startet in einer Schleife neu, Log sagt „requires Java 25 or above" — dann zeigt das Image-Tag auf eine zu alte JVM. Minecraft 26.x braucht Java 25, das Tag in docker-compose.yml muss stable-java25 (oder neuer) bleiben.

Bedrock-Spieler wird nach Java-Account gefragt — dann greift auth-type nicht. Kontrolle:

docker compose exec minecraft grep -A2 "^java:" /data/plugins/Geyser-Spigot/config.yml
S
Description
No description provided
Readme
65 KiB
Languages
Python 100%