Minecraft – hszemi.de https://hszemi.de the only difference between screwing around and science is writing it down Sun, 21 Aug 2016 17:00:15 +0000 de-DE hourly 1 https://wordpress.org/?v=4.5.3 Favorite & Forget: Minecraft-Command-Fernsteuerung https://hszemi.de/2016/07/favorite-forget-minecraft-command-fernsteuerung/ https://hszemi.de/2016/07/favorite-forget-minecraft-command-fernsteuerung/#respond Sun, 10 Jul 2016 16:37:50 +0000 https://hszemi.de/?p=2577 Mehr]]> Manchmal möchte man eine Reihe von Minecraft-Commands hintereinander ausführen, aber das ganze in eine Command-Block-Kette zu packen ist wahlweise

  • zu aufwändig, da alles sowieso nur ein einziges Mal ausgeführt werden soll, oder
  • nicht möglich, da es zu viele Commands sind, und deshalb das Zeichenlimit überschritten würde.

In so einem Fall hilft xdotool weiter. Die auszuführenden Commands liegen zeilenweise in der Datei commands.txt1:

/tp 593 42 -613
/fill 593 40 -613 603 40 -613 gold
/fill 593 40 -612 603 40 -612 gold
/fill 593 40 -611 603 40 -611 gold
/fill 593 40 -610 604 40 -610 gold
/fill 593 40 -609 604 40 -609 gold
/fill 594 40 -608 604 40 -608 gold
/fill 594 40 -607 604 40 -607 gold
/fill 594 40 -606 605 40 -606 gold
/fill 594 40 -605 605 40 -605 gold
/fill 595 40 -604 605 40 -604 gold
/fill 595 40 -603 605 40 -603 gold
/fill 595 40 -602 606 40 -602 gold
/fill 595 40 -601 606 40 -601 gold
/fill 596 40 -600 606 40 -600 gold
/fill 596 40 -599 606 40 -599 gold
/fill 596 40 -598 606 40 -598 gold
/fill 596 40 -597 607 40 -597 gold
/fill 596 40 -596 607 40 -596 gold
/fill 597 40 -595 607 40 -595 gold
/fill 597 40 -594 607 40 -594 gold
/fill 597 40 -593 608 40 -593 gold
[…]

Das folgende Shellscript führt sie mit einem Abstand von circa einer Sekunde aus.

#! /bin/bash

sleep 5

while read LINE
do
    echo "$LINE";
    xdotool type "t"
    sleep 0.3
    xdotool type "$LINE"
    sleep 0.3
    xdotool key KP_Enter
    sleep 0.3
done < commands.txt

Shellscript ausführen, Minecraft-Fenster aktivieren, Kaffee trinken gehen.

  1. Fragt nicht, warum es jetzt genau diese Kommandos sind.
]]>
https://hszemi.de/2016/07/favorite-forget-minecraft-command-fernsteuerung/feed/ 0
Schwebende Totenköpfe und wie man sie loswird https://hszemi.de/2016/04/schwebende-totenkoepfe-und-wie-man-sie-loswird/ https://hszemi.de/2016/04/schwebende-totenkoepfe-und-wie-man-sie-loswird/#comments Sun, 17 Apr 2016 18:11:37 +0000 https://hszemi.de/?p=2383 Mehr]]> Wenn man – also nur hochtheoretisch – in Minecraft einen Wither im End spawnt1, und der dann durch das Portal entfleucht – ja dann ist das erstmal blöd. Weil er dann in der normalen Welt wieder auftaucht und dort wild um sich schießt. Macht Löcher in die Landschaft. Nicht hübsch.

Wenn man den dann wieder eingefangen und die gröbsten Schäden beseitigt hat, ergibt sich ein neues Problem: Kommt so ein Wither-Projektil an die Grenze eines Chunks, der nicht geladen ist, verschwindet es nicht einfach, sondern bleibt dort stehen. Theoretisch werden Projektile mit Geschwindigkeit 0 nicht angezeigt, aber nun ja, Theorie und Praxis haben an dieser Stelle nicht viel miteinander zu tun. Das heißt, man hat dann in etwa so einen Ausblick:

Hübsche

Hübsche Totenköpfe schweben in der Luft. Die blauen Linien sind die Blickrichtungen, angezeigt durch F3+B.
Die Krater in der Wüste im Hintergrund stammen übrigens vom entfleuchten Wither.

Die Totenköpfe haben keine Hitbox, das heißt man kann durch sie hindurchlaufen/fliegen, sie aber nicht schlagen. Mit einem Piston und einem Schleimblock können sie interessanterweise wieder beschleunigt werden. Bei so vielen Köpfen macht das aber keinen Spaß.

Kuckuck!

Kuckuck!

Los wird man die Totenköpfe, indem man (entsprechende Rechte vorausgesetzt) in der Eingabezeile folgendes eingibt:

/kill @e[type=WitherSkull]

Das „tötet“ alle Entities vom Type WitherSkull. Und der Blick gen Himmel ist wieder unverstellt.

  1. Denglisch to the max!
]]>
https://hszemi.de/2016/04/schwebende-totenkoepfe-und-wie-man-sie-loswird/feed/ 1
Eisenfarm und Eisengolem: Instandhaltungsarbeiten https://hszemi.de/2016/04/eisenfarm-und-eisengolem-instandhaltungsarbeiten/ https://hszemi.de/2016/04/eisenfarm-und-eisengolem-instandhaltungsarbeiten/#respond Sat, 02 Apr 2016 12:08:04 +0000 https://hszemi.de/?p=2365 Mehr]]> Minecraft 1.9 bringt eine etwas nervige Änderung mit sich, durch die die alten Commands für die Eisenfarm und den Eisengolem leider nicht mehr funktionieren.

