原链接:https://www.stuffaboutcode.com/p/minecraft-api-reference.html
源代码:https://github.com/martinohanlon/mcpi
https://github.com/zhuowei/RaspberryJuice
This is a reference of Minecraft Python API Library, which is supported on Minecraft: Pi edition and the PC version using the RaspberryJuice plugin.
似乎缺少生物相关的api?难道生物也是block?
pip install mcpi
Compatability
Not all functions and block types are available on all version of the api, by each function you will see a logo which shows whether that function is available:
import mcpi.minecraft as minecraft
import mcpi.block as block
"Main class for interacting with the Minecraft world, includes functions for creating a connection, modifying players and blocks and capturing events"
"Create connection to Minecraft (address, port) => Minecraft object"
mc = minecraft.Minecraft.create() #use default address and port
mc = minecraft.Minecraft.create("192.168.1.1", 4711) #specify ip address and port
"Get block (x,y,z) => id:int"
blockType = mc.getBlock(0,0,0) #retrieves the block type for the block at 0,0,0
"Get a cuboid of blocks (x0,y0,z0,x1,y1,z1) => [id:int]"
blocks = mc.getBlocks(-1,-1,-1,1,1,1) #get the block id's in a cuboid for block in blocks: print block
"Get block with data (x,y,z) => Block"
blockObj = mc.getBlockWithData(0,0,0) #retrieves a block object for the block at 0,0,0
"Set block (x,y,z,id,[data])"
mc.setBlock(0,0,0,block.DIRT.id) #sets a block at an x, y, z co-ordinate to a particular type
mc.setblock(0,0,0,block.WOOD.id, 1) #sets a block to a particular type and 'subtype'
"Set a cuboid of blocks (x0,y0,z0,x1,y1,z1,id,[data])"
mc.setBlocks(-1, -1, -1, 1, 1, 1, block.STONE.id) #sets many blocks at a time, filling the gap between 2 sets of x, y, z co-ordinates
"Get the height of the world (x,z) => int"
y = mc.getHeight(0,0) #find the y (vertical) of an x, z co-ordinate which represents the 'highest' (non-air) block
"Get the entity ids of the connected players => [id:int]"
entityIds = mc.getPlayerEntityIds() #get the entity id's of the players connected to the game for entityId in entityIds: print entityId
"Get the entity id for a named player => [id:int]"
entityId = mc.getPlayerEntityId("martinohanlon") #get the entity id of a name player 'martinohanlon' print entityId
"Save a checkpoint that can be used for restoring the world"
Available on Minecraft: Pi Edition
mc.saveCheckpoint()
"Restore the world state to the checkpoint"
Available on Minecraft: Pi Edition
mc.restoreCheckpoint()
"Post a message to the game chat"
mc.postToChat("Hello Minecraft World") #write 'Hello Minecraft World' to the chat window
"Set a world setting (setting, status). keys: world_immutable, nametags_visible"
Available on Minecraft: Pi Edition
mc.setting("world_immutable", True) #change world immutable to True
mc.setting("nametags_visible", False) #change nametags_visible setting to False
"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"
playerPos = mc.player.getPos() #get players position as floats
"Moves the player to a position in the world by passing co-ordinates ([x,y,z])"
mc.player.setPos(0.0,0.0,0.0) #set the players position as floats
"Gets the position of the 'tile' the player is currently on."
playerTile = mc.player.getTilePos() #get the position of the tile the players is on
"Move the player to a tile position in the world by passing co-ordinates ([x,y,z])"
mc.player.setTilePos(0,0,0) #set the position of the tile the player is on
"Set a player setting (setting, status). keys: autojump"
Available on Minecraft: Pi Edition
mc.player.setting("autojump", True) #change the autojump setting to True
"Get the rotational angle(旋转角度-水平) (0 to 360) for the player => [angle:float]"
angle = mc.player.getRotation() #get the rotation of the player print angle
"Get the pitch angle(俯仰角度-垂直) (-90 to 90) for the player => [pitch:float]"
pitch = mc.player.getPitch() #get the pitch for the player print pitch
"Get unit vector of x,y,z for the player's direction => [Vec3]"
direction = mc.player.getDirection() #get the player's direction print direction
The entity functions are used in conjunction with the .getPlayerEntityIds() function to interact with the entity (or players) 玩家 in a game. Entity functions are useful for multiplayer games.
entity -
players - 玩家, mc.entity 和 mc.player的区别,player适用与单人,entity适用于多人。 API的设计上似乎有些冗余?还没仔细看这样设计的好处是什么,可以将参数entityId放在最后,默认是0表示当前玩家。
纠正一下之前的理解,entity 指的是生物。
entityIds = mc.getPlayerEntityIds() #get the entity id's of the players connected to the game
1stEntityId = entityIds[0]
2ndEntityId = entityIds[1]
...
"Gets an entities position in the world as a Vec3 of floats (decimal numbers), if the entity is in the middle of a block x.5 is returned"
entityPos = mc.entity.getPos(entityId) #get first entity position as floats
"Moves the entity to a position in the world by passing co-ordinates ([x,y,z])"
mc.player.setPos(entityId,0.0,0.0,0.0) #set the players position as floats
"Gets the position of the 'tile' the entity is currently on."
entityTile = mc.entity.getTilePos(entityId) #get the position of the tile the entity is on
"Move the entity to a tile position in the world by passing co-ordinates ([x,y,z])"
mc.player.setTilePos(entityId,0,0,0) #set the position of the tile the entity is on
"Get the rotational angle (0 to 360) for an entity => [angle:float]"
angle = mc.entity.getRotation(entityId) #get the rotation of an entity print angle
"Get the pitch angle (-90 to 90) for an entity => [pitch:float]"
pitch = mc.entity.getPitch(entityId) #get the pitch for an entity print pitch
"Get unit vector of x,y,z for an entities direction => [Vec3]"
direction = mc.entity.getDirection(entityId) #get and entities direction print direction
"Set camera mode to normal Minecraft view ([entityId])"
Available on Minecraft: Pi Edition
mc.camera.setNormal(entityId) #set camera mode to normal for a specific player
"Set camera mode to fixed view"
Available on Minecraft: Pi Edition
mc.camera.setFixed() #set camera mode to fixed
"Set camera mode to follow an entity ([entityId])"
Available on Minecraft: Pi Edition
mc.camera.setFollow(entityId) #set camera mode to follow for a specific player
"Set camera entity position (x,y,z)"
Available on Minecraft: Pi Edition
mc.camera.setPos(0,0,0) #set camera position to a specific position of x, y, z
"Block Hits (Only triggered by sword) => [BlockEvent]"
blockEvents = mc.events.pollBlockHits() #get block event hits that have occured since the last time the function was run for blockEvent in blockEvents: print blockEvent
"Chat posts => [ChatEvent]"
chatEvents = mc.events.pollChatPosts() #get chat post events (messages) since the last time the function was run for chatEvent in chatEvents: print chatEvents
"Clear all old events"
mc.events.clearAll() #clear all events that have happened since the events where last got
"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"
blockObj = block.Block(id) #create block of a specific type
blockObj = block.Block(id, data) #create a block of a specific type and apply a data value
如何导入包?
import minecraft
import block
.id
"The id (or type) of block"
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"
Data Values of blocks:
WOOL:
0: 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:
0: Oak (up/down)
1: Spruce (up/down)
2: Birch (up/down)
(below not on Pi)
3: Jungle (up/down)
4: Oak (east/west)
5: Spruce (east/west)
6: Birch (east/west)
7: Jungle (east/west)
8: Oak (north/south)
9: Spruce (north/south)
10: Birch (north/south)
11: Jungle (north/south)
12: Oak (only bark)
13: Spruce (only bark)
14: Birch (only bark)
15: Jungle (only bark)
WOOD_PLANKS (Not on Pi):
0: Oak
1: Spruce
2: Birch
3: Jungle
SAPLING:
0: Oak
1: Spruce
2: Birch
3: Jungle (Not on Pi)
GRASS_TALL:
0: Shrub
1: Grass
2: Fern
3: Grass (color affected by biome) (Not on Pi)
TORCH:
1: Pointing east
2: Pointing west
3: Pointing south
4: Pointing north
5: Facing up
STONE_BRICK:
0: Stone brick
1: Mossy stone brick
2: Cracked stone brick
3: Chiseled stone brick
STONE_SLAB / STONE_SLAB_DOUBLE:
0: Stone
1: Sandstone
2: Wooden
3: Cobblestone
4: Brick
5: Stone Brick
Below - not on Pi
6: Nether Brick
7: Quartz
Not on Pi
SNOW_BLOCK:
0-7: Height of snow, 0 being the lowest, 7 being the highest.
TNT:
0: Inactive
1: Ready to explode
LEAVES:
1: Oak leaves
2: Spruce leaves
3: Birch leaves
SANDSTONE:
0: Sandstone
1: Chiseled sandstone
2: Smooth sandstone
STAIRS_[COBBLESTONE, WOOD]:
0: Ascending east
1: Ascending west
2: Ascending south
3: Ascending north
4: Ascending east (upside down)
5: Ascending west (upside down)
6: Ascending south (upside down)
7: Ascending north (upside down)
LADDERS, CHESTS, FURNACES, FENCE_GATE:
2: Facing north
3: Facing south
4: Facing west
5: Facing east
[WATER, LAVA]_STATIONARY:
0-7: Level of the water, 0 being the highest, 7 the lowest
NETHER_REACTOR_CORE:
0: Unused
1: Active
2: Stopped / used up
"The definition of a BlockEvent in Minecraft, used to describe an event in Minecraft affecting blocks; returned by the Minecraft.events.pollBlockHits() method."
.type
"Type of block event; there is only 1 event currently implemented BlockEvent.HIT"
blockEvent = mc.events.pollBlockHits()
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
"The definition of a ChatEvent in Minecraft, used to describe an event when a message is posted to the chat bar in Minecraft, returned by Minecraft.events.pollBlockHits() method."
chatEvent = mc.events.pollChatPosts()
.type
"Type of block event; there is only 1 event currently implemented ChatEvent.POST"
chatEventType = chatEvent.type
ChatEvent types:
0: ChatEvent.POST
.message
"The message which was posted to the chat window."
chatEventMessage = ChatEvent.message
.entityId
"entityId of the player who posted the message to the chat."
blockEventPlayer - BlockEvent.entityId
Vec3
"The definition of a 3 part vector in Minecraft, i.e. a set of x, y, z co-ordinates; x and z are the horizontal positions, y the vertical"
position = vec3.Vec(0,0,0)
.x
"x position"
xPos = position.x
.y
"y position"
yPos = position.y
.z
"z position"
zPos = position.z
编码器是一种用来测量机械旋转或位移的传感器。它能够测量机械部件在旋转或直线运动时的位移位置或速度等信息,并将其转换成一系列电信号。
Minecraft Link使您能够通过 MCreator 程序、命令和 Minecraft mod 开发人员的通用 API 将 Arduino 和Raspberry Pi 等硬件设备与 Minecraft 游戏连接起来。
上周,几乎是前后脚,英伟达和国内几家科研机构分别发布了两份内容相似的论文。
一高二学生因爆肝在B站火了。他从未接触过数电,一切从零开始,仅仅是为了搞清计算器的原理,然后就直接在《我的世界》里肝出了个“理论最快”四则计算器。
数字电路是MC中十分重要的红石电路,其中最为关键的就是逻辑门。
我的世界服务端大全,本文收集了一些MC的服务端。
想象一下如果世界没有电,那将是多么令人绝望的景象。夜晚不再有光;空调和WIFI也变成了奢望;你目前正在阅读的这篇文章,将不可能呈现在你面前;当然,你热爱的游戏《我的世界》,也不可能存在了。
想成为《我的世界》中众人膜拜的高阶玩家吗?红石系统是可以让你怒刷存在感的不二法器。
本书是教你如何将Minecraft元素引入真实世界。用乐高积本或者3D打印材料,进行Minecraft趣味实物制作,并且进一步运用Arduino、编程以及机器人技术,使制作项目发光、运动。
Minecraft相关的红石介绍,内容知识偏向硬核,可能有点晦涩难懂。
单枪匹马造出一个CPU乃至完整的电脑需要多长时间?有位大牛在《我的世界》游戏里用实际行动回答了这个问题:可能要花费一年多。