How to Run Python Script with minecraft
install
API ReferenceThis is a reference of Minecraft: Pi Edition's: Python API Library.If you want to know more about how to use the API, including tutorials, see my projects and download code, visit my minecraft page. Structure
Minecraft"Main class for interacting with the Minecraft world, includes functions for creating a connection, modifying players and blocks and capturing events".create(address = "localhost", port = 4711) "Create connection to Minecraft (address, port) => Minecraft object"
#use default address and port
mc = minecraft.Minecraft.create()
#specify ip address and port
mc = minecraft.Minecraft.create("192.168.1.1", 4711)
.getBlock(x,y,z) "Get block (x,y,z) => id:int" #retrieves the block type for the block at 0,0,0 blockType = mc.getBlock(0,0,0)
.getBlocks(x0,y0,z0,x1,y1,z1) "Get a cuboid of blocks (x0,y0,z0,x1,y1,z1) => [id:int]"
Not implemented in the API .getBlockWithData(x,y,z) "Get block with data (x,y,z) => Block"
#retrieves a block object for the block at 0,0,0 blockObj = mc.getBlockWithData(0,0,0) .setBlock(x,y,z) "Set block (x,y,z,id,[data])"
#sets a block at an x, y, z co-ordinate to a particular type mc.setBlock(0,0,0,block.DIRT.id) #sets a block to a particular type and 'subtype' mc.setblock(0,0,0,block.WOOD.id, 1) .setBlocks(x0,y0,z0,x1,y1,z1,blockType, blockData) "Set a cuboid of blocks (x0,y0,z0,x1,y1,z1,id,[data])" #sets many blocks at a time, filling the gap between 2 sets of x, y, z co-ordinates mc.setBlocks(-1, -1, -1, 1, 1, 1, block.STONE.id) .getHeight(x,z) "Get the height of the world (x,z) => int" #find the y (vertical) of an x, z co-ordinate which represents the 'highest' (non-air) block y = mc.getHeight(0,0) .getPlayerEntityIds() "Get the entity ids of the connected players => [id:int]" #get the entity id's of the players connected to the game entityIds = mc.getPlayerEntityIds() for entityId in entityIds print entityId .saveCheckpoint() "Save a checkpoint that can be used for restoring the world" mc.saveCheckpoint() .restoreCheckpoint() "Restore the world state to the checkpoint" mc.restoreCheckpoint() .postToChat(message) "Post a message to the game chat" #write 'Hello Minecraft World' to the chat window mc.postToChat("Hello Minecraft World") .setting(setting, status) "Set a world setting (setting, status). keys: world_immutable, nametags_visible" #change world immutable to True mc.setting("world_immutable", True) #change nametags_visible setting to False mc.setting("nametags_visible", False) Minecraft.player.getPos()"Gets the player's position in the world as a Vec3 of floats (decimal numbers), if the player is in the middle of a block x.5 is returned" #get players position as floats playerPos = mc.player.getPos() .setPos() "Moves the player to a position in the world by passing co-ordinates ([x,y,z])" #set the players position as floats mc.player.setPos(0.0,0.0,0.0) .getTilePos() "Gets the position of the 'tile' the player is currently on." #get the position of the tile the players is on playerTile = mc.player.getTilePos() .setTilePos() "Move the player to a tile position in the world by passing co-ordinates ([x,y,z])" #set the position of the tile the player is on mc.player.setTilePos(0,0,0) Minecraft.camera.setNormal(entityId)"Set camera mode to normal Minecraft view ([entityId])" #set camera mode to normal for a specific player mc.camera.setNormal(entityId) .setFixed() "Set camera mode to fixed view" #set camera mode to fixed mc.camera.setFixed() .setFollow(entityId) "Set camera mode to follow an entity ([entityId])" #set camera mode to follow for a specific player mc.camera.setFollow(entityId) .setPos(x,y,z) "Set camera entity position (x,y,z)" #set camera position to a specific position of x, y, z mc.camera.setPos(0,0,0) Minecraft.events.pollBlockHits()"Block Hits (Only triggered by sword) => [BlockEvent]" #get block event hits that have occured since the last time the function was run
blockEvents = mc.events.pollBlockHits()
for blockEvent in blockEvents print blockEvent .clearAll() "Clear all old events" #clear all events that have happened since the events where last got mc.events.clearAll() Block"The definition of a Block in Minecraft, used to describe a block type and (if applicable) its data; also contains constants for the blocks type id's, e.g. BLOCK.AIR.id"#create block of a specific type
blockObj = block.Block(id)
#create a block of a specific type and apply a data value
blockObj = block.Block(id, data)
.id
"The id (or type) of block"
Block id constants: AIR = Block(0)
STONE = Block(1)
GRASS = Block(2)
DIRT = Block(3)
COBBLESTONE = Block(4)
WOOD_PLANKS = Block(5)
SAPLING = Block(6)
BEDROCK = Block(7)
WATER_FLOWING = Block(8)
WATER = WATER_FLOWING
WATER_STATIONARY = Block(9)
LAVA_FLOWING = Block(10)
LAVA = LAVA_FLOWING
LAVA_STATIONARY = Block(11)
SAND = Block(12)
GRAVEL = Block(13)
GOLD_ORE = Block(14)
IRON_ORE = Block(15)
COAL_ORE = Block(16)
WOOD = Block(17)
LEAVES = Block(18)
GLASS = Block(20)
LAPIS_LAZULI_ORE = Block(21)
LAPIS_LAZULI_BLOCK = Block(22)
SANDSTONE = Block(24)
BED = Block(26)
COBWEB = Block(30)
GRASS_TALL = Block(31)
WOOL = Block(35)
FLOWER_YELLOW = Block(37)
FLOWER_CYAN = Block(38)
MUSHROOM_BROWN = Block(39)
MUSHROOM_RED = Block(40)
GOLD_BLOCK = Block(41)
IRON_BLOCK = Block(42)
STONE_SLAB_DOUBLE = Block(43)
STONE_SLAB = Block(44)
BRICK_BLOCK = Block(45)
TNT = Block(46)
BOOKSHELF = Block(47)
MOSS_STONE = Block(48)
OBSIDIAN = Block(49)
TORCH = Block(50)
FIRE = Block(51)
STAIRS_WOOD = Block(53)
CHEST = Block(54)
DIAMOND_ORE = Block(56)
DIAMOND_BLOCK = Block(57)
CRAFTING_TABLE = Block(58)
FARMLAND = Block(60)
FURNACE_INACTIVE = Block(61)
FURNACE_ACTIVE = Block(62)
DOOR_WOOD = Block(64)
LADDER = Block(65)
STAIRS_COBBLESTONE = Block(67)
DOOR_IRON = Block(71)
REDSTONE_ORE = Block(73)
SNOW = Block(78)
ICE = Block(79)
SNOW_BLOCK = Block(80)
CACTUS = Block(81)
CLAY = Block(82)
SUGAR_CANE = Block(83)
FENCE = Block(85)
GLOWSTONE_BLOCK = Block(89)
BEDROCK_INVISIBLE = Block(95)
STONE_BRICK = Block(98)
GLASS_PANE = Block(102)
MELON = Block(103)
FENCE_GATE = Block(107)
GLOWING_OBSIDIAN = Block(246)
NETHER_REACTOR_CORE = Block(247)
.data
"The data (or sub-type) of a block"
WOOL data values (colours):
2: Pointing west0: White 1: Orange 2: Magenta 3: Light Blue 4: Yellow 5: Lime 6: Pink 7: Grey 8: Light grey 9: Cyan 10: Purple 11: Blue 12: Brown 13: Green 14: Red 15:Black Wood data values: 0: Oak 1: Spruce 2: Birch 3: .... [needs completing] TORCH data values: 1: Pointing east 3: Pointing south 4: Pointing north 5: Standing on the floor 6: Standing in ground LEAVES data values: 0: Oak leaves 1: Spruce leaves 2: Birch leaves BlockEvent"The definition of a BlockEvent in minecraft, used to describe an event in minecraft affecting blocks; returned by the Minecraft.events.pollBlockHits() method."blockEvent = mc.events.pollBlockHits() .type "Type of block event; there is only 1 event currently implemented BlockEvent.HIT" blockEventType = blockEvent.type BlockEvent types: 0: BlockEvent.HIT .pos "The position of the block where the event occured, i.e. the block which was hit. .pos returns a Vec3 object of x,y,z co-ordinates" blockEventPos = BlockEvent.pos .face "The face of the block where the event occured" blockEventFace = BlockEvent.face .entityId "entityId of the player who caused the block event, i.e. the player who hit the block" blockEventPlayer - BlockEvent.entityId Vec3
zPos = position.z |
Raspberry Pi > Minecraft + Scratch >