conditions block. An advancement can require one criterion or many, and the requirements field gives you precise control over which combination must be satisfied.
Criteria Object Structure
Thecriteria field is a JSON object where each key is an arbitrary name you give to a criterion, and the value is an object with:
"trigger"— the namespaced ID of the Minecraft advancement trigger to listen for (required)"conditions"— an optional object whose shape depends on the chosen trigger
requirements field and in log output; they have no meaning outside the file.
Requirements Logic
The optionalrequirements field is a two-dimensional array that expresses a logical combination of criteria using AND and OR.
- The outer array is AND — every inner array must be satisfied.
- Each inner array is OR — at least one criterion in the group must be satisfied.
(criterion_a OR criterion_b) AND criterion_c.
If requirements is omitted, every criterion defined in the criteria object must be satisfied, which is equivalent to putting each criterion in its own group.
Combined AND/OR Example
Common Triggers
Custom Advancements does not add any trigger types of its own. It loads advancements that use any trigger Minecraft 1.16.5 natively supports. The table below covers the triggers most useful for custom advancements; the complete list is documented on the Minecraft Wiki — Advancement triggers.Trigger names and condition formats are version-specific. The examples on this page use the Minecraft 1.16.5 format — most notably, item predicates use
"item" rather than "id", which differs from later Minecraft versions.Trigger Examples
minecraft:tick
The simplest possible criterion. Theminecraft:tick trigger fires on every game tick, so the advancement completes the instant the player loads in. This is the standard pattern for root advancements, which need to complete immediately so their tab is always visible.
minecraft:inventory_changed
Fires whenever the player’s inventory is modified. Theitems array lists item predicates — each object can match by "item" (exact item), "tag" (item tag), count, durability, enchantments, and NBT.
minecraft:player_killed_entity
Fires when the player is the direct cause of an entity’s death. Theentity field is an array of condition objects, each with a "condition" type key. The killing_blow field inspects the damage source, including the item held when the kill was made.
minecraft:location
Fires periodically based on where the player is standing. Useful for “reach this dimension/biome” objectives.Complete Example: back_to_the_roots.json
The following is the fullback_to_the_roots.json example file shipped with the mod. It demonstrates a single-criterion advancement with an explicit requirements array and an experience reward.
back_to_the_roots.json
Rewards
The optionalrewards object grants the player something when the advancement is completed. It sits at the top level of the advancement JSON, alongside criteria and display. Every sub-field is optional — include only the ones you need, and combine as many as you like.
The loot table field is named
loot in Minecraft 1.16.5 — not loot_tables. Referenced loot tables, recipes, and functions must exist on the server when the advancement is completed, otherwise the game logs an error and skips that reward.