Der Minecraft-Baukasten

Gebäude als JSON beschreiben, per RCON in die Welt bauen und im Spiel von Hand verfeinern. Mit ein paar Skripten wird aus Blueprints eine ganze Stadt.

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:

BASH
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-server
Klicken Sie zum Erweitern und mehr anzeigen

Port 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.

PLAINTEXT
just front rathaus.json              # 5 Blöcke vor Dir
Klicken Sie zum Erweitern und mehr anzeigen

Das 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.

PLAINTEXT
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 weitermachen
Klicken Sie zum Erweitern und mehr anzeigen

Von 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:

PLAINTEXT
just backup                          # Welt sichern
just restore backups/<datei>.tar.gz  # Backup einspielen
Klicken Sie zum Erweitern und mehr anzeigen

Fazit

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

Suche starten

Geben Sie Schlüsselwörter ein, um Artikel zu suchen

↑↓
↵
ESC
⌘K Tastenkürzel