-
Notifications
You must be signed in to change notification settings - Fork 2
Config Reference
Home › Config File Reference
Groups are stored as one JSON file per group in config/collapsiblegroups/groups/<groupId>.json. You normally don't write these by hand — the in-game editor creates and edits them for you, and the files it saves are exactly this format. This page exists for pack authors who version-control or hand-tune the files.
Everything here is a stable, supported format: files written for older versions keep loading.
| Field | Required | Notes |
|---|---|---|
id |
yes | Stable group ID. The loader accepts any *.json filename, but the game saves as <id>.json — so on Windows, prefer filename-safe IDs (avoid :; use mypack_wood-style IDs, or accept that the file is hand-managed). |
name |
no | Best form: { "translate": "key", "fallback": "Display Name" }. A plain string, { "text": "..." }, or omitting it entirely also work; the game normalizes to the translate/fallback form on save. |
filter |
yes | The matching rule — see below. |
enabled |
no | Defaults to true. |
priority |
no | Defaults to 0 (and 0 is omitted on save). Higher priority wins when two groups match the same entry. |
icon |
no | Collapsed-group icon(s) — see below. Omit to use the first two members. |
theme |
no | Optional color strings: name_color, collapsed_header_background, expanded_header_background, expanded_group_background, expanded_group_border. Six-digit RGB or eight-digit ARGB, with #, 0x, or no prefix. |
extra |
no | Your own metadata. Must be a JSON object (anything else is warned about and dropped); its contents are preserved across load/save. |
Five equivalent forms, mix as you like:
"icon": "minecraft:diamond"
"icon": { "type": "fluid", "id": "minecraft:water" }
"icon": ["minecraft:diamond", "minecraft:emerald"]
"icon": [{ "type": "fluid", "id": "minecraft:water" }, { "type": "mekanism:chemical", "id": "mekanism:hydrogen" }]
"icon": ["minecraft:bucket", { "type": "fluid", "id": "minecraft:lava" }]A plain string always means an item. type accepts fluid or any custom ingredient type ID/alias. For custom types the id is the ingredient's JEI UID (not necessarily namespace:path).
Structural nodes — nest them freely:
-
{ "any": [ ... ] }— OR -
{ "all": [ ... ] }— AND -
{ "not": { ... } }— exclusion
Matching nodes:
-
{ "type": "item", "id": "minecraft:stone" }— exact ID (typemay beitem,fluid, or a custom type) -
{ "type": "item", "tag": "minecraft:logs" }— tag -
{ "type": "item", "namespace": "create" }— whole mod -
{ "block_tag": "minecraft:logs" }— block tag (items only) -
{ "item_path_starts_with": "gutter_" }/{ "item_path_contains": "planks" }/{ "item_path_ends_with": "_chair" }— name patterns (items only) -
{ "type": "item", "stack": "{\"id\":\"minecraft:stone\",\"count\":1}" }— one exact variant (thestackvalue is an encoded item-stack JSON string; the easiest way to get one is to add the exact variant in the editor and copy what it saves) -
{ "type": "item", "component": "apotheosis:gem", "value": "..." }— data component equals value -
{ "type": "item", "component": "minecraft:container", "path": "items[0].id", "value": "minecraft:stone" }— a field inside a component (thevalueis compared against the encoded component JSON; likestack, the editor's saved output is the reliable way to learn the encoding for a given component)
Vanilla logs and Macaw's gutters, minus oak, with a lava-bucket-and-fluid icon pair. (The filename doesn't have to match the id — save this as wood_but_fancy.json and the namespaced id inside still works.)
{
"id": "mypack:wood_but_fancy",
"name": { "translate": "group.mypack.wood_but_fancy", "fallback": "Wood, But Fancy" },
"priority": 10,
"icon": ["minecraft:bucket", { "type": "fluid", "id": "minecraft:lava" }],
"filter": {
"all": [
{
"any": [
{ "all": [ { "block_tag": "minecraft:logs" }, { "type": "item", "namespace": "minecraft" } ] },
{ "all": [ { "type": "item", "namespace": "mcwroofs" }, { "item_path_starts_with": "gutter_" } ] }
]
},
{ "not": { "type": "item", "id": "minecraft:oak_log" } }
]
}
}- A user file whose
idmatches a built-in (mod-provided) group overrides it — except IDs starting with__default_(the mod's bundled defaults), which are reserved and skipped. For those, disable the group and use Copy as Custom in-game instead. - Up one level, in
config/collapsiblegroups/:expand_state.json,ui_state.json,enabled_overrides.json— all managed by the game; leave them alone. - If a filter references a custom type that isn't present (mod removed, UID changed), the group simply matches nothing for that type and a warning is logged once — nothing crashes, and your file is not modified.
Players
Modpack Developers
Mod Developers
Localization