Block, item and entity ids: namespaces, block states, and the ones that differ
An id is not always what the item is called, and a block id is not the same as its item id. The naming rules, the renames that break old commands, and where states fit.
Every command that fails with "Unknown item" or "Unknown block" is an id problem, and the rules are more subtle than "lowercase with underscores".
The namespace is not optional in data
minecraft:diamond_sword
my_pack:custom_sword
Commands let you omit minecraft: — /give @s diamond_sword works — and so do JSON files: a bare diamond_sword in a loot table or recipe resolves to minecraft:diamond_sword. Write the namespace everywhere anyway; it keeps your own ids unambiguous and a typo in a namespace easy to spot.
Block id and item id are different things
Some blocks have no item, some items place a different block:
| Item | Block placed |
|---|---|
minecraft:wheat_seeds | minecraft:wheat |
minecraft:redstone | minecraft:redstone_wire |
minecraft:string | minecraft:tripwire |
minecraft:flower_pot | minecraft:flower_pot, but potted variants are separate blocks |
| — | minecraft:water, minecraft:fire have no item (air exists as an item only as the empty stack) |
/setblock takes the block id. /give takes the item id. Using the wrong one is the most common source of "that id does not exist" when the thing plainly does.
Block states live in square brackets
/setblock ~ ~ ~ oak_stairs[facing=east,half=top,waterlogged=true]
States are properties of the block, not the item — a plain stair item's rotation is decided on placement. The exception is an item carrying a block_state component, whose properties are applied after placing. Unspecified properties take their defaults.
waterlogged catches people: it exists on stairs, slabs, fences and dozens more, and setting a block without it removes the water that was there.
Renames that break old commands
A handful of ids changed and the old ones are simply unknown now:
| Old | Current |
|---|---|
grass | short_grass |
grass_path | dirt_path |
scute | turtle_scute |
sign | oak_sign and friends |
grass is the painful one, because grass_block still exists and is a different thing. Old commands using grass for the plant now fail as an unknown block.
Entity ids
Mostly predictable, with exceptions: minecraft:snow_golem not snowman, minecraft:mooshroom not mushroom_cow, and every projectile is its own entity — minecraft:arrow, minecraft:spectral_arrow, minecraft:trident.
Entities that are technically block entities — chests, hoppers, signs — do not appear in the entity list and cannot be /summoned. They are placed as blocks and edited with /data.
Tags beat lists
#minecraft:planks #minecraft:logs #minecraft:wool
#minecraft:doors #minecraft:beds #minecraft:swords
Wherever a command or JSON accepts a tag, using it survives Mojang adding new wood types. Hardcoding all thirteen plank ids does not.
Search every block, item and entity id, with block states and the tags each belongs to, in the Block, Item & Entity ID Browser.