Skip to main content
Criteria define the conditions a player must meet to earn an advancement. Each criterion listens for a specific game event — called a trigger — and optionally narrows it down with a 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

The criteria 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
Criterion names are arbitrary strings. They are referenced only within the same advancement’s requirements field; they have no effect outside the file.

Requirements Logic

The optional requirements 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.
This reads as: (criterion_a OR criterion_b) AND criterion_c. If requirements is omitted, every criterion defined in the criteria object must be satisfied (equivalent to a single-element AND of all criteria individually).

Common Triggers

Custom Advancements does not add any new trigger types. It loads advancements that use any trigger Minecraft natively supports. The table below covers the triggers used in the bundled example files; the complete list is documented on the Minecraft Wiki — Advancement triggers.
The full list of vanilla triggers is documented on the Minecraft Wiki. Custom Advancements does not add new trigger types — it loads advancements that use any trigger Minecraft supports.

Trigger Examples

minecraft:tick

The simplest possible criterion. The minecraft: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.

minecraft:inventory_changed

Fires whenever the player’s inventory is modified. The items array lists item predicates — each object can match by "id" (exact item), "tag" (item tag), count, components, and more.
This criterion fires as soon as any dirt appears in the player’s inventory.

minecraft:player_killed_entity

Fires when the player is the direct cause of an entity’s death. The entity 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.
This criterion fires when the player kills an adult zombie while holding rotten flesh in their main hand.

Complete Example: back_to_the_roots.json

The following is the full back_to_the_roots.json example file shipped with the mod. It demonstrates a single-criterion advancement with a requirements array and an experience reward.
back_to_the_roots.json

Rewards

The optional rewards object grants the player something when the advancement is completed. It is placed at the top level of the advancement JSON, alongside criteria and display.
All rewards sub-fields are optional; include only those you need.