Skip to content

Config Reference

StarskyXIII edited this page Jul 17, 2026 · 1 revision

Config File 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.

Fields

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.

Icons

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).

Filters

Structural nodes — nest them freely:

  • { "any": [ ... ] } — OR
  • { "all": [ ... ] } — AND
  • { "not": { ... } } — exclusion

Matching nodes:

  • { "type": "item", "id": "minecraft:stone" } — exact ID (type may be item, 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 (the stack value 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 (the value is compared against the encoded component JSON; like stack, the editor's saved output is the reliable way to learn the encoding for a given component)

A Full Mixed Example

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" } }
    ]
  }
}

Behavior Notes

  • A user file whose id matches 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.

Home


Players


Modpack Developers


Mod Developers


Localization

Clone this wiki locally