Intenta comenzar a enseñarle a un niño programación con la edición de bolsillo de Minecraft


En el patio, el otoño y el hijo se quedan cada vez más en casa, enterrándose en el teléfono o la tableta, reaccionando débilmente a los irritantes externos. Me entristece Yo mismo comencé a programar, me parece, por el hecho de que los juegos fueron a mi primera computadora BK 0010-01 en los casetes, pero la grabadora no funcionó. Mientras extraía una grabadora con una salida lineal adecuada, logré probar Basic, gracias a mi padre por las primeras lecciones. Entonces, cuando pude cargar el primer juego gráfico con un crujido, ya no lo veía como lo que finalmente jugaría, pero pensé fascinadamente cómo empeorarlo. Su hijo, en sus 8 años, se ha tragado durante mucho tiempo el mundo de los videojuegos y YouTube, por lo que parece que no dará la impresión de comenzar a programar con un trino sobre la dinámica incorporada.


He encontrado artículos sobre programación con Minecraft en Python durante mucho tiempo y luego me di cuenta de que era el momento. Minecraft es uno de sus juegos favoritos y pensé que sería mejor comenzar con este territorio bien desarrollado.


Sin embargo, después de haber revisado la información disponible en el dominio público, me di cuenta de que todo es muy difícil. Los libros encontrados " Programación con Minecraft. Crea tu mundo con Python " en 2017 y " Minecraft. Programa tu mundo en Python " en 2018 comienzan con la instalación de los servidores Spigot y Bukkit, respectivamente. Resultó que los clientes móviles que están en Android / iPhone, también son edición de bolsillo, también son edición básica, no funcionan con estos servidores. Debe comprar un cliente para Windows / Mac, lo que arruina toda la empresa. En primer lugar, ya no será el entorno "nativo" familiar para el hijo. En segundo lugar, transferir por el bien de la programación a otro entorno demostrará debilidad, quizás, del enfoque, dicen que los juegos están separados, los programas están separados. En tercer lugar, el hijo probablemente querrá mostrar sus experimentos a sus amigos, y las versiones móviles son populares entre los amigos. Decidí que es imposible, ya que estos juguetes móviles se pueden conectar a los servidores, no todo está perdido. Y comencé a buscar.


El primer día, mi cromo estaba lleno de pestañas y el caos reinaba en mi cabeza.
El primero fue el servidor Nukkit de código abierto , al que el juego en mi Android se conectó con bastante éxito. El único punto aquí es que necesitamos la versión actual del juego (1.12 para hoy), por lo que necesitaba actualizarla primero. El servidor tiene muchos complementos, pero no se encontró un complemento adecuado para la programación, como se describe en los libros.


Es cierto que se encontró PyPlugins , que parece estar lanzando Jython, una versión de python en java. Pero, según tengo entendido, jython se decidió por la versión en lenguaje python 2.7. Ponga a un lado esta opción como antideportiva.


Vayamos por otro lado, pero ¿cómo se referían los autores de los libros a conectar Python a los servidores? Después de estudiar cuidadosamente materiales adicionales para libros, ya que están disponibles gratuitamente, encontré el complemento RaspberryJuice , cuidadosamente oculto en el directorio de complementos (ni una palabra al respecto en el libro), luego abre un socket de red en previsión de comandos. Y la biblioteca python mcpi envía comandos . Gracias a los autores, todos son de código abierto. Me molestó un poco que la última confirmación fue hace 2-4 años.


Pero, ¿cómo conectar RaspberryJuice a Nukkit? Y aquí se busca, no te rías, Pokkit es un complemento de Nukkit para ejecutar complementos para Bukkit. No sé por qué los nombres son así, pero me agregó una hora extra de búsqueda, ya que al principio los confundí. Parece que ahora todas las partes del rompecabezas están en su lugar, pero el lanzamiento revela un error: java.lang.NoSuchFieldError: GOLD_SWORD . Es una pena, porque en la descripción de Pokkit se observó que RaspberryJuice está en la lista de los compatibles. Emitido un error . Sorprendentemente, la respuesta llegó rápidamente: el complemento está desactualizado. "Aquí todo está oxidado", me vino a la mente la frase de mi película favorita. Después de la aclaración, el autor explicó amablemente dónde obtener la API moderna para bukkit y luego "de alguna manera lo hacemos". Complemento obsoleto bifurcado, reemplazó rápidamente todos los métodos que desaparecieron en la versión actual de la API, encontrando un reemplazo para ellos. Resultó que algo como world.getBlockTypeIdAt(loc) cambió a world.getBlockAt(loc).getType().getId() . Sin embargo, un punto sigue siendo significativo: anteriormente era posible hacer un arco iris a partir de los mismos bloques (como en el ejemplo, block.WOOL ), pintado en diferentes colores. Ahora es imposible volver a pintar los bloques, debe tomar los bloques inicialmente multicolores ( Material.RED_WOOL , Material.BLUE_CARPET ). Emitió una solicitud de extracción y descubrió que hay dos solicitudes de extracción más, ambas nuevas. La próxima vez vale la pena comprobarlo primero ...


