When you’ve installed Minecraft on the Raspberry Pi and setup the Python API you will want to get creating scripts to manipulate the Minecraft World. This is going to involve a lot of block manipulation.
Each type of block (sand, dirt, water etc) has a unique ID number associated with it. It is helpful to have a list of these numbers to hand so you can use them in your code.
There aren’t as many blocks in the Pi edition as the full PC versions but there are still plenty to work with.
Here is the full list defined as constants in the API with their block ID numbers :
API Blocks ======================= AIR 0 STONE 1 GRASS 2 DIRT 3 COBBLESTONE 4 WOOD_PLANKS 5 SAPLING 6 BEDROCK 7 WATER_FLOWING 8 WATER 8 WATER_STATIONARY 9 LAVA_FLOWING 10 LAVA 10 LAVA_STATIONARY 11 SAND 12 GRAVEL 13 GOLD_ORE 14 IRON_ORE 15 COAL_ORE 16 WOOD 17 LEAVES 18 GLASS 20 LAPIS_LAZULI_ORE 21 LAPIS_LAZULI_BLOCK 22 SANDSTONE 24 BED 26 COBWEB 30 GRASS_TALL 31 WOOL 35 FLOWER_YELLOW 37 FLOWER_CYAN 38 MUSHROOM_BROWN 39 MUSHROOM_RED 40 GOLD_BLOCK 41 IRON_BLOCK 42 STONE_SLAB_DOUBLE 43 STONE_SLAB 44 BRICK_BLOCK 45 TNT 46 BOOKSHELF 47 MOSS_STONE 48 OBSIDIAN 49 TORCH 50 FIRE 51 STAIRS_WOOD 53 CHEST 54 DIAMOND_ORE 56 DIAMOND_BLOCK 57 CRAFTING_TABLE 58 FARMLAND 60 FURNACE_INACTIVE 61 FURNACE_ACTIVE 62 DOOR_WOOD 64 LADDER 65 STAIRS_COBBLESTONE 67 DOOR_IRON 71 REDSTONE_ORE 73 SNOW 78 ICE 79 SNOW_BLOCK 80 CACTUS 81 CLAY 82 SUGAR_CANE 83 FENCE 85 GLOWSTONE_BLOCK 89 BEDROCK_INVISIBLE 95 STONE_BRICK 98 GLASS_PANE 102 MELON 103 FENCE_GATE 107 GLOWING_OBSIDIAN 246 NETHER_REACTOR_CORE 247
Some of the blocks that appear in the inventory screen aren’t listed but here they are :
Non-API Blocks ======================= PAINTING 321 STONE_STAIRS 67 OAK_STAIRS 53 OAK_STAIRS 59 NETHERRACK 87 TRAPDOOR 96 MELON_SEEDS 105 BRICK_STAIRS 108 SANDSTONE_STAIRS 128 STONE_BRICK_STAIRS 109 NETHER_BRICK 112 NETHER_BRICK_STAIRS 114 QUARTZ_BLOCK 155 QUARTZ_STAIRS 156 STONE_CUTTER 245 BONE_MEAL 351
If you have imported the “block” library at the top of your script like this :
import mcpi.block as block
you can call up the blocks in the “API Block List” using the following syntax :
block.MELON.id
In this example it saves you defining your own variable or using the number 103 and may make your script more readable.
To use the blocks in the “Non-API Block List” you will have to use the block number directly.
Examples
Place a block of sandstone :
mc.setBlock(10,10,10,block.SANDSTONE.id)
Place a stone cutter on top of the sandstone :
mc.setBlock(10,11,10,245)
Place a block of grass on top of the stone cutter :
mc.setBlock(10,11,10,block.GRASS.id)
2 Comments
Can I see an example of an block ID with a .data extension? I’m trying to rotate some stairs by using the block ID 108.3, but to no avail. What would I need to do to have the ID make the block rotate?
Instead of doing 108.3 do 108, 3