risorse | programmare minecraft in python

Programmazione in Minecraft

Per programmazione in Minecraft si intende un sistema di gioco nel quale le azioni del giocatore non vengono comandate attraverso il mouse e la tastiera, ma specificandole come sequenze di istruzioni di un particolare linguaggio di programmazione — Java, JavaScript, Lua, Python, … Il vantaggio è che con poche istruzioni di codice è possibile ottenere artefatti la cui costruzione manuale richiederebbe invece parecchio tempo.

Programmazione Python di Minecraft

Esiste una versione di Minecraft che supporta nativamente la programmazione Python: è quella predisposta per la scheda didattica Raspberry Pi, la cosiddetta Minecraft: Pi Edition. Gli svantaggi principali di questa soluzione sono due: il primo è la necessità di dotarsi di una Raspberry Pi, il secondo è che la versione di Minecraft ad essa dedicata, pur essendo gratuita, non è aggiornatissima.

Programmazione Python di Minecraft su PC

Con relativamente poco sforzo è possibile replicare un ambiente analogo su PC utilizzando la versione standard di Minecraft (quella a pagamento). In rete si trovano diversi tutorial dedicati a Windows e Mac, ma non ne ho trovati per Linux. Di seguito dunque i passaggi che consentono di installare una versione di Minecraft programmabile in Python su Ubuntu, nella fattispecie Ubuntu 14.04 64 bit.

Ambiente di lavoro

La versione standard di Minecraft non può essere programmata; per renderla programmabile occorrono alcuni componenti aggiuntivi:

Una volta soddisfatti i primi due requisiti (l’installazione standard di Ubuntu li soddisfa entrambi), il terzo viene risolto in due fasi:

Architettura client/server

La modalità di lavoro è:

  1. avvio del server di Minecraft:

    Un server Minecraft in esecuzione all'interno di una finestra di terminale

  2. avvio del client di Minecraft e connessione al server;

  3. redazione, sul client, del programma Python tramite editor di testo;

  4. lancio, sul client, del programma Python da terminale;

  5. verifica dell’effetto ottenuto nella finestra del client Minecraft:

    Tipico ambiente di programmazione: editor di testo, terminale di lancio del programma, client Minecraft

Ho condotto i primi esperimenti seguendo le indicazioni riportate nel testo Adventures in Minecraft, e ho utilizzato il server CanaryMod; successivamente, considerando le dichiarazioni circa l’efficienza e soprattutto il livello di aggiornamento, sono passato Spigot (ad oggi, la versione più recente di CanaryMod disponibile è la 1.8.x, quella di Spigot la 1.9.4). Di seguito sono riportate le istruzioni per l’installazione di entrambi i server.

CanaryMod

  1. Scaricare l’ultima versione di CanaryMod dal sito ufficiale, in questo caso CanaryMod-1.2.0_0.jar, che contiene un server minecraft v. 1.8 (non farsi ingannare dall’indice dei file: ad esempio, il file CanaryMod-1.7.10-1.1.3.jar contiene un server v. 1.7.10);

  2. creare per comodità un link simbolico al jar del server:

    $ ln CanaryMod-1.2.0_0.jar CanaryMod.jar
    
  3. lanciare il server:

    $ java -jar CanaryMod.jar
    

    il server terminerà con errore:

    [WARN]: Failed to load eula.txt
    

    modificare il file CanaryMod/eula.txt impostando a true il parametro eula:

    eula=true
    
  4. avviare nuovamente il server:

    $ java -jar CanaryMod.jar
    

    e verificare che si avvii correttamente; il terminale non deve chiudersi, e dopo qualche tempo deve apparire un messaggio simile a:

    [INFO]: Done (2.396s)! For help, type "help" or "?"
    

Verifica dell’installazione del server CanaryMod

  1. avviare il client di Minecraft, selezionando la versione del server CanaryMod appena installato; non dovesse essere disponibile, riavviare il client assicurandosi che il computer abbia accesso a internet, selezionare nuovamente la versione corretta e attendere che vengano scaricati e installati i file necessari;

  2. selezionare la modalità di gioco Multiplayer, premere il pulsante Direct Connect e specificare nella casella Server Address l'indirizzo IP del computer sul quale gira il server Minecraft (“localhost” se è quello sul quale è in esecuzione il client);

  3. nel caso il client non dovesse riuscire a collegarsi al server ed emettesse l’errore:

    failed to login: authentication servers are down for maintenance
    

    è sufficiente modificare il file CanaryMod/config/server.cfg impostando a false il parametro online-mode:

    online-mode=false
    
  4. uscire dal gioco e arrestare il server immettendo il comando:

    > stop
    

    nella finestra del terminale.

Installazione del plug-in CanaryRaspberryJuice

  1. scaricare l’ultima versione disponibile dal sito ufficiale;

  2. scompattare il file CanaryRaspberryJuice-master.zip e copiare il file jars/canaryraspberryjuice-X.Y.jar più recente (in questo caso canaryraspberryjuice-1.3.jar) nella cartella CanaryMod/plugins.

