Un arcoiris en Minecraft generado mediante Python

Prepara tu Mac para programar Minecraft desde Python

Es turno de preparar nuestro Mac OS X para poder programar el mundo de Minecraft mediante Python como os enseñaba en el artículo correspondiente a Minecraft Pi, en este vídeo:

Hace algunas semanas le llegaba el turno a Windows, artículo del que os recomiendo su lectura para saber un poco la controversia que hay alrededor de los programas que vais a configurar en este artículo. Ahora, por fin, le toca al Mac.

De esta forma, una vez todos listos, en los siguientes artículos de la serie empezaremos a experimentar con estos medios para automatizar nuestras construcciones.

Qué necesitamos

  • Un Mac con el Mac OS X, y Java. Minecraft es un juego hecho en Java y por lo tanto es total y enteramente multiplataforma.
  • Minecraft, la versión comercial, perfectamente funcional. Cuesta 20 €, es un juegazo que merece la pena para jugadores de cualquier edad, y lo podéis obtener en https://minecraft.net/. No lo he dicho en los otros artículos, pero al comprar Minecraft podéis usarlo en cuantos ordenadores queráis, sin importar si son ordenadores con Windows, Linux, Mac,… eso sí, uno sólo de cada vez. Además, comprando esta versión obtendréis acceso gratuito a la beta para Windows 10.
  • El Kit de desarrolladores de Java 8 que podemos descargar de esta web de Oracle. Es gratuito. Escogeremos la versión para Mac OS X del paquete que está etiquetado como “JDK“. La instalación es trivial (siguiente, siguiente,…)
  • Git, que es software libre y además gratuito, que descargaremos de https://git-scm.com/. Lo instalaremos también dejando todos los valores por defecto (siguiente, siguiente,…)
Descargar GIT
Descargar GIT

 

  • El programa de instalación a través de la construcción de CraftBukkit desde su código fuente, llamado BuildTools.jar, disponible en este enlace. Este enlace pertenece a la web de un derivado de Craftbukkit, llamado Spigot, que aunque es objeto también de investigación por los asuntos que os contaba en el artículo de Windows, todavía no se ha visto afectada. Gratuito
  • El plugin, o modificación, Raspberry Juice (zumo de frambuesa) que podremos descargar de la página web Bukkit.org mediante este enlace, para la versión 1.8.8 de craftbukkit. Gratuito
  • Python 2.7. Este desarrollo no es compatible con Python 3, así que deberás ejecutar Python 2.7 (está disponible por defecto en Mac OS X).

Empecemos ahora para preparar nuestros Macs.

Construcción de Craftbukkit

Una vez descargado Java 8 y GIT, e instalados, descargamos BuildTools.jar a un directorio de nuestro Mac, por ejemplo Descargas/craftbukkit bajo nuestro directorio de usuario. Abriremos un terminal (escribiendo simplemente “terminal” en Spotlight). Una vez en el directorio de la descarga (~/Downloads/craftbukkit), escribiremos en el terminal java -jar BuildTools.jar . Igual que en el artículo de Windows, comenzará un proceso automático que terminará al poco tiempo con estos mensajes:

Construcción finalizada con éxito
Construcción finalizada con éxito

Como vemos ahí, habrá creado en la carpeta Descargas/craftbukkit dos productos, craftbukkit-1.8.8.jarspigot-1.8.8.jar. Podremos comprobarlo escribiendo ls  en el terminal.

Instalación de CraftBukkit

Lo mismo que en el caso de Windows, este paso llevará a confusión casi con total seguridad, así que pon especial cuidado en seguir los pasos a pies juntillas.

  • Copia craftbukkit-1.8.8.jar a una carpeta de tu Mac nueva, para alojar y preparar CraftBukkit antes de modificarlo para trabajar con Python. Por ejemplo, ~/juegos/craftbukkit, esto es: un subdirectorio del directorio personal de tu usuario, que podrás crear directamente en el terminal mediante el comando mkdir (tanto para juegos como para craftbukkit)
  • Crea un archivo llamado “craftbukkit.sh” en esa misma carpeta, con el siguiente contenido:
