Upgrade einer Minecraft-Welt erzwingen

Meine mittlerweile über fünfzehnjährige Minecraft-Welt Akaria, belegt speichertechnisch bereits etliche Gigabyte auf der Festplatte. Allerdings ist dies bei solchen gewachsenen Welten nicht unbedingt das Problem. Bedingt durch viele Upgrades der Minecraft-Server-Versionen und damit einhergehenden Änderungen, wie z.B. am Chunk-Format, befindet sich irgendwann ein buntes Sammelsurium an Daten in den Weltordnern. An sich ist dies kein Problem, da Chunks beim Laden im Spiel automatisch konvertiert werden.

Ein Teil der Minecraft-Welt Akaria

Allerdings kann dies bei vielen Chunks mit Performanceeinbußen verbunden sein und die Chunks könnten teilweise noch Daten enthalten, die nur aufgrund vorheriger Versionen in diesen schlummern, aber in dieser Form nicht mehr benötigt werden. In einem solchen Fall bietet es sich an ein Upgrade aller Chunks und Regionen zu erzwingen:

screen java -Xms16G -Xmx16G -jar server.jar --forceUpgrade --recreateRegionFiles --eraseCache

Durch den Screen-Befehl kann die Session im Hintergrund weiterlaufen, nachdem sie detached wurde (Strg + A, anschließend Strg + D; Wiederaufruf mittels screen -r).

Damit beginnt der Minecraft-Server die Entities, POIs und Chunks zu upgraden. Während dieses Vorgangs, der je nach Welt, etliche Stunden dauern kann, ist der Minecraft-Server nicht erreichbar. In der Log-Datei latest.log kann der Fortschritt verfolgt werden:

[20:21:17] [Server thread/INFO]: 3% completed (10558 / 343881 chunks)...
[20:21:18] [Server thread/INFO]: 3% completed (10613 / 343881 chunks)...
[20:21:19] [Server thread/INFO]: 3% completed (10661 / 343881 chunks)...
[20:21:20] [Server thread/INFO]: 3% completed (10736 / 343881 chunks)...
[20:21:21] [Server thread/INFO]: 3% completed (10818 / 343881 chunks)...
[20:21:22] [Server thread/INFO]: 3% completed (10869 / 343881 chunks)...
[20:21:23] [Server thread/INFO]: 3% completed (10906 / 343881 chunks)...

Während die Option forceUpgrade dafür sorgt, dass der Upgradeprozess überhaupt angestartet wird, sorgt recreateRegionFiles dafür das neue und saubere Region-Dateien erzeugt werden, anstatt die alten Dateien nur zu bearbeiten. Die Option eraseCache löscht cacheähnliche Daten aus den NBT-Daten, darunter unter anderem Heightmaps, BlockLight und SkyLight. Diese Daten werden beim Neuladen der Chunks im Server ebenfalls wieder neu erzeugt.

Ist der Vorgang am Ende abgeschlossen, kann der temporär gestartete Server beendet werden und der Minecraft-Server wieder im Produktivbetrieb gestartet werden. Durch das Upgrade, das Löschen der Caches und der Neuanlage der Regionen, sollten viele Altlasten und potenzielle Probleme aus den Daten entfernt werden. Dies schlägt sich im Endeffekt auch positiv auf die Performance des Spieles im Serverbetrieb nieder.

Minecraft-Backup partiell einspielen

Ein Backup ist immer eine gute Idee. Vor allem dann, wenn es das Backup eines Minecraft-Servers ist. Immerhin, kann es dort durchaus einmal zu Unfällen kommen. In einem solchen Fall ist es sinnvoll das vorhandene Backup einzuspielen.

Unfälle passieren; ein Backup sichert so etwas ab

Natürlich soll in den meisten Fällen nicht ein komplettes Backup, sondern nur der betroffene Teil neu eingespielt werden. In diesem Fall sollte allerdings klar sein, wo sich die betroffenen Teile befinden. Die einzelnen Chunks der Minecraft-Welt werden in sogenannten Region-Dateien zusammengefasst. Diese Region-Dateien finden sich im Ordner region, in den Minecraft-Daten.

Mit den Coordinate Tools kann anhand der Koordinaten die entsprechende Region ermittelt werden

Um herauszufinden, welche Regionen neu eingespielt werden müssen, können die Coordinate-Tools des Entwicklers Dinnerbone genutzt werden. Dazu müssen die Koordinaten der beschädigten Region über den Debug-Screen (F3) im Spiel ermittelt werden. Diese Koordinaten werden in die Coordinate-Tools eingegeben. In der Sektion Region Information finden sich anschließend der Dateiname der entsprechenden Region. Diese Datei kann dann vom Backup in den region-Ordner eingespielt werden. Der Minecraft-Server sollte vor dem Einspielen des Backups heruntergefahren und anschließend wieder hochgefahren werden.