Enabling Progression
SetadvancementProgression = true in config/customadvancements-common.toml to switch the system on. Nothing else on this page has any effect while it is false.
config/customadvancements-common.toml
parent field or through connectedAdvancementsList — is locked until that parent is completed. Attempting to earn a gated advancement whose parent is incomplete silently fails: the criteria are simply not awarded, with no error message shown to the player.
Root advancements have no parent to gate them, so they remain immediately achievable. Use
connectedAdvancementsList to give a root a virtual prerequisite in another tree.Recipe advancements — any advancement whose path contains
recipes/ — are never subject to progression gating, regardless of mode. Crafting discovery notifications are unaffected.advancementProgressionMode
This enum controls the scope of the progression system: which namespaces are gated behind their parents.
enum
default:"ALL"
Accepted values:
ALL— Every advancement from every namespace is gated. The most restrictive mode.MODS— Every namespace is gated, includingminecraft:, withmodBlacklistused to carve out exceptions. Despite the name, this mode is not limited to mod-added advancements.MINECRAFT— Only advancements in theminecraft:namespace are gated. All mod-added and custom advancements are unaffected.CUSTOM_ADVANCEMENTS— Only advancements in thecustomadvancements:namespace — the ones you added yourself — are gated.
- ALL
- MODS
- MINECRAFT
- CUSTOM_ADVANCEMENTS
modBlacklist and modBlacklistIsWhitelist
These two options are only consulted when advancementProgressionMode = MODS. They let you name namespaces that should be excluded from — or exclusively included in — progression gating.
list of strings
default:"[]"
A list of namespaces (e.g.
"create", "journeymap", or "minecraft") 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 stays gated. When true, the list becomes a whitelist: only advancements from the listed namespaces are gated, and everything else is free.config/customadvancements-common.toml
config/customadvancements-common.toml
config/customadvancements-common.toml
Entries are namespaces as they appear in advancement IDs, which for most mods is the same string as the mod ID in lowercase. If you are unsure, run
/ca generate resource_locations and read the part of an ID before the colon.connectedAdvancementsList
Advancement trees in different tabs have no built-in parent-child relationship, and a root advancement has no parent at all — so under a plain progression setup, every tree is immediately open. connectedAdvancementsList solves this by adding virtual parent links between advancements that are not related in any JSON file.
Each entry uses the format "parent_id -> child_id". The mod treats the left-hand advancement as a required prerequisite for the right-hand advancement: when a player tries to complete the child, the system first checks whether the parent is complete, and blocks the child if it is not.
Default connections:
These defaults model the natural game progression: players must reach the relevant story milestone before the corresponding dimension’s advancement tab opens up.
Custom connections example:
config/customadvancements-common.toml
Direction matters. The advancement on the left of the arrow must be completed before the advancement on the right becomes achievable. Swapping the two sides reverses the gate.
resetAdvancementProgressOnDeath
boolean
default:"false"
When
true, every criterion of every advancement is revoked for a player the moment they die, and the player is notified in chat. 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, and wipes all progress on death.config/customadvancements-common.toml
Complete Example — Custom Tree Alongside an Untouched Game
This configuration is the gentler option for a modpack: only the pack’s own advancement tree is gated, everything else stays free, and the pack’s root is linked to the vanilla starting point so players reach it naturally.config/customadvancements-common.toml