Installazione della libreria client di CanaryRaspberryJuice

  1. creare la cartella che conterrà gli script Python MinecraftPy;

  2. copiare nella cartella MinecraftPy la cartella mcpi che si trova nella sotto-cartella resources/mcpi/api/python/modded dell’archivio di CanaryRaspberryJuice appena scaricato;

  3. avviare il server CanaryMod;

  4. avviare il client ed entrare nel gioco;

  5. creare il file HelloMinecraftWorld.py nella cartella MinecraftPy:

    import mcpi.minecraft as minecraft
    mc = minecraft.Minecraft.create()
    mc.postToChat("Hello Minecraft World!")
    
  6. lanciare lo script e verificare che il messaggio di saluto appare in chat.

Nota: per evitare la sospensione del client di Minecraft durante la redazione dei programmi, è conveniente porre a false il parametro pauseOnLostFocus nel file ~/.minecraft/options.txt.

Spigot

Spigot necessita di Java versione 7 o superiore.

  1. Scaricare l’ultima versione dei “Build Tools” di Spigot dal sito ufficiale, o direttamente da qui;

  2. copiare il file in una cartella temporanea;

  3. lanciare il build del server:

    $ git config --global --unset core.autocrlf
    $ java -jar BuildTools.jar
    
  4. la procedura impiega alcuni minuti per creare il server; al termine, verrà generato il file spigot-x.y.z.jar (in questo caso, spigot-1.9.4.jar);

  5. copiare il file del server nella sua cartella definitiva; per comodità, conviene creare un link simbolico al jar del server:

    $ ln spigot-1.9.4.jar spigot.jar
    
  6. lanciare il server:

    $ java -jar spigot.jar
    

    il server terminerà con errore:

    [WARN]: Failed to load eula.txt
    

    modificare il file spigot/eula.txt impostando a true il parametro eula:

    eula=true
    
  7. avviare nuovamente il server:

    $ java -Xms512M -Xmx1G -XX:MaxPermSize=128 -XX:+UseConcMarkSweepGC -jar spigot.jar
    

    Nota: il parametro MaxPermSize non è necessario con Java versione 8 o superiore.

    e verificare che si avvii correttamente; il terminale non deve chiudersi, e dopo qualche tempo deve apparire un messaggio simile a:

    [22:59:51 INFO]: Done (15.847s)! For help, type "help" or "?"
    

Verifica dell’installazione del server Spigot

  1. avviare il client di Minecraft, selezionando la versione del server Spigot appena installato; non dovesse essere disponibile, riavviare il client assicurandosi che il computer abbia accesso a internet, selezionare nuovamente la versione corretta e attendere che vengano scaricati e installati i file necessari;

  2. selezionare la modalità di gioco Multiplayer, premere il pulsante Direct Connect e specificare nella casella Server Address l'indirizzo IP del computer sul quale gira il server Minecraft (“localhost” se è quello sul quale è in esecuzione il client);

  3. uscire dal gioco e arrestare il server immettendo il comando stop nella finestra del terminale.

Installazione del plug-in RaspberryJuice

  1. scaricare l’ultima versione disponibile dal sito ufficiale;

  2. scompattare il file RaspberryJuice-master.zip e copiare il file jars/raspberryjuice-x.y.jar compatibile con la versione del server a disposizione (raspberryjuice-1.8.jar per la versione 1.9.4 di Spigot) nella cartella plugins della cartella di installazione di Spigot;

Installazione della libreria Python di RaspberryJuice

  1. creare la cartella che conterrà gli script Python MinecraftPy;

  2. copiare nella cartella MinecraftPy la cartella mcpi che si trova nella sotto-cartella src\main\resources\mcpi\api\python\modded dell’archivio di RaspberryJuice appena scaricato;

  3. avviare il server Spigot;

  4. avviare il client ed entrare nel gioco;

  5. creare il file HelloMinecraftWorld.py nella cartella MinecraftPy:

    import mcpi.minecraft as minecraft
    mc = minecraft.Minecraft.create()
    mc.postToChat("Hello Minecraft World!")
    
  6. lanciare lo script e verificare che il messaggio di saluto appare in chat.

Nota: per evitare la sospensione del client di Minecraft durante la redazione dei programmi, è conveniente porre a false il parametro pauseOnLostFocus nel file ~/.minecraft/options.txt.


Aggiornamento [07/05/2018]

Parte dei contenuti di questa pagina sono stati ripresi nell'articolo “Phyton: história e ascendência” pubblicato sul numero 59 (febbraio 2018) della rivista portoghese Programar:

La copertina della rivista

La parte dell'articolo in cui si cita questa pagina

Il riferimento a questa pagina nella bibliografia

Pagina modificata il 13/06/2016