#!/bin/sh
java -Xms512M -Xmx1024M -jar craftbukkit-1.8.8.jar
  • Otórgale permisos de ejecución introduciendo en la consola chmod +x craftbukkit.sh
  • Ejecútalo escribiendo ./craftbukkit.sh  en el terminal. Verás que el proceso crea una serie de carpetas y ficheros, y termina con este mensaje:
Resultado de lanzar craftbukkit.sh por primera vez
Resultado de lanzar craftbukkit.sh por primera vez

 

  • En la carpeta donde lo hemos ejecutado, localizamos el fichero eula.txt y la editamos con un editor de textos, que puede ser nano si lo prefieres usar en la consola (recuerda: para grabar usa ctrl-o y para salir ctrl-x), o bien TextEdit desde el Finder o con Spotlight.
  • Dentro de este fichero cambiaremos la línea que pone eula=false  por eula=true  . Lo guardaremos y cerraremos el editor.
  • Volveremos a ejecutar ./craftbukkit.sh , y veremos cómo avanza más:
Segunda ejecución de craftbukkit.sh
Segunda ejecución de craftbukkit.sh

 

  • Escribiremos stop e intro (↵)

Instalación de Raspberry Juice en CraftBukkit

En este momento, si listamos el contenido del directorio en el que nos encontramos desde el terminal veremos un directorio llamado plugins. Deberemos copiar ahí dentro el fichero RaspberryJuice.jar que nos hemos descargado anteriormente, mediante el comando cp  si no queremos salir al Finder.

Tras hacerlo, volveremos a ejecutar CraftBukkit. Al hacerlo, veremos en la ventana de comandos que aparece el mensaje “[19:46:45 INFO]: [RaspberryJuice] Loading RaspberryJuice v1.7 “, además de alguna otra línea de traza que habla de este plugin; eso indica que el plugin se ha cargado correctamente.

CraftBukkit ya ampliado con Raspberry Juice
CraftBukkit ya ampliado con Raspberry Juice

Ya tenemos listo CraftBukkit y ejecutándose en nuestro Mac. No lo cerraremos, ya que lo que tendremos que hacer será, una vez preparado el intérprete de Python 2.7, conectarnos a CraftBukkit a través del menú de Minecraft. Como os contaba en el artículo correspondiente a Windows, CraftBukkit proporciona un servidor multijugador que contiene y proporciona “las reglas de juego” del mundo de Minecraft para una partida en concreto. Tanto solos como acompañados, para poder programar Minecraft en Python jugaremos allí dentro.

Preparar el intérprete de Python 2.7

Si has instalado Python 3, desde Spotlight no podrás arrancar el intérprete interactivo IDLE de Python 2.7, que deberías tener incluido en Mac OS X por defecto: Mac OS X utiliza Python 2 internamente para ciertas tareas, y al irlo actualizando, deberías ir incrementando las versiones hasta tener la última de Python 2.7. Para poderlo arrancar, abre una nueva ventana del terminal y escribe idle2.7

Necesitamos instalar un módulo en Python que es complementario al plugin de Raspberry Juice que hemos instalado en CraftBukkit. Para ello, vamos a la página de GitHub donde se aloja, https://github.com/zhuowei/RaspberryJuice, y descargaremos todo el contenido usando el botón Download Zip si no lo hemos hecho al principio del proceso.

Descargar el

Una vez descargado, por ejemplo en la carpeta de Descargas:

  • Descomprimimos el archivo haciendo doble click sobre él en el Finder.
  • Navegamos dentro hasta que veamos la carpeta mcpi del subdirectorio RaspberryJuice-master\src\main\resources\mcpi\api\python\original.
  • La arrastramos a nuestro directorio personal de usuario (en mi caso, gvisoc); es el icono que tienen nuestro nombre de usuario de Mac OS X. Suele aparecer en los favoritos del Finder con un icono de una casa:
Directorio de usuario en el Finder
Directorio de usuario en el Finder

Arrancaremos desde un terminal el intérprete de Python 2.7 (IDLE) mediante idle2.7 para probar el juego en el siguiente paso, ¡por fin!

Probar el interfaz de programación contra Minecraft

Arrancamos el juego desde Spotlight o desde Launchpad, y en el lanzador crearemos un nuevo perfil, que igual que hacíamos en el artículo de Windows será una copia de nuestro perfil habitual. La única diferencia que configuraremos será para que ejecute la versión del juego igual a la versión del servidor CraftBukkit (en este momento es la 1.8.8) que hemos construido al principio del artículo. Esta versión la configuraremos en la lista desplegable Release:

