Irgendwann greift die Automatisierungsbegeisterung auch auf das Gaming über. Ein Haus Block für Block zu setzen macht Spaß, das zehnte Bürgerhaus mit gleichem Grundriss nicht mehr. Der Minecraft-Baukasten nimmt Dir diese Fleißarbeit ab: Du beschreibst Gebäude als JSON-Datei, ein Skript baut sie auf Knopfdruck in die Welt, und Dein Aufwand konzentriert sich auf die Details, die ein Haus wirklich ausmachen.
Der Baukasten ist bewusst ein rudimentäres Mini-Projekt. Er läuft nur zusammen mit einem Server, setzt keine Mods auf dem Client voraus und braucht außer Python und just
nichts Besonderes.
Die Idee in drei Sätzen
Ein Blueprint ist eine JSON-Datei mit einer Palette (Name → Blockstate) und einer Liste von Operationen wie fill, hollow_box, carve, setblock, cylinder oder gable_roof. Das Skript bp2rcon.py übersetzt diese Operationen in /fill- und /setblock-Befehle und schickt sie über das RCON-Protokoll an den Server. Wer lieber mit WorldEdit arbeitet, erzeugt aus demselben Blueprint mit bp2nbt.py eine .nbt-Datei.
Warum JSON statt einer fertigen Schematic? Weil Text sich versionieren, vergleichen und mit Skripten erzeugen lässt. Ein Dachtyp lässt sich mit einer Zeile ändern, und ein Blueprint kann per Python-Skript generiert werden (so entstehen bei mir etwa die Marmortreppe im Rathaus und der Friedhof).
Der Server
Voraussetzung ist ein Server mit aktiviertem RCON. Mit Docker oder Podman ist er schnell aufgesetzt und ermöglicht auch das gemeinsame Spielen im LAN. Ich verwende Purpur
(ein schneller Paper-Fork) und das Image itzg/minecraft-server:
podman run -d --name mc-preprod \
-e EULA=TRUE -e TYPE=PURPUR -e VERSION=LATEST \
-e MODE=creative -e MEMORY=2G \
-e ENABLE_RCON=true -e RCON_PASSWORD=changeme \
-p 127.0.0.1:25565:25565 \
-p 127.0.0.1:25575:25575 \
-v ./data:/data:Z \
docker.io/itzg/minecraft-serverPort 25575 ist der RCON-Port. Er ist hier absichtlich nur auf 127.0.0.1 gebunden, denn wer RCON erreicht, hat volle Serverrechte.
Bequemer geht es mit dem mitgelieferten Justfile. Passe dort Spielername, Passwort und Weltname an und starte mit just init. Nach einigen Sekunden kannst Du den lokalen Server im Minecraft unter Multiplayer hinzufügen. just reset löscht die Welt und erzeugt sie neu.
Gebäude bauen: just front
Jeder Blueprint hat einen Eingangspunkt ("entry"): die Stelle vor der Tür, an der der Spieler steht, plus die Richtung, in die der Eingang zeigt. Er dient als Bezugspunkt für alle Platzierungen.
just front rathaus.json # 5 Blöcke vor DirDas Skript liest per RCON Deine Position und Blickrichtung und platziert das Gebäude vor Dir, den Eingang zu Dir gedreht. Du musst also auf Bodenhöhe stehen, die Standhöhe wird zur Bodenhöhe des Gebäudes. Gedreht wird in 90°-Schritten; Stufen, Türen, Fackeln und alle anderen Blöcke mit Ausrichtung werden dabei passend mitgedreht.
So reihst Du Häuser zu einer Straße: Blickrichtung zur Straße, ein Stück zurücktreten, just front buergerhaus.json 10, seitlich versetzen, wiederholen. Mit Turn 180 baust Du die Gegenseite der Straße.
Wer sehen will, was passiert, bevor etwas gebaut wird, nutzt just front-dry (zeigt nur die Befehle) oder just front-step (baut Schritt für Schritt per Enter).
Die ganze Stadt: just stadt
Für das große Bild gibt es stadt.py. Es liest stadt.json mit allen Gebäuden (Blueprint, Eingangspunkt in Stadtkoordinaten, Richtung), Straßen und Marktplatz und baut Boden, Straßen, Plätze, Brunnen, Laternen und alle Gebäude in einem Lauf.
Du stellst Dich auf ebenen Boden an die Nordwest-Ecke der Stadt, der Rest ergibt sich aus den Koordinaten im Layout. Dabei lädt das Skript die betroffenen Chunks per /forceload selbst, sonst bricht der Server bei großen Flächen mit „That position is not loaded" ab. Auf hügeligem Gelände hilft --terraform, das den Untergrund vorher einebnet.
just stadt-map # Plan als Text, nichts wird gebaut
just stadt # alles bauen
just stadt --only rathaus,kirche # nur einzelne Teile
just stadt --from gasthaus # nach einem Abbruch weitermachenVon Hand verfeinern und zurückholen
Der Baukasten liefert Grundriss, Hülle und eine grobe Einrichtung. Die Details gestaltest Du anschließend im Spiel: ein Regal hier, ein Kamin dort. Wenn eine Änderung in den Blueprint zurückfließen soll, exportierst Du den Bereich mit WorldEdit als .schem; ein weiteres Skript vergleicht die Datei mit dem Blueprint und hängt nur die Unterschiede als Operationen an. So bleibt der Blueprint die Quelle der Wahrheit, und jedes weitere Haus profitiert von Deinen Verbesserungen.
Backups nicht vergessen
Wenn etwas nicht geklappt hat, keine Sorge: Ein Backup davor genügt. Der Server läuft dabei weiter, er wird nur kurz für das Speichern angehalten:
just backup # Welt sichern
just restore backups/<datei>.tar.gz # Backup einspielenFazit
Der Baukasten erzeugt die Strukturen für eine Stadt mit grober Inneneinrichtung und spart so viele Stunden Handarbeit. Für Details kannst Du die JSON-Dateien anpassen oder im Spiel selbst Hand anlegen. Der Aufwand verschiebt sich vom Klötzchensetzen zum Gestalten, und das ist der Teil, der Spaß macht.
Kommentare