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.

Uhrzeit und Datum in der Menüleiste unter macOS

Unter macOS gibt in der Menüleiste eine Anzeige für das Datum und die Uhrzeit. Diese kann dabei nach den Wünschen des Nutzers angepasst werden. Allerdings finden sich die entsprechenden Einstellungen nicht unter Sprache & Region.

Die Einstellungen für das Dock und die Menüleiste

Stattdessen muss in den Einstellungen der Punkt Dock & Menüleiste geöffnet werden. In diesem findet sich dann auf der linken Seite der Punkt Uhr. Dort kann die Uhr in der Menüleiste entsprechend an die Wünsche des Nutzers angepasst werden.

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.

Regionsspezifische Zeichen unter Java ermitteln

Auf der Welt existieren eine Reihe von Konventionen rund um das Thema Formatierung von Zahlen und anderen Werten. So existieren z.B. unterschiedlichste Reglungen für Dezimaltrennzeichen. Unter Java lassen sich diese dank der entsprechenden Unterstützung problemlos einbinden. So können Werte anhand der Locale, welche eine definierte Region repräsentiert, einfach formatiert werden:

double value = 42.2324;
String format = "#.00";

DecimalFormat decimalFormat = new DecimalFormat(format, DecimalFormatSymbols.getInstance(Locale.GERMANY));
String formattedString = decimalFormat.format(value);

System.out.println(formattedString);

In diesem Beispiel wird der Wert 42.2324 anhand der Locale und einer Formatierung in den Wert 42,23 konvertiert. Manchmal ist es allerdings notwendig Informationen über die einzelnen Trennzeichen und ähnliches zu erlangen. Auch diese Informationen können unter Java ermittelt werden:

Locale locale = new Locale("en", "GB");
DecimalFormat format = (DecimalFormat) DecimalFormat.getInstance(locale);

char decimalSeparator = format.getDecimalFormatSymbols().getDecimalSeparator();
char groupingSeparator = format.getDecimalFormatSymbols().getGroupingSeparator();
Currency currency = format.getDecimalFormatSymbols().getCurrency();

Hier wird eine Locale angelegt und mit dieser eine Instanz der Klasse DecimalFormat erzeugt. Anschließend kann diese Instanz genutzt werden, um die regionsspezifischen Zeichen wie z.B. den Dezimalseparator zu ermitteln.

Breitbandatlas

Vor ein paar Tagen war ich für eine bestimmte Region auf der Suche nach den angebotenden Breitbandanschlüssen. Fündig geworden bin ich schlussendlich beim Breitbandatlas, welcher vom Bundesministerium für Verkehr und digitale Infrastruktur angeboten wird.

Der Breitbandatlas in Aktion

Der Breitbandatlas in Aktion

Dort lassen sich die gewünschten Regionen nach bestimmten Kriterien wie der Bandbreite filtern und anzeigen. Die Bedienung ist leider etwas hakelig und die verwendeten Farbschema für die Skala sind gewöhnungsbedürftig – am Ende erfüllt die Karte allerdings ihren Zweck. Zu finden ist der Atlas unter zukunft-breitband.de.