What the Item Catalog Does
In older Bedrock versions, an item's placement in the Creative inventory was strictly handled inside its own item or block JSON file. If you wanted ten custom swords to sit together inside a collapsible folder, you could only put them into one of the hardcoded vanilla groups, such as the standard swords group. You could not create a new collapsible group of your own.
Introduced alongside the 1.21.60 format updates, `BP/item_catalog/crafting_item_catalog.json` decouples inventory organization from individual item definitions. It lets you declare which category tab you are modifying, create brand new expandable groups with a designated icon and display name, or list loose items so they appear in a specific sequence in the menu.
Using the Item Catalog does not replace the `description` block inside your item files, nor does it generate the items themselves. Instead, it acts as a layout manifest that overrides or supplements the `menu_category` rules defined on the individual items and blocks.
File Location and Basic Structure
The catalog file must be placed in your behavior pack at `BP/item_catalog/crafting_item_catalog.json`. Unlike entities or items where you can have hundreds of separate files in subfolders, the game looks for this specific filename inside the `item_catalog` directory.
At the root of the JSON, you provide a `format_version` (at least `1.21.60`) and the `minecraft:crafting_items_catalog` object. Inside that object sits a `categories` array. Each entry in `categories` targets one of the four main Creative inventory tabs (`construction`, `nature`, `equipment`, or `items`) and defines an array of `groups` to inject into that tab.
{
"format_version": "1.21.60",
"minecraft:crafting_items_catalog": {
"categories": [
{
"category_name": "equipment",
"groups": [
{
"group_identifier": {
"icon": "my_pack:ruby_sword",
"name": "my_pack:itemGroup.name.ruby_gear"
},
"items": [
"my_pack:ruby_sword",
"my_pack:ruby_pickaxe",
"my_pack:ruby_helmet"
]
}
]
},
{
"category_name": "items",
"groups": [
{
"items": [
"my_pack:raw_ruby",
"my_pack:ruby_ingot"
]
}
]
}
]
}
}Schema Reference
The schema for `crafting_item_catalog.json` is compact, relying on nested arrays to sort categories, groups, and individual item identifiers. Every identifier you reference in the catalog must correspond to a valid custom item, custom block, or vanilla identifier that exists in the world.
Notice in the example above that the second group under the `items` category omits the `group_identifier` object entirely. When you omit `group_identifier`, the items listed in the `items` array are not placed inside a collapsible folder. Instead, they are appended directly to the tab as loose, standalone entries in the exact order you list them.
| Field | What it does | Notes |
|---|---|---|
| categories | Array of category objects that modify the main Creative tabs. | Required inside `minecraft:crafting_items_catalog`. |
| category_name | Selects which tab to place the groups into. | Accepts `construction`, `nature`, `equipment`, or `items`. |
| groups | Array of group definitions for the chosen category. | Processed in the order they are written. |
| group_identifier | Defines the collapsible folder's name and cover icon. | Optional. If omitted, the items in this block are placed directly into the category tab without a folder. |
| icon | The item or block identifier rendered on the closed group button. | Used inside `group_identifier`. Must be a valid item or block ID. |
| name | The localization key for the group's tooltip title. | Used inside `group_identifier`. Must include a namespace (e.g., `my_pack:itemGroup.name.gems`). |
| items | Array of item or block identifiers belonging to this group. | Accepts strings (e.g., `"my_pack:ruby_ingot"`). |
Preparing the Item Definition
For an item to behave properly in the catalog, its own definition file in `BP/items/` still requires a valid `description`. While the catalog takes over the grouping, you should still set a base `category` inside the item's `menu_category` block so the game knows the item is allowed to be visible in menus.
If an item has `"category": "none"` or `"is_hidden_in_commands": true` in its own JSON file, the catalog may refuse to display it or throw a content log error because the item was explicitly marked as hidden from the menu interface.
{
"format_version": "1.21.60",
"minecraft:item": {
"description": {
"identifier": "my_pack:ruby_sword",
"menu_category": {
"category": "equipment"
}
},
"components": {
"minecraft:icon": "ruby_sword",
"minecraft:max_stack_size": 1,
"minecraft:damage": 7
}
}
}Localizing Custom Group Names
Unlike item display names, which require a namespaces-Required `name` value in `group_identifier` (meaning it must contain a colon, like `my_pack:my_group`), the actual text shown when a player hovers over the plus-sign icon in the Creative inventory comes from your resource pack's `.lang` files.
Open `RP/texts/en_US.lang` and add an entry matching the exact string you put in the catalog's `name` field. Even though the key contains a colon, the localization parser treats the entire string before the `=` sign as a standard translation key.
my_pack:itemGroup.name.ruby_gear=Ruby Equipment
item.my_pack:ruby_sword=Ruby SwordWhich versions this applies to
Requires format_version 1.21.60 or higher (introduced in Minecraft Bedrock 1.21.60). Stable; no experimental toggles are required.
When it does not work
| What you see | Why | The fix |
|---|---|---|
| Content Log Error: "Group name '...' must have a namespace" and the custom group fails to appear in the Creative menu. | The `name` field inside `group_identifier` was written as a plain translation key (like `itemGroup.name.ruby_gear`) without a namespace prefix and colon. | Prepend your pack's namespace and a colon to the group name string (for example, `"my_pack:itemGroup.name.ruby_gear"`) in both `crafting_item_catalog.json` and your `.lang` file. |
| Custom group is missing or partially empty, accompanied by a Content Log warning referencing an unrecognized item identifier. | One of the strings in the `items` array or the `icon` field has a typo, or refers to an item whose JSON file failed to parse. | Verify that every identifier in `items` and `icon` exactly matches the `identifier` in the corresponding `BP/items/` or `BP/blocks/` file. |
| An item appears twice in the Creative inventory or stays stuck in a vanilla group instead of moving to the custom group. | The item's own file in `BP/items/` still has a `group` property defined inside its `menu_category` block, which conflicts with the catalog assignment. | Remove the `group` field from `menu_category` in the item's JSON file, leaving only the `category` property, and let `crafting_item_catalog.json` handle the group placement. |
Reference, straight from the game files
Read out of the game itself, so the ids match the version you are building for.