Entonces, las instrucciones sobre cómo lanzar rápidamente esta pirámide desde Nukkit-Pokkit-RaspberryJuice-mcpi:


  1. Tomamos un servidor adecuado, al que hay acceso desde su Minecraft móvil. Por ejemplo, una computadora doméstica con un puerto abierto de 19132 (el valor predeterminado). Es más fácil para mí en Linux, pero cualquier sistema operativo con entorno de ejecución Java es adecuado.
  2. Servidor Nukkit Descargue el JAR recomendado desde el enlace "Descargas" o mvn clean package el suyo propio desde la fuente ( mvn clean package ). Ponemos en un directorio separado y simplemente ejecutamos java -jar nukkit-1.0-SNAPSHOT.jar .
  3. Complemento Pokkit . Descargue el JAR recomendado desde el enlace "Descarga y uso" o mvn clean package el suyo propio desde la fuente ( mvn clean package ). Lo colocamos en el directorio de plugins , que se formó después del paso 2. Detenga y reinicie el servidor, como en el paso 2.
  4. RaspberryJuice plugin con mi parche . Descargue el JAR recomendado desde el enlace o recopile el suyo desde la fuente (rama de pocket-edition , mvn clean package ). Ponemos en el plugins/Pokkit/bukkitPlugins/ , que se formó después del paso 3. plugins/Pokkit/bukkitPlugins/ y reiniciamos el servidor.
  5. Conectamos Minecraft móvil al servidor: Play - Servidores - Otros servidores - agregue uno nuevo o edite el existente: "nombre del servidor" - a su gusto, "dirección del servidor" - dirección IP del servidor desde el paso 1, "puerto" 19132, si no se modificó en la configuración . Guarda y conecta.
  6. Instale python 3 y la biblioteca pip3 install --user py3minepi : pip3 install --user py3minepi . Después de eso, puede ejecutar los ejemplos de los libros 1 y 2 simplemente ingresando python3 Adventure3/dice.py

UPD: en el paso 6, debe instalar la biblioteca mcpi de esta manera: git clone https://github.com/py3minepi/py3minepi.git && cd py3minepi && pip3 install --user . (Al final se necesita el punto). Esto se debe al hecho de que el autor del complemento tiene la última versión de python 3.4.


Puede probar sin python (paso 6) conectándose al complemento con el habitual netcat: nc localhost 19132 e ingresando los comandos manualmente:


  • player.getTile() : las coordenadas del jugador se devolverán en el formato x, y, z, donde el eje y se dirige al cielo y el plano xz es paralelo a la tierra. Tengo 75,-5,-5 ,
  • world.setBlock(75,-6,-5,3) : establece el bloque de suciedad debajo del reproductor,
  • world.spawnEntity(75,-4,-5,93) : world.spawnEntity(75,-4,-5,93) un pollo sobre un jugador.

Mis experimentos se pueden ver en la imagen inicial de esta publicación.


Si llueve o cae la noche y es difícil de ver, ingrese los comandos time set 0 y weather clear en la consola del servidor.


Eso es todo Es genial que haya código abierto y ahora es tan simple, buscando en el dominio público, en algunas tardes para construir una pirámide de programas de trabajo. Especialmente quiero señalar la amabilidad y las respuestas casi instantáneas en los chats de muchos proyectos.


También encontré este maravilloso video sobre la representación de contenedores de servidores Docker en el mundo de Minecraft:



Es improbable que los contenedores del hijo sean interesantes, pero el parpadeo con LED en respuesta al cambio de interruptores de dibujos animados es la cuestión. Estaré encantado de aconsejarle qué más podría surgir con uno tan inusual para la enseñanza de la programación.

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


All Articles