Command Blocks in Minecraft sind zwei Dinge: Nützlich und totaal unpraktisch. Als ich vor kurzem auf der Suche nach einer Möglichkeit war, sehr schnell automatisiert zu Testzwecken eine Eisenfarm zu bauen, fand ich erstaunlicherweise keinen Befehl dafür. Obwohl es sonst sehr abgefahrenes Zeug gibt. Vielleicht war mein Anliegen ja zu profan.
Das heißt also, dass ich selbst ans Werk musste. Im Creative Mode kann man ja mit dem Kommandos /setblock und /fill Blöcke an definierte Koordinaten setzen. Diese Befehle kann man auch in Command Blocks hinterlegen. Das Problem: In so einen Block passt nur genau 1 Befehl. Eine ausgewachsene Eisenfarm (zum Beispiel diese lustigen Türme hier) braucht aber mehrere davon.
Die Lösung: Man schreibt einen Befehl, der mehrere weitere Command Blocks erstellt, die dann die eigentlichen Befehle ausführen. Dafür “beschwört” man Sandblöcke, die fallen (FallingSand), aber gar keine Sandblöcke sind, sondern Command Blocks, und die auf weiteren FallingSand-Blöcken “reiten”, die Command Blocks sind, und die wiederum auf weiteren Blöcken “reiten”… bis man einen stattlichen Turm beisammen hat. Klingt abgefahren, ist es auch.
Für die Umwandlung der eigentlichen Befehle in diese Kaskade aus FallingSand-Blöcken habe ich mir ein Python-Skript geschrieben, das mir diese lästige Arbeit abnimmt. Da es sich doch um arg viele Befehle handelt und dieser Turm aus Command Blocks nicht unbegrenzt hoch werden kann, musste ich außerdem noch etwas bei der Anordnung der Blöcke tricksen. Das Ergebnis funktioniert, solange man sich nicht allzu hoch hinaus wagt.
Es gibt auch ein kleines Demonstrationsvideo:
Den Command gibt es hier. Außerdem nervig: Command Blocks können nur Commands mit einer maximalen Länge von ca. 32.767 Byte speichern. Da komme ich mit meinen 29.000 Zeichen schon relativ nahe ran…
[Update] Durch ein bisschen Optimierung habe ich den Command auf nur noch 15881 Zeichen herunterbekommen. Außerdem ist er jetzt viel schneller und funktioniert auch in größerer Höhe als vorher. Klick.