Enabling Progression
SetadvancementProgression = true in config/customadvancements-common.toml to switch on the system globally. No other option is required; the remaining settings below let you fine-tune scope and behavior.
config/customadvancements-common.toml
- Recipe advancements. Any advancement whose path contains
recipes/is exempt regardless of mode, so crafting discovery keeps working normally. - Root advancements. A root has no parent to gate it, so it is always immediately earnable — unless you give it a virtual parent with
connectedAdvancementsList.
Designing a Gated Tree
Progression only works as well as the tree it enforces. A well-shaped tree follows a simple hierarchy:parent field and a background in its display block. Every other advancement in the tab names the advancement directly above it in its parent field. See Structure for the file layout that produces this.
Two display fields are worth using deliberately in a gated pack:
advancementProgressionMode
This enum controls the scope of the progression system — which namespaces and mods are gated behind their parents.
enum
default:"ALL"
Accepted values:
ALL— Every advancement from every namespace and every mod is subject to progression gating. This is the most restrictive mode and the recommended starting point for a fresh modpack.MODS— Gating is decided per namespace usingmodBlacklistandmodBlacklistIsWhitelist. With the defaults (an empty blacklist), this behaves likeALL.MINECRAFT— Only advancements in theminecraft:namespace are gated. Mod-added and custom advancements are unaffected.CUSTOM_ADVANCEMENTS— Only advancements in thecustomadvancements:namespace — the ones you added yourself — are gated.
config/customadvancements-common.toml
modBlacklist and modBlacklistIsWhitelist
These two options are only meaningful when advancementProgressionMode = "MODS". They let you name specific namespaces that should be included in or excluded from progression gating.
list of strings
default:"[]"
A list of mod IDs (for example
"create", "alexsmobs") that interact with the progression system. Whether they are excluded or exclusively included depends on modBlacklistIsWhitelist.boolean
default:"false"
When
false (default), namespaces in modBlacklist are excluded from gating — their advancements can be earned at any time, and everything else is gated. When true, the list becomes a whitelist: only the listed namespaces are gated and all others are free.config/customadvancements-common.toml
config/customadvancements-common.toml
MODS mode matches on the advancement’s namespace, and minecraft is a namespace like any other. With an empty modBlacklist in blacklist mode, vanilla advancements are gated too. To leave vanilla ungated, add "minecraft" to modBlacklist.connectedAdvancementsList
Every advancement tree has a root — an advancement with no parent. Because roots have no parent to gate them, they would always be immediately earnable even when progression is enabled. connectedAdvancementsList solves this by adding virtual parent links between advancements in different trees.
Each entry uses the format "parent_id -> child_id". The mod reads the -> separator and treats the left-hand advancement as a required prerequisite for the right-hand one, even though no such relationship exists in the JSON files. The child’s entire tree stays locked until the parent is earned.
Default connections:
These defaults model the natural game progression: players must reach the relevant story milestone before the corresponding dimension’s tab opens up.
Custom connections example:
config/customadvancements-common.toml
/ca generate resource_locations to dump every loaded advancement ID to a file so you can copy exact resource locations into this list. See Commands.
resetAdvancementProgressOnDeath
boolean
default:"false"
When
true, every completed criterion of every advancement is revoked for a player when they respawn after dying. The player is told in chat: “<Player>, your advancements have been reset!”. Combined with advancementProgression = true, this forces them to work through the entire progression tree again from the beginning.config/customadvancements-common.toml
Complete Example: Gated Modpack with Death Penalty
This configuration gates every advancement in the game behind its parent, locks the Nether and End tabs behind story milestones, links two custom chapters into the chain, and wipes all progress on death.config/customadvancements-common.toml
customadvancements/ folder together in your modpack’s overrides layer so every player starts with the same gated experience. See Config File for the full option reference, and Common Issues if the gating does not behave the way you expect.