Our goal is to learn programming while having fun in Minecraft
Go to minecraft website download the Java Edition
Go to Python download page, download and install Python 3.8 and up
input below script in the command line. (from start, search "cmd")
-
use
pip3
pip3 install mcpi-e
-
or use
py
orpython -m
py -m pip install mcpi-e
- sudo pip3 install mcpi-e
-
Python IDLE
-
PyCharm
- PyCharm Edu is a python editor help you learn Python
- Click to download pyCharm Edu
-
VsCode
- VsCode is a editor for many different programming langurage.
- Click to download VsCode
- How to install VsCode for python
Create a Python project folder, Download and save the sample1.py file to your python project folder
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
get the tile position
pos = mc.player.getTilePos()
move player to north 100 block
x,y,z = pos = mc.player.getTilePos()
mc.player.setTilePos(x,y+100,z)
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)
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")
##### Check the Minecraft Item ID list
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
...
Minecraft coordinates are different than what we learn from geomestry. You need keep the picture below in mind when you do the minecraft coding.
For basic python syntax, pleas check Python syntax for details.
The missions/codes below will use print
and command from minecraft api mcpi
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.
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
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))
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
- code example 1: dropflower.py
- code example 2 : dropflower_Withsize.py
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)
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))