In Minecraft 1.8 und jünger gab es das Riding-Attribut, durch das man (unter anderem) eine Kette aus Blöcken erzeugen konnte. Das ermöglichte es, mehrere Befehle nacheinander auszuführen.

In Minecraft 1.9 wurde das nun durch das Passengers-Attribut ersetzt. Während das Riding-Attribut zum „Reiter“, also dem oberen Block gehört, ist das Passengers-Attribut eine Eigenschaft des „Reittiers“, beziehungsweise des unteren Blocks. Das heißt: Alles dreht sich einmal um.

Riding ist ein Attribut des oberen Blocks, Passengers eins des unteren Blocks.

Riding ist ein Attribut des oberen Blocks, Passengers eins des unteren Blocks.

Leider bedeutet das auch, dass mein Code zur Erzeugung der Commands ein paar Umbaumaßnahmen benötigt. Aber nichts, was nicht an einem Nachmittag erledigt werden könnte.

Hier die aktualisierten Commands für Minecraft 1.9+:

Eisenfarm 1.9
Eisengolem 1.9

]]>
https://hszemi.de/2016/04/eisenfarm-und-eisengolem-instandhaltungsarbeiten/feed/ 0
Eine kleine Minecraft-Kreuzung https://hszemi.de/2016/03/eine-kleine-minecraft-kreuzung/ https://hszemi.de/2016/03/eine-kleine-minecraft-kreuzung/#respond Sun, 13 Mar 2016 19:58:46 +0000 https://hszemi.de/?p=2333 Mehr]]> In einer jeden Minecraft-Welt kommt man irgendwann an einen Punkt, an dem man in seinem Schienennetz nicht mehr nur von A nach B will.

Sondern vielleicht auch von A nach C.

Und von C nach B.

Und von A nach C.

Und nach D wär auch noch gut.

Das bedeutet: Eine Kreuzung muss her.

Eine recht simple T-Kreuzung ist sein längerer Zeit recht erfolgreich auf dem ironhide-Minecraft-Server im Einsatz. Wie man die baut, erklärbärt folgendes Video:

(Irgendwie habe ich den Eindruck, dass die Aufnahme etwas zu schnell wiedergegeben wird. Naja. Schnell lesen!)

]]>
https://hszemi.de/2016/03/eine-kleine-minecraft-kreuzung/feed/ 0
Minecraft Command: Der kleine Eisengolem https://hszemi.de/2015/09/minecraft-command-der-kleine-eisengolem/ https://hszemi.de/2015/09/minecraft-command-der-kleine-eisengolem/#respond Sat, 19 Sep 2015 15:26:25 +0000 https://hszemi.de/?p=2037 Mehr]]> In der Version 1.9 wird die Funktionalität der Command Blocks erweitert. Zeit für einen neuen Minecraft-Befehl, in dem wir das nutzen! Diese Befehle funktionieren also erst in den neuen Snapshot-Versionen (und hoffentlich auch in der fertigen 1.9), nicht aber in der aktuellen Minecraft-Version 1.8.

Heute wollen wir eine gigantische Eisengolem-Statue in die Landschaft setzen. Dazu holen wir uns zunächst einen Command Block, indem wir im Kreativmodus im Chat das Kommando /give @p minecraft:command_block eingeben.

Diesen setzen wir auf den Boden und achten darauf, dass der Boden für 9 Blöcke in Richtung der Z-Koordinate eben ist und nach oben keine Blöcke im Weg sind. Mit einem Rechtsklick auf den Block öffnen wir das Menü und fügen per Strg+V den Befehl ein, den wir uns zuvor in die Zwischenablage kopiert haben:

IronGolem.txt

Durch ein Redstone-Signal aktivieren wir den Block schließlich.

Dann fallen ein paar Command- und Redstone-Blöcke vom Himmel, eine Statue erscheint (dauert etwas) und die Blöcke verschwinden wieder. Hurra!

minecraft-screenshot-golem

Papa!

Klicke hier für eine interaktive Karte

Den Golem könnt ihr übrigens wieder entfernen, indem ihr an die selbe Stelle (!) wieder einen Command Block setzt und den folgenden Befehl einfügt und ausführt:

removegolem.txt

Quellcode

Die Skripte gibt’s in diesem GitHub-Repository.

 

[Update] Due to popular demand:

]]>
https://hszemi.de/2015/09/minecraft-command-der-kleine-eisengolem/feed/ 0
Minecraft: Iron Farm via Command Block https://hszemi.de/2015/05/minecraft-iron-farm-via-command-block/ https://hszemi.de/2015/05/minecraft-iron-farm-via-command-block/#respond Sun, 10 May 2015 21:53:15 +0000 https://hszemi.de/?p=1795 Mehr]]> 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.

]]>
https://hszemi.de/2015/05/minecraft-iron-farm-via-command-block/feed/ 0
Eine Minecraft-Straßenkarte für den Nether basteln https://hszemi.de/2014/09/eine-minecraft-strassenkarte-fuer-den-nether-basteln/ https://hszemi.de/2014/09/eine-minecraft-strassenkarte-fuer-den-nether-basteln/#respond Sun, 21 Sep 2014 13:21:18 +0000 https://hszemi.de/?p=1444 Mehr]]> 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.
]]>
https://hszemi.de/2014/09/eine-minecraft-strassenkarte-fuer-den-nether-basteln/feed/ 0