Giter Site home page Giter Site logo

pannyhuang / python-minecraft Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stoneskin/python-minecraft

0.0 0.0 0.0 117.88 MB

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.

Home Page: https://stoneskin.github.io/python-minecraft/

License: MIT License

Python 100.00%

python-minecraft's Introduction

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")

  • use pip3

    pip3 install mcpi-e
  • or use py or python -m

    py -m pip install mcpi-e

Linux / MacOS

  • sudo pip3 install mcpi-e

0.5 Install a Python Editor

  • Python IDLE

    • IDLD is commine with Python, Open it by in Start->Search, Input "IDLE"
    • For how to use IDLE
  • PyCharm

    • PyCharm Edu is a python editor help you learn Python
    • Click to download pyCharm Edu
  • VsCode


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
...

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

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

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))

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


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

python-minecraft's People

Contributors

stoneskin avatar wsun4ipipeline avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.