Artikel

Eine Bedrock-Welt nach Java holen

Die Welt, in der wir seit Monaten bauen, sollte auf einen Java-Server umziehen. Welches Werkzeug das kann, was dabei verloren geht — und die 30 Sekunden, in denen man nicht abbrechen darf.

BlackZackBlackzack

1053 Wörter · 5 Min. Lesezeit

  • minecraft
  • bedrock
  • werkzeuge

Die Entscheidung war gefallen: Der Server wird ein Java-Server, die Bedrock-Spieler kommen über die Übersetzungsschicht dazu. Bleibt eine Frage, an der alles hängt — was passiert mit der Welt, in der seit Monaten gebaut wird?

Das Werkzeug

Es gibt ein Werkzeug für genau diesen Zweck: Chunker, ein Konverter zwischen den Weltformaten, den man auch als Kommandozeilenprogramm bekommt.

java -jar chunker-cli.jar -f JAVA_26_2 -i "./Bedrock level" -o ./welt-java

Zwei Hinweise, die mir Zeit gespart hätten, wenn ich sie vorher gewusst hätte:

Die Versionsnummer des Werkzeugs hat nichts mit der Minecraft-Version zu tun. Ich habe eine ganze Weile nach einer Fassung gesucht, die zu meiner Zielversion passt. Sie ist unabhängig — welche Formate unterstützt werden, listet das Programm auf, wenn man ihm einen absichtlich ungültigen Formatwert gibt.

Das Eingabeformat wird erkannt. Man gibt nur das Ziel an.

Die Konvertierung selbst dauerte bei unserer Welt wenige Minuten.

Was verloren geht

Das ist der Teil, den man vorher wissen will.

Gelände, Bauten, Truheninhalte, Karten: vollständig. Das ist die gute Nachricht und der weitaus größte Teil.

Entitäten teilweise. Die Umwandlung meldet fehlende Zuordnungen für bestimmte Wesen — bei uns unter anderem Skelette, Zombie-Dorfbewohner, Händler-Lamas und Pfeile. Sie sind danach weg.

Nebendimensionen, die auf Bedrock nie besucht wurden, werden auf Java neu erzeugt. Bei uns waren Nether und Ende praktisch leer, das war also kein Verlust.

Der Punkt mit den Entitäten hat später noch für Verwirrung gesorgt: Auf dem neuen Server fehlten Tiere — Kühe, Schafe. Nicht weil etwas kaputt war, sondern weil sie zu den Wesen gehörten, die bei der Umwandlung verloren gehen. In vollständig geladenen, alten Chunks entstehen keine neuen mehr. Wer das nicht weiß, sucht den Fehler im Server.

Infobox

Für die Prüfung, ob so etwas vorliegt, braucht man keinen Neustart: Man kann in den Weltdaten nachsehen, welche Wesen tatsächlich gespeichert sind. Das ist wichtig, wenn Leute online sind — ein Serverneustart, um eine Vermutung zu prüfen, ist der falsche Weg. Messen geht auch ohne.

Die 30 Sekunden, in denen man nicht abbricht

Beim ersten Start des Servers mit der konvertierten Welt passiert etwas, das aussieht wie ein Fehler.

Der Server meldet eine Weltordner-Migration und wartet dreißig Sekunden mit einem Hinweis, dass man jetzt abbrechen kann. Danach ordnet er die Verzeichnisse selbst um.

Ich habe beim ersten Mal abgebrochen, weil ich die Meldung für eine Warnung hielt. Man darf das nicht — der Server macht genau das Richtige, und der Abbruch führt zu einem halb umgestellten Zustand.

Wie ich es abgesichert habe

Der Ablauf, den ich mir dafür zurechtgelegt habe und der sich seitdem mehrfach bewährt hat:

  1. Bedrock-Server stoppen und vollständig sichern. Nicht im laufenden Betrieb kopieren — die Lehre aus 2019.
  2. Konvertieren, in ein neues Verzeichnis. Die Quelle bleibt unangetastet.
  3. Java-Server mit der neuen Welt starten, aber noch nicht öffentlich erreichbar.
  4. Nachsehen: Ist die Basis da? Sind die Truhen gefüllt? Funktionieren die Bauwerke?
  5. Erst dann umstellen.

Der vierte Punkt klingt banal, ist aber der einzige, der eine echte Aussage liefert. Eine Konvertierung, die ohne Fehler durchläuft, sagt nur, dass das Werkzeug zufrieden ist.

