Wichtiger Hinweis: Diese Anleitung ist für erfahrene Coder, Mentorinnen und Mentoren. Wenn du im generellen Umgang mit Linux-Servern, Docker, JRE etc. noch unerfahren bist, bitte eine Mentorin aus dem CoderDojo, den Minecraft-Server für dich herzurichten. Später kannst du dich selbst am Installieren eines MineCraft-Servers wie hier beschrieben heran wagen.
Ziel dieser Anleitung ist das Betreiben eines Minecraft Servers auf Basis von Spigot mit installiertem Scriptcraft Mod zum Programmieren von Minecraft mit JavaScript.
Um möglichst wenig installieren zu müssen und mit wenig Ressourcen viele Server für ein CoderDojo betreiben zu können, verwenden wir Docker zum Isolieren der Serverinstanzen.
Man braucht Docker für diese Anleitung:
Falls kein passender Rechner lokal zur Verfügung steht, ist die Verwendung eines Docker-Servers in der Cloud (z.B. Docker auf Azure) empfehlenswert.
Als Basis wurde ein Dockerfile für Spigot mit Scriptcraft erstellt. Es kann lokal wie folgt in ein Docker Image gebaut werden:
docker build -t spigotmc .
(kann je nach bereits installierten Images und Internetanbindung etwas dauern)In docker images
müsste jetzt das neue Image spigotmc
zu sehen sein.
Aufbauend auf dem Basisimage können jetzt individuelle Images für verschiedene Spielszenarien erstellt werden. Für diese Anleitung haben wir ein Dockerfile für eine komplett flache Welt erstellt. Hier ein paar Hinweise dazu:
Ein Dockerfile für ein Spielsenario kann lokal wie folgt in ein Docker Image gebaut und gestartet werden:
docker build -t mc-flat-empty .
(geht sehr schnell)docker run -it --rm -p 25565:25565 --name mc-flat-empty -v C:\scriptcraft\flat-and-empty-world\plugins:/bin/spigotmc/scriptcraft/plugins/rainer mc-flat-empty
-it --rm
sorgt dafür, dass der Container interaktiv gestartet wird (Console kann beobachtet werden) und beim Beenden des Servers automatisch gelöscht wird.p 25565:25565
gibt den Minecraft Standardport am Docker Host frei. Will man mehrere Minecraft Server betreiben, kann man den Port z.B. mit -p 25566:25565
auf 25566 ändern.--name ...
vergibt einen Namen für den Container.-v <local-dir>:/bin/spigotmc/scriptcraft/plugins/<some-folder-name>
mapped ein lokales Verzeichnis mit in JavaScript geschriebenen Mods in den Minecraft Container.mc-flat-empty
ist der Name des oben erstellten Docker Image für das Spielsenario.Hat man alles richtig gemacht, sieht das so aus:
C:\temp\scriptcraft\flat-and-empty-world>docker build -t mc-flat-empty .
Sending build context to Docker daemon 8.704 kB
Step 1 : FROM rstropek/spigotmc
---> 4a6020e36757
Step 2 : COPY server.properties /bin/spigotmc
---> Using cache
---> 925c920abd91
Step 3 : COPY ops.json /bin/spigotmc
---> Using cache
---> 414acf0ebf53
Step 4 : CMD /bin/spigotmc/start.sh
---> Using cache
---> f4d15115f8fe
Successfully built f4d15115f8fe
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
C:\temp\scriptcraft\flat-and-empty-world>docker run -it --rm -p 25565:25565 --name mc-flat-empty -v C:\scriptcraft\flat-and-empty-world\plugins:/bin/spigotmc/scriptcraft/plugins/rainer mc-flat-empty
Loading libraries, please wait...
[07:42:49 INFO]: Starting minecraft server version 1.10.2
[07:42:49 INFO]: Loading properties
[07:42:49 INFO]: Default game type: CREATIVE
[07:42:49 INFO]: This server is running CraftBukkit version git-Spigot-72c2605-709783c (MC: 1.10.2) (Implementing API version 1.10.2-R0.1-SNAPSHOT)
...
[07:42:57 INFO]: [scriptcraft] Unzipping /bin/spigotmc/scriptcraft/modules/watcher.js (NE)
[07:42:58 WARN]: [scriptcraft] cow-clicker minigame is not yet supported in CanaryMod and Craftbukkit
[07:42:59 WARN]: [scriptcraft] Legacy ScriptCraft directory /bin/spigotmc/plugins/scriptcraft was found. This directory is no longer used.
[07:42:59 WARN]: [scriptcraft] Please put plugins in the /bin/spigotmc/scriptcraft/plugins directory
[07:42:59 INFO]: [scriptcraft] Please note that the working directory for scriptcraft v3.2.0-2016-03-19 is /bin/spigotmc/scriptcraft
[07:42:59 INFO]: Done (9.687s)! For help, type "help" or "?"
[07:42:59 INFO]: [scriptcraft] js-patch setTimeout() test complete
>
Jetzt kann man sich zum Server in Minecraft verbinden: