Eine Minecraft-Straßenkarte für den Nether basteln

Für den Minecraft-Server auf ironhide.de gibt es seit Mitte Juli eine mit Mapcrafter erstellte Google-Maps-artige Onlinekarte. Die ist sehr cool, da sich mit ihr gut Entfernungen und relative Positionen abschätzen lassen. Und natürlich kann man auf ihr die vielen prächtigen Bauwerke bewundern.1

Im Nether, der anderen Dimension, klappt das leider nicht ganz so gut: Der hat nämlich unten und oben eine Decke, man kann also nur sehr schlecht von oben reinsehen. Abhilfe schaffen entweder die (sehr bunte und unübersichtliche) Cave-Ansicht oder ein Abschneiden aller Blöcke ab einer bestimmten Höhe. Während das auf der betreffenden Karte im Startgebiet noch relativ ansehlich aussieht, weil nach oben relativ viel Platz ist, sieht man anderswo nur noch die rote Decke.

Ich hätte deshalb gerne eine 2D-Karte, auf der die Verkehrswege übersichtlich eingezeichnet und vor allem die Bahnstrecken gut zu erkennen sind. Das lässt sich zwar händisch malen, aber da ich faul bin, suchte ich einen Weg, das Ganze zu automatisieren.

Zum Glück gibt es eine Python-Bibliothek, mit der sich Minecraft-Maps bearbeiten lassen: pymclevel. Mehr brauchte ich eigentlich nicht.

Praktischerweise sind die meisten wichtigen Wege auf unserer Karte aus ästhetischen und sonstigen Gründen aus Stein gebaut, der in dieser Dimension nicht “natürlich” vorkommt. Wenn man also die Position aller Steinblöcke kartographiert, sollte man ein akzeptables Abbild des Wegenetzes bekommen.

Ich schrob also zwei Skripte: Eins, das die Karte lädt, daraus die Nether-Dimension lädt und dann die Position aller Steinblöcke, Schienen, Obsidianblöcke (für Portale) und Netherziegel (für Netherfestungen) ausliest. Und ein zweites, das daraus eine SVG-Karte bastelt.

Für den ironhide-Server sieht die dann zum Beispiel so aus:

mcpaths

Klick misch für die interaktive Version!

Hübsch.

Das Projekt gibt es auf GitHub zum selbst ausprobieren. Bitte zunächst die README.md lesen 😉

Hinweis: Wie wir festgestellt haben (*hust*), sollte man das Tool nicht auf einer Karte ausführen, die gerade bespielt wird. pymclevel setzt offenbar einige Schreibsperren, wodurch sich Minecraft verschluckt und alle Änderungen an der Welt wieder verschwinden, sobald der entsprechende Teil der Welt (Chunk) aus dem Speicher fliegt und eigentlich auf der Festplatte gesichert werden müsste.

Mit Karten der neuen Version 1.8 funktioniert das Tool auch (eben getestet).

Oh, und pymclevel benötigt übrigens die python-Pakete numpy und PyYaml.

  1. Seit dem Upgrade auf die Minecraft-Version 1.8 verschwinden leider die Markierungen wieder, sobald man das betreffende Gebiet der Karte betritt. Hier wäre wohl mal ein Mapcrafter-Upgrade fällig.