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 is required on every advancement file. A file without it fails validation and is skipped at load time.
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"conditions"— an optional object whose shape depends on the chosen trigger
requirements field and have no effect 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.
Common Triggers
Custom Advancements does not add any trigger types of its own. It loads advancements that use any trigger Minecraft 1.18.2 natively supports.The full list of vanilla triggers and their condition schemas is documented on the Minecraft Wiki. Make sure you are reading the schema for Java Edition 1.18.2 — the item predicate format in particular changed in later 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 be granted 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 matches by "item" (an exact item ID), "tag" (an item tag), count, durability, NBT, and more.
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.
Complete Example: A Multi-Field Advancement
The following child advancement is granted when the player obtains a Nether Star, and awards 100 experience points on completion.get_star.json
customadvancements/customadvancements/story/get_star.json and run /ca reload. It is registered under the resource location customadvancements:story/get_star.
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.
integer
The number of experience points awarded to the player.
array of strings
A list of loot table resource locations. Each table is rolled and the resulting items are placed directly in the player’s inventory.
array of strings
A list of recipe resource locations to unlock in the player’s recipe book.
string
A single function resource location, run as the player when the advancement is granted.
rewards sub-fields are optional; include only those you need.
In Minecraft 1.18.2 the loot table field is called
loot, not loot_tables. Using the wrong key causes the rewards block to fail parsing.