Nuevo perfil, para la versión 1.8.8
Nuevo perfil, para la versión 1.8.8

Al guardar este perfil tendremos dos: el normal, que seguiremos usando para jugar a la última versión disponible de Minecraft, y el que usaremos para programar Python en Minecraft mediante CraftBukkit.

Una vez seleccionado este nuevo perfil, y no habiendo cerrado la ventana del terminal que está ejecutando craftbukkit.sh, lanzamos el juego. Recomiendo poner el juego en una ventana, no a pantalla completa.

Si entramos en Multijugador, veremos que hay un servidor con el nombre por defecto, “Servidor de Minecraft“. Si no lo hubiese, prueba a pulsar el botón Añadir servidor e introduce como dirección del servidor el valor 127.0.0.1, que representa tu propio Mac. Este servidor multijugador es local a nuestro Mac, y es el propio CraftBukkit que hemos dejado funcionando. Si no te apareciese ni siquiera añadiéndolo, comprueba que CraftBukkit se está ejecutando y, si lo hubieras cerrado por alguna razón, ejecuta craftbukkit.sh en ~/juegos/craftbukkit desde un Terminal y repite los pasos que has dado en este párrafo.

Ventana de Minecraft mostrando el servidor de CraftBukkit local al Mac
Ventana de Minecraft mostrando el servidor de CraftBukkit local al Mac

Entramos al servidor seleccionándolo y usando el botón Entrar al servidor.

Ejemplo del arcoiris: probemos el puente Python – Minecraft

Fuera del juego, en Mac OS X, abrimos un nuevo fichero en IDLE para Python 2.7, de forma que podamos escribir un programa. En él copiamos el ejemplo siguiente, tomado de la página de Raspberry Juice, que escribirá un arcoiris en el mundo de Minecraft.

import mcpi.minecraft as minecraft
import mcpi.block as block
from math import *

colors = [14, 1, 4, 5, 3, 11, 10]

mc = minecraft.Minecraft.create()
height = 60

mc.setBlocks(-64,0,0,64,height + len(colors),0,0)
for x in range(0, 128):
        for colourindex in range(0, len(colors)):
                y = sin((x / 128.0) * pi) * height + colourindex
                mc.setBlock(x - 64, y, 0, block.WOOL.id, colors[len(colors) - 1 - colourindex])

Para ejecutarlo lo guardaremos en el disco duro (en nuestra carpeta de experimentos de PItando, por ejemplo) y pulsaremos la tecla F5. Esto lo ejecutará directamente dentro de IDLE.

El arcoiris aparecerá justamente encima de nuestras cabezas, con lo que tendremos que apartarnos unos cuantos metros para poderlo ver.

Un arcoiris en Minecraft generado mediante Python
Un arcoiris en Minecraft generado mediante Python

Ahora puedes intentar tú mismo algo, como trasladar el ejemplo del Hombre de Hielo, o tratar de crear estructuras a tu alrededor (muros, vallas,…).

¡Disfruta, pocas combinaciones tan creativas hay a tu alcance!


Notas acerca de los números de versión de este artículo

En todo el artículo estoy manejando la versión 1.8.8 porque es la versión de CraftBukkit que se construye con BuildTools.jar. Si llegas a este artículo meses después de que haya aparecido, la versión habrá cambiado. Sé consecuente a lo largo de este texto y, donde veas 1.8.8, piensa realmente en la versión de CraftBukkit que hayas obtenido al construirlo.

En cuanto a RaspberryJuice, ten en cuenta que existe una versión para cada versión de CraftBukkit. La 1.7 se corresponde con la versión de CraftBukkit 1.8.1, pero en mi experiencia es compatible con cualquier versión 1.8. La tabla de correspondencias se encuentra en esta web: http://dev.bukkit.org/bukkit-plugins/raspberryjuice/, en donde pone Facts (abajo a la derecha).


Podéis dejarme cualquier comentario en esta misma entrada, o enviándome
cualquier comentario a tavés del formulario de contacto (http://pitando.net/contacto) y la dirección de correo que allí os indico.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *