Wiki 9Minecraft Wiki 9Minecraft

Blocks as Items: Inventory Behaviour and Block Placers

How custom blocks exist in the inventory, creative menu, and when to use a separate placer item.

5Sections
3Code examples
3Known errors

Every custom block you define in a behaviour pack automatically generates a matching block item so players can hold it, store it in chests, and place it in the world. While this automatic item handles standard building blocks well, you will often need to customize its creative menu placement, alter its display name, or replace the held block with a flat 2D sprite using a separate item definition.

Automatic Block Items

When Minecraft loads a block definition from your behaviour pack, it registers both the placed block and an item sharing the exact same identifier. You do not need to create a file in your `BP/items/` folder just to make a custom block holdable or placeable. If your block is named `wiki:cobbled_shale`, running `/give @s wiki:cobbled_shale` gives you the automatically generated block item.

By default, this automatic item renders in the player's hand and inventory slot as a miniature 3D version of the block itself. It pulls its textures and model directly from whatever you configured in the block definition (`minecraft:material_instances` and `minecraft:geometry`) or `RP/blocks.json`. Its maximum stack size is locked to 64, and it cannot be given item-only components like food values or durability bars directly inside the block file.

Creative Menu Placement

In modern Bedrock format versions, a custom block will not appear in the Creative inventory Tabs unless you explicitly assign it a `menu_category` inside the `description` object of your block JSON. You can assign it to one of the main tabs, and optionally nest it inside an expandable item group alongside similar vanilla blocks.

If you want a utility or technical block (like a custom structure void or a multi-block helper part) to be obtainable only via commands, set `is_hidden_in_commands` to true or set the `category` to `none`.

FieldWhat it doesNotes
categoryDetermines which tab of the Creative inventory holds the block.Valid strings are 'construction', 'nature', 'equipment', 'items', or 'none'.
groupPlaces the block inside a collapsible folder within the tab.Uses vanilla localization keys like 'itemGroup.name.planks' or 'itemGroup.name.crop'.
is_hidden_in_commandsHides the block identifier from command auto-complete lists.Boolean (`true` or `false`). Defaults to `false`.
BP/blocks/cobbled_shale.json
{
  "format_version": "1.20.80",
  "minecraft:block": {
    "description": {
      "identifier": "wiki:cobbled_shale",
      "menu_category": {
        "category": "construction",
        "group": "itemGroup.name.stone",
        "is_hidden_in_commands": false
      }
    },
    "components": {
      "minecraft:destructible_by_mining": {
        "seconds_to_destroy": 2.0
      },
      "minecraft:geometry": "minecraft:geometry.full_block",
      "minecraft:material_instances": {
        "*": {
          "texture": "cobbled_shale",
          "render_method": "opaque"
        }
      }
    }
  }
}

Naming and Loot Drops

Even when held as an item in your hotbar, a block uses the `tile.` prefix for its localization key rather than the `item.` prefix. To give `wiki:cobbled_shale` a proper display name, you must add `tile.wiki:cobbled_shale.name=Cobbled Shale` to your resource pack's `RP/texts/en_US.lang` file.

When broken in Survival mode, a custom block drops its own automatic block item by default unless you override this behaviour with the `minecraft:loot` component. If your block represents an ore that should drop a raw mineral item, or a crop that drops seeds, point `minecraft:loot` to a loot table path relative to the behaviour pack root.

RP/texts/en_US.lang
tile.wiki:cobbled_shale.name=Cobbled Shale
tile.wiki:tomato_crop.name=Tomato Plant
item.wiki:tomato_seeds=Tomato Seeds

Using a Separate Placer Item

Sometimes a miniature 3D model looks wrong in the inventory. Vanilla Minecraft does not show a 3D wheat model or a 3D cake mesh in your hotbar; instead, it uses a separate 2D item (wheat seeds, or the flat cake icon) that places the block when used on a surface. You should take this approach for crops, doors, campfires, or any block that needs custom item components like `minecraft:max_stack_size` or `minecraft:glint`.

To build this setup, hide the actual block from the creative menu by setting its `category` to `none`. Then, create a separate item in `BP/items/` with its own unique identifier and attach the `minecraft:block_placer` component. This component links the 2D item to your custom block and optionally restricts which blocks it can be placed against.

BP/items/tomato_seeds.json
{
  "format_version": "1.20.80",
  "minecraft:item": {
    "description": {
      "identifier": "wiki:tomato_seeds",
      "menu_category": {
        "category": "nature",
        "group": "itemGroup.name.seed"
      }
    },
    "components": {
      "minecraft:icon": "tomato_seeds",
      "minecraft:block_placer": {
        "block": "wiki:tomato_crop",
        "use_on": [
          "minecraft:farmland"
        ]
      }
    }
  }
}

Replacing the Block Item Directly

Inside `minecraft:block_placer`, there is an optional boolean field available in newer format versions called `replace_block_item`. If you give your custom item the exact same identifier as your custom block (for example, both the block file and the item file use `wiki:silver_door`) and set `replace_block_item` to `true`, your item definition completely overwrites the block's automatic item.

This is useful because you only have to manage a single identifier across your loot tables, recipes, and commands. However, both the block and the item must share identical namespaces and names, and you must define the `minecraft:icon` component on the item so the game knows what 2D texture to draw in the UI instead of the 3D block mesh.

Which versions this applies to

Applies to Bedrock Edition 1.20.80 and newer. No experimental toggles are required for `menu_category`, `minecraft:block_placer`, or standard block items.

When it does not work

What you seeWhyThe fix
The block displays as 'tile.wiki:block_name.name' when held in the hand or hovered over in the inventory.You either forgot to add the translation key to `RP/texts/en_US.lang`, or you used the `item.` prefix instead of `tile.` for an automatic block item.Open `RP/texts/en_US.lang` and ensure the line reads `tile.wiki:block_name.name=Your Display Name`.
Content Log Error: [Item][error] wiki:my_block | minecraft:block_placer - 'replace_block_item' is true, but item identifier does not match block identifier.You enabled `replace_block_item` on a placer item whose identifier is different from the block it places (such as `wiki:tomato_seeds` placing `wiki:tomato_crop`).Either remove `replace_block_item` so they remain two separate entries, or rename the item identifier to match the block identifier.
The custom block works with `/setblock` and `/give`, but cannot be found anywhere in the Creative inventory.The `menu_category` object is missing from the block's `description`, or `group` is set to a misspelled item group string.Add a valid `menu_category` with `category` set to `construction`, `nature`, `equipment`, or `items`, and test without the `group` field first.

Reference, straight from the game files

Read out of the game itself, so the ids match the version you are building for.