Versuche, ein Kinderprogramm mit Minecraft Pocket Edition zu unterrichten


Auf dem Hof ​​bleiben der Herbst und der Sohn immer häufiger zu Hause, nachdem sie sich im Telefon oder Tablet vergraben haben und schwach auf äußere Reizstoffe reagieren. Es macht mich traurig. Ich selbst habe anscheinend angefangen zu programmieren, weil die Spiele auf den Kassetten auf meinen ersten Computer BK 0010-01 gingen, aber das Tonbandgerät ging nicht. Während ich ein Tonbandgerät mit einem geeigneten linearen Ausgang abbaute, konnte ich dank meines Vaters für die ersten Lektionen Basic ausprobieren. Als ich das erste Grafikspiel mit einem Knarren laden konnte, sah ich es nicht mehr als das an, was ich endlich spielen würde, sondern dachte fasziniert darüber nach, wie ich es noch schlimmer machen könnte. Sein 8-jähriger Sohn hat die Welt der Videospiele und YouTube lange Zeit verschlungen, so dass es den Anschein hat, als würde er keinen Eindruck davon hinterlassen, mit einem Triller über die eingebaute Dynamik zu programmieren.


Ich bin schon lange auf Artikel über das Programmieren mit Minecraft in Python gestoßen, und dann wurde mir klar, dass es Zeit war. Minecraft ist eines seiner Lieblingsspiele und ich dachte, es wäre besser, mit diesem gut entwickelten Gebiet zu beginnen.


Nachdem ich jedoch die öffentlich zugänglichen Informationen durchgesehen hatte, wurde mir klar, dass alles sehr schwierig ist. Gefundene Bücher " Programmieren mit Minecraft. Erstellen Sie Ihre Welt mit Python " im Jahr 2017 und " Minecraft. Programmieren Sie Ihre Welt in Python " im Jahr 2018 beginnen mit der Installation von Spigot- bzw. Bukkit-Servern. Es stellte sich heraus, dass mobile Clients, die auf Android / iPhone laufen, auch Pocket Edition und Bedrock Edition sind und mit diesen Servern nicht funktionieren. Sie müssen einen Client für Windows / Mac kaufen, was das ganze Unternehmen ruiniert. Erstens wird es nicht länger die dem Sohn vertraute „native“ Umgebung sein. Zweitens zeigt die Übertragung zum Zwecke der Programmierung in eine andere Umgebung eine Schwäche des Ansatzes. Vielleicht heißt es, die Spiele seien getrennt, die Programme seien getrennt. Drittens wird der Sohn wahrscheinlich seine Experimente Freunden zeigen wollen, und es sind mobile Versionen, die bei Freunden beliebt sind. Es ist unmöglich, entschied ich, da diese mobilen Spielzeuge eine Verbindung zu Servern herstellen können und nicht alles verloren geht. Und ich fing an zu suchen.


Am ersten Tag war mein Chrom voller Tabs, und in meinem Kopf herrschte Chaos.
Der erste war der Open-Source- Nukkit- Server, mit dem sich das Spiel auf meinem Android recht erfolgreich verbunden hat. Der einzige Punkt hier ist, dass wir die aktuelle Version des Spiels benötigen (1.12 für heute), also musste ich es zuerst aktualisieren. Der Server hat viele Plugins, aber ein für die Programmierung geeignetes Plugin, wie in Büchern beschrieben, wurde nicht gefunden.


Es stimmt , PyPlugins wurde gefunden , das Jython, eine Version von Python in Java, zu starten scheint. Aber so wie ich es verstehe, hat sich jython für die Sprachversion von Python 2.7 entschieden. Deaktivieren Sie diese Option als unsportlich.


Gehen wir auf der anderen Seite, aber wie meinten die Autoren der Bücher, Python mit den Servern zu verbinden? Nachdem ich zusätzliche Materialien für Bücher sorgfältig studiert hatte, da sie frei verfügbar sind, fand ich das RaspberryJuice- Plugin, das sorgfältig im Plugins-Verzeichnis versteckt war (kein Wort darüber im Buch), und öffnete dann in Erwartung von Befehlen einen Netzwerk-Socket. Und die Python-MCPI-Bibliothek sendet Befehle . Dank der Autoren sind alle Open Source. Es hat mich ein bisschen gestört, dass das letzte Commit vor 2-4 Jahren war.


Aber wie kann man RaspberryJuice mit Nukkit verbinden? Und hier wird gesucht, nicht lachen, Pokkit ist ein Nukkit- Plugin zum Ausführen von Plugins für Bukkit. Ich weiß nicht, warum die Namen so sind, aber es hat mir eine zusätzliche Stunde der Suche hinzugefügt, da ich sie zuerst verwirrt habe. Es scheint, dass jetzt alle Teile des Puzzles vorhanden sind, aber beim Start wird ein Fehler java.lang.NoSuchFieldError: GOLD_SWORD : java.lang.NoSuchFieldError: GOLD_SWORD . Es ist eine Schande, denn in der Beschreibung von Pokkit wurde festgestellt, dass RaspberryJuice auf der Liste der unterstützten steht. Fehler aufgetreten . Überraschenderweise kam die Antwort schnell - das Plugin ist veraltet. „Hier ist alles rostig“, kam mir der Satz aus meinem Lieblingsfilm in den Sinn. Nach der Klärung erklärte der Autor freundlich, wo man die moderne API für Bukkit bekommt , und dann "wir irgendwie". Das veraltete Plugin hat ziemlich schnell alle Methoden ersetzt, die in der aktuellen Version der API verschwunden sind, und einen Ersatz für sie gefunden. Es stellte sich heraus, dass so etwas wie world.getBlockTypeIdAt(loc) in world.getBlockAt(loc).getType().getId() . Ein Punkt ist jedoch immer noch von Bedeutung: Früher war es möglich, aus denselben Blöcken (wie im Beispiel block.WOOL ) einen Regenbogen block.WOOL , der in verschiedenen Farben bemalt war. Jetzt ist es unmöglich, die Blöcke neu zu streichen. Sie müssen die anfänglich mehrfarbigen Blöcke ( Material.RED_WOOL , Material.BLUE_CARPET ) verwenden. Es wurde eine Pull-Anfrage ausgegeben und festgestellt, dass es zwei weitere solche Pull-Anfragen gibt, beide frisch. Das nächste Mal lohnt es sich, es zuerst zu überprüfen ...