Die Prüfungen nach der Umwandlung

Eine Umwandlung, die ohne Fehler durchläuft, sagt nur, dass das Werkzeug zufrieden ist. Das sind die Prüfungen, die ich seitdem mache — alle ohne laufenden Server, direkt auf den Dateien.

Die Datenversion in den Weltdaten. Der schnellste Beleg, dass tatsächlich umgewandelt wurde und auf welchen Stand.

Die Zahl der Regionsdateien vorher und nachher. Sie sollte ungefähr gleich sein; große Abweichungen sind ein Warnsignal.

Eine Stichprobe der Blockpalette in bekannten Bereichen. Stehen dort moderne Kennungen? Sind Blöcke vorhanden, die es geben muss?

Die Wesen in den Entitätsdateien. Was ist mitgekommen, was fehlt? Genau hier hätte ich die fehlenden Tiere sofort gesehen, statt sie Wochen später im Spiel zu vermissen.

Die Kartendaten und Truheninhalte an einer bekannten Stelle. Wenn die Kiste in der Basis noch das enthält, was sie enthalten soll, ist die Wahrscheinlichkeit hoch, dass der Rest auch stimmt.

Was ich über Werkzeuge dieser Art gelernt habe

Ein Konverter zwischen zwei komplexen Formaten trifft ständig Entscheidungen, und die meisten davon sieht man nicht.

Was er nicht zuordnen kann, lässt er weg — und meldet das, wenn man hinsieht. Meine Meldungen habe ich beim ersten Durchlauf überflogen, weil sie lang waren und nach Details aussahen. Genau dort stand, welche Wesen verlorengehen.

Seitdem lese ich die Ausgabe solcher Werkzeuge vollständig und schreibe die Warnungen auf. Nicht weil jede wichtig ist — die meisten sind es nicht —, sondern weil man hinterher nicht mehr feststellen kann, ob eine wichtige dabei war.

Das ist dieselbe Lektion wie beim Bauprotokoll, in dem eine Abbruchmeldung zwischen hunderten Zeilen unterging. Ausgaben, die niemand liest, sind Ausgaben, die es nicht gibt — und das gilt unabhängig davon, wie gut das Werkzeug sie formuliert.

Was nach der Umwandlung noch anfiel

Die Welt war umgewandelt und lief. Was danach kam, hatte mit der Umwandlung nichts zu tun und gehört trotzdem zur Geschichte.

Die fehlenden Tiere. Bestimmte Wesen kommen nicht mit, und in vollständig geladenen Bereichen entstehen keine neuen. Wer eine Farm hatte, hat sie danach nicht mehr. Die Abhilfe ist unspektakulär: neu einsetzen, oder unerkundetes Gelände suchen.

Die Spielerdaten. Positionen, Inventare, Fortschritte — sie hängen an einer Kontenkennung, und die ist auf beiden Spielfassungen verschieden. Die Bedrock-Konten bekommen über die Kontenbrücke eine Kennung, die aus ihrer Bedrock-Identität abgeleitet ist. Das bedeutet in der Praxis: Ein Spieler startet auf dem neuen Server mit leerem Inventar, auch wenn seine Bauten alle da sind.

Die Erwartungshaltung. Der wichtigste Punkt und der einzige, der nicht technisch ist. Wer nicht vorher weiß, dass sein Inventar leer sein wird, hält es für einen Fehler.

Diese dritte Sache habe ich mir für alle künftigen Umzüge gemerkt: Erst ankündigen, was verlorengeht, dann umziehen. Nicht andersherum.

Was die Umstellung gebracht hat

Statistiken, ohne dass ich sie selbst zähle. Der Punkt, der mich am meisten gefreut hat. Auf Bedrock hatte ich ein eigenes Addon gebaut, um überhaupt Zahlen zu haben. Auf Java zählt der Server das von sich aus mit.

Eine Plugin-Welt. Schutz von Bereichen, Rückgängigmachen von Schäden, Kartendarstellung, Rechteverwaltung — alles vorhanden statt selbst gebaut.

Kontrolle über die Version. Der Server bleibt, wo ich ihn haben will.

Was ich dafür in Kauf nehme: Die Bedrock-Seite hängt jetzt an einer Übersetzungsschicht, die ich aktuell halten muss, weil sich die Clients selbst aktualisieren. Das ist ein dauerhafter Wartungsposten, und er war mir den Tausch wert.