View on GitHub

python-minecraft

Introductions and Python Code examples for kids to learn python programming with minecraft. The Python code will run with a modified MCPI (Pi edition API Python Library) call `mcpi-e`, and a mincraft server call spigot with the RaspberryJuice plugin installed.

Python programming with minecraft

Our goal is to learn programming while having fun in Minecraft

alt python-minecraft


0 Pre-Request

0.1 Install Minecraft Java edition

Go to minecraft website download the Java Edition

0.2 Setup mincraft server

0.3 Install Python

Go to Python download page, download and install Python 3.8 and up

0.4 Install mcpi Python module

Window

input below script in the command line. (from start, search “cmd”)

Linux / MacOS

0.5 Install a Python Editor


1. Get Start Python with Minecraft

1.1 Connect to the Minecraft server and get your position

Create a Python project folder, Download and save the sample1.py file to your python project folder

sample1.py

from mcpi_e.minecraft import Minecraft

serverAddress="127.0.0.1" # change to your minecraft server
pythonApiPort=4711 #default port for RaspberryJuice plugin is 4711, it could be changed in plugins\RaspberryJuice\config.yml
playerName="stoneskin" # change to your username

mc = Minecraft.create(serverAddress,pythonApiPort,playerName)
pos = mc.player.getPos()

print("pos: x:{},y:{},z:{}".format(pos.x,pos.y,pos.z))

Use your faverate python editor to open the sample1.py file. When you install python, it come with a python editor call IDLE.j

1.2. Frequently used mcpi commands

1.2.1 Find your location

get the tile position

pos = mc.player.getTilePos()

1.2.2 Teleport

move player to north 100 block

x,y,z = pos = mc.player.getTilePos()
mc.player.setTilePos(x,y+100,z)

1.2.3 Set block

set the a stone block beside the player

x,y,z = pos = mc.player.getTilePos()
mc.setBlock(x+1, y, z, 1)

setblock with constants block.STONE.id

#setblock with constants block.STONE.id
from mcpi_e import block
(x,y,z) = pos = mc.player.getTilePos()
mc.setBlock(x+1, y, z+1, block.STONE.id)

set special block which extra properties

# set special block which extra properties
flower = 38
flowerColor = 3
mc.setBlock(x+1, y, z+1, flower, flowerColor)

1.2.4 Get block

get the block type id of the player stepping on

# get the block current player step on
x, y, z = mc.player.getTilePos()
blockId= mc.getBlock(x, y, z)
if(blockId == 0):
   print("current block is Air")

#####heart Check the Minecraft Item ID list


2 Learn Python With Minecraft

To use the code examples in this site, please make sure include the piece of code below before the sample codes

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

address="127.0.0.1" # change to address of your minecraft server
name ="change you your name"
mc = minecraft.Minecraft.create(address,4711,name)
pos=mc.player.getTilePos()

#your other code below
...

2.1 Understand the coordinates of minecraft

Minecraft coordinates are different than what we learn from geomestry. You need keep the picture below in mind when you do the minecraft coding. coordinates of minecraft

For basic python syntax, pleas check Python syntax for details.

The missions/codes below will use print and command from minecraft api mcpi

clickme Click to view your Mincraft-Python Missions-1

2.2 Use for Loop to stack blocks

for loops are traditionally used when you have a block of code which you wnat to repeat number of times.

for x in range(0, 3):
    print("We're on time %d" % (x))

For learnning how to use for loop, please visit Python For Loops

Below mission only need using for ... range loop.

clickmeClick to view your Coding Missions -2

2.3 Value Type: String , Number

In Python any amount of text call a string, you could use string like this

print("Hello Minecraft")

name ="Steve the Miner"

print(name)

String and Intiger is different DataType, for detail please read Python Data Types. Below is the Data Types we possible will used in our class

datatypes

example of get type of a variable:

x = 5
print(type(x))

The data you got form input is a string, we need convert to number before using as number. int(str) could do this job.

blockType=input("Enter a block type:")
blockTypeId=int(blockType)

other way if you want change a int to string, you could use str(number)

value=103
print("Watermelon block id is "+str(value))

clickmeClick to view your Coding Missions -3

2.4 Use Condition if ... else

To learn comdition please check Python If…Else

Booleans represent one of two values: True or False

For learn more and practic Boolean, please check Python Boolean

condition

clickmeClick to view your Coding Missions -4


3 More Code Samples

3.1 Dropping the flowers when you move

Set a random flower on where the play is standing

   flower = 38
   while True:
      x, y, z = mc.playerEn.getPos()
      blockId= mc.getBlock(x, y, z)
      print("current block:" + str(mc.getBlock(x, y, z)))
      if(blockId==0 or blockId ==78):
         mc.setBlock(x, y, z, flower,randrange(8))
      sleep(0.2)

alt python-minecraft

3.2 Build a rainbow in the minecraft

code example: rainbow.py build a rainbow with colored wool on the player’s location

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

   address="127.0.0.1" # change to your minecraft server
   name ="change you your name"
   mc = minecraft.Minecraft.create(address,4711,name)
   playerPos=mc.player.getTilePos()
   colors = [14, 1, 4, 5, 3, 11, 10]
   height=50

   for x in range(0, 128):
         for colourindex in range(0, len(colors)):
                  y = playerPos.y+sin((x / 128.0) * pi) * height + colourindex
                  mc.setBlock(playerPos.x+x - 64,  int(y), playerPos.z, block.WOOL.id, colors[len(colors) - 1 - colourindex])
   print("rainbow created at x:{} y:{} z:{}".format(playerPos.x,playerPos.y,playerPos.z))

alt python-minecraft