Die Anleitung, wie man diese Pyramide schnell von Nukkit-Pokkit-RaspberryJuice-mcpi aus startet:


  1. Wir nehmen einen geeigneten Server, auf den Sie von Ihrem mobilen Minecraft aus zugreifen können. Zum Beispiel ein Heimcomputer mit einem offenen Port von 19132 (Standardeinstellung). Unter Linux ist es für mich einfacher, aber jedes Betriebssystem mit Java-Laufzeitumgebung ist geeignet.
  2. Nukkit Server Laden Sie die empfohlene JAR über den Link "Downloads" herunter oder erstellen Sie Ihre eigene aus der Quelle ( mvn clean package ). Wir legen ein separates Verzeichnis ab und führen einfach java -jar nukkit-1.0-SNAPSHOT.jar .
  3. Pokkit Plugin. Laden Sie die empfohlene JAR über den Link "Download und Verwendung" herunter oder erstellen Sie Ihre eigene aus der Quelle ( mvn clean package ). Wir legen das plugins Verzeichnis ab, das nach Schritt 2 erstellt wurde. Stoppen Sie den Server und starten Sie ihn neu, wie in Schritt 2.
  4. RaspberryJuice Plugin mit meinem Patch . Laden Sie die empfohlene JAR über den Link herunter oder sammeln Sie Ihre eigene aus der Quelle ( pocket-edition Zweig, mvn clean package ). Wir legen das plugins/Pokkit/bukkitPlugins/ , das nach Schritt 3 erstellt wurde. Wir stoppen den Server und starten ihn neu.
  5. Wir verbinden Mobile Minecraft mit dem Server: Play - Server - Andere Server - fügen Sie einen neuen hinzu oder bearbeiten Sie den vorhandenen: "Servername" - nach Ihrem Geschmack "Serveradresse" - Server-IP-Adresse aus Schritt 1, "Port" 19132, falls nicht in der Konfiguration geändert . Speichern und verbinden.
  6. Installieren Sie Python 3 und die mcpi-Bibliothek: pip3 install --user py3minepi . Danach können Sie die Beispiele aus den Büchern 1 und 2 python3 Adventure3/dice.py indem Sie einfach python3 Adventure3/dice.py

UPD: In Schritt 6 müssen Sie die mcpi-Bibliothek wie git clone https://github.com/py3minepi/py3minepi.git && cd py3minepi && pip3 install --user . : git clone https://github.com/py3minepi/py3minepi.git && cd py3minepi && pip3 install --user . (am Ende wird der Punkt benötigt). Dies liegt daran, dass der Autor des Plugins über die neueste Version von Python 3.4 verfügt.


Sie können es ohne Python versuchen (Schritt 6), indem Sie mit dem üblichen netcat: nc localhost 19132 Verbindung zum Plugin nc localhost 19132 und die Befehle manuell eingeben:


  • player.getTile() - Die Koordinaten des Spielers werden im Format x, y, z zurückgegeben, wobei die y-Achse zum Himmel und die xz-Ebene parallel zur Erde ist. Ich habe 75,-5,-5 ,
  • world.setBlock(75,-6,-5,3) - world.setBlock(75,-6,-5,3) den Schmutzblock unter den Player.
  • world.spawnEntity(75,-4,-5,93) - world.spawnEntity(75,-4,-5,93) ein Huhn über einem Spieler.

Meine Experimente sind im ersten Bild dieses Beitrags zu sehen.


Wenn es regnet oder die Nacht hereinbricht und schwer zu erkennen ist, geben Sie die Befehle time set 0 und weather clear in die Serverkonsole ein.


Das ist alles. Es ist großartig, dass es Open Source gibt, und jetzt ist es so einfach, an einigen Abenden im öffentlichen Bereich nach einer solchen Pyramide von Arbeitsprogrammen zu suchen. Ich möchte besonders die Freundlichkeit und die fast sofortigen Antworten in den Chats vieler Projekte erwähnen.


Ich habe auch dieses wundervolle Video über das Rendern von Docker-Server-Containern in der Minecraft-Welt gefunden:



Es ist unwahrscheinlich, dass die Container des Sohnes von Interesse sind, aber das Blinken mit LEDs als Reaktion auf das Umschalten von Cartoon-Schaltern ist die Sache. Ich werde gerne beraten, was sonst noch so ungewöhnlich für den Programmierunterricht wäre.

Source: https://habr.com/ru/post/de472614/


All Articles