Advancement/JSON format

Custom advancements in data packs of a Minecraft world store the advancement data for that world as separate JSON files.

File format
All advancement JSON files are structured according to the following format.

Legend

 * * : If parent field is written, this field is required.


 * The root tag.
 * : Data related to the advancement's display.
 * * : Object containing data for the advancement's icon.
 * * : The item's ID.
 * : A string containing SNBT that may modify the item's appearance on the icon.
 * * : A JSON text component for the title of this advancement.
 * : Type of frame for the icon. challenge for Advancement-fancy-raw.png, goal for Advancement-oval-raw.png, task for Advancement-plain-raw.png. Defaults to.
 * : The directory for the background to use in this advancement tab (used only for the root advancement).
 * * : A JSON text component for the description text of this advancement.
 * : Whether to show a toast to the player when this advancement has been completed. Defaults to.
 * : Whether to announce in the chat when this advancement has been completed. Defaults to.
 * : Whether to hide this advancement and all its children from the advancement screen until this advancement have been completed. Has no effect on root advancements themselves, but still affects all their children. Defaults to.
 * : The parent advancement directory of this advancement. If absent, this advancement is a root advancement. Circular references cause a loading failure.
 * * : The criteria to be tracked by this advancement.
 * : The key is a unique name given to the criterion.
 * See below for details.
 * : Defines how these criteria above are completed to grant the advancement. Contains sublists, which in turn contain names of criteria from this advancement (all the s). When a criterion is newly completed or revoked, the advancement is granted if all sublists have at least one criterion within them completed. Optional, defaults to requiring all criteria completed.
 * Sublist within, contains strings of s. If a sublist is empty, the advancement is unachievable without cheats.
 * A criterion name.
 * : An object representing the rewards provided when this advancement is obtained.
 * : To unlock recipes.
 * A namespaced ID for a recipe.
 * : To give items from loot tables to the player.
 * A namespaced ID for a loot table.
 * : To give an amount of experience. Defaults to 0.
 * : To run a function. Function tags are not allowed.

Display
Within the root tag of an advancement JSON object, the object and the  string, both optional, are related to the display of the advancement.

If the tag is present, it must have the,  and  fields present in order to be considered as valid advancement display data.

The field, albeit not directly associated with the display data of an advancement, affects only the display data effectively. When an advancement does not have a display data and none of its children has a display data, the parent of the advancement only affects usage.

Advancement tabs
Creating a root advancement (no ) with valid data automatically creates a tab in the advancement menu. When loaded, the root advancement shows as a tab in the menu when any advancement in its advancement tree is granted to the player viewing the menu.

The missing texture displays on the tab's background if the root advancement does not have a background.

If a root advancement successfully creates a tab, child advancements of the root will show inside of that tab, provided they also have valid data.

Positioning
The game automatically arranges advancements, position them when it loads advancements from data packs, and sends the arrangement to the client. Each advancement has an arrow from its closest visible ancestor (i.e. if its parent does not have a display, it has a link from its grandparent, and so on). The root advancement appears on the leftmost column while each arrow points to an advancement in the next column. The arrangement of advancements within a column is based on file name.

Lack of display
Some advancements, such as the vanilla recipe unlocking advancements, may lack a display so that they can utilize triggers and rewards instead of excessive commands or functions for more functionalities and a more flexible control. These advancements should not have the field defined in order to hide from users and enjoy a better loading performance.

Criteria

 * * : If parent field is written, this field is required.

The format of a criteron:
 * : Root object.
 * * : The trigger for this criterion.
 * : Object containing conditions that need to be met when the trigger gets activated. The criterion is marked completed when the trigger activates and all conditions passed.
 * : Checks properties of the player that would get the advancement.
 * : Another format for "player". Specified a list of predicates that must pass in order for the criterion to be granted.
 * : A single predicate.
 * Extra contents depend on selected ,
 * Extra contents depend on selected ,

List of triggers
All JSON fields in the conditions are optional unless stated as required.

The possible values for and associated extra contens in :

minecraft:allay_drop_item_on_block
Triggers when an allay drops an item on a block. Available extra conditions: An example
 * : The location at the center of the block the item was dropped on.
 * : The item dropped on the block.
 * : The item dropped on the block.
 * : The item dropped on the block.

minecraft:avoid_vibration
Triggers when a vibration event is ignored because the source player is crouching. No extra condition. An example

minecraft:bee_nest_destroyed
Triggers when the player breaks a bee nest or beehive. Available extra conditions:
 * : Checks the block that was destroyed. Accepts block IDs.
 * : The item used to break the block.
 * : The number of bees that were inside the bee nest/beehive before it was broken.
 * : The number of bees that were inside the bee nest/beehive before it was broken.
 * : The number of bees that were inside the bee nest/beehive before it was broken.

An example

minecraft:bred_animals
Triggers after the player breeds 2 animals. Available extra conditions:
 * : The child that results from the breeding. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The parent. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The partner. (The entity the parent was bred with) May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The parent. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The partner. (The entity the parent was bred with) May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The partner. (The entity the parent was bred with) May also be a list of predicates that must pass in order for the criterion to be granted.

An example

minecraft:brewed_potion
Triggers after the player takes any item out of a brewing stand. Available extra conditions: An example
 * : A brewed potion ID.
 * : A brewed potion ID.

minecraft:changed_dimension
Triggers after the player travels between two dimensions. Available extra conditions: An example
 * : The dimension the entity traveled from. This tag is a resource location for a dimension (only these in vanilla; more can be added with data packs).
 * : The dimension the entity traveled to. Same accepted values as above.
 * : The dimension the entity traveled to. Same accepted values as above.

minecraft:channeled_lightning
Triggers after the player successfully uses the Channeling enchantment on an entity or a lightning rod. Available extra conditions:
 * : The victims hit by the lightning summoned by the Channeling enchantment. All entities in this list must be hit. Each entry may also be a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the victim hit by the enchanted trident.
 * : A victim.
 * : A victim.

An example

minecraft:construct_beacon
Triggers after the player changes the structure of a beacon. (When the beacon updates itself). Available extra conditions: An example
 * : The tier of the updated beacon structure.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.

minecraft:consume_item
Triggers when the player consumes an item. Available extra conditions: An example
 * : The item that was consumed
 * : The item that was consumed

minecraft:cured_zombie_villager
Triggers when the player cures a zombie villager. Available extra conditions: An example
 * : The villager that is the result of the conversion. The 'type' tag is redundant since it will always be "villager". May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The zombie villager right before the conversion is complete (not when it is initiated). The 'type' tag is redundant since it will always be "zombie_villager". May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The zombie villager right before the conversion is complete (not when it is initiated). The 'type' tag is redundant since it will always be "zombie_villager". May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The zombie villager right before the conversion is complete (not when it is initiated). The 'type' tag is redundant since it will always be "zombie_villager". May also be a list of predicates that must pass in order for the criterion to be granted.

minecraft:effects_changed
Triggers after the player gets a status effect applied or taken from them. Available extra conditions: An example
 * : A list of status effects the player has.
 * : A status effect with the key name being the status effect name.
 * : Whether the effect is from a beacon.
 * : The effect amplifier.
 * : The maximum value.
 * : The minimum value.
 * : The effect duration in ticks.
 * : The maximum value.
 * : The minimum value.
 * : Whether the effect has visible particles.
 * : The entity that was the source of the status effect. Empty when there is no entity or when the effect was self-applied or removed. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The minimum value.
 * : Whether the effect has visible particles.
 * : The entity that was the source of the status effect. Empty when there is no entity or when the effect was self-applied or removed. May also be a list of predicates that must pass in order for the criterion to be granted.

minecraft:enchanted_item
Triggers after the player enchants an item through an enchanting table (does not get triggered through an anvil, or through commands). Available extra conditions: An example
 * : The item after it has been enchanted.
 * : The levels spent by the player on the enchantment.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.
 * : The minimum value.

minecraft:enter_block
Every tick, triggers once for each block the player's hitbox is inside (up to 12 blocks, the maximum number of blocks the player can stand in). Available extra conditions: An example
 * : The block that the player is standing in. Accepts block IDs.
 * : The block states of the block.
 * : A single block state, with the key name being the state name and the value being the required value of that state.
 * : A single block state, with the key name being the state name and the value being the required value of that state.

minecraft:entity_hurt_player
Triggers after a player gets hurt, even without a source entity. Available extra conditions:
 * : Checks the damage done to the player. Missing corresponding list of predicates.
 * : Checks the damage done to the player. Missing corresponding list of predicates.

An example

minecraft:entity_killed_player
Triggers after a living entity kills a player. Available extra conditions: An example
 * : Checks the entity that was the source of the damage that killed the player (for example: The skeleton that shot the arrow). May also be a list of predicates that must pass in order for the criterion to be granted.
 * : Checks the type of damage that killed the player.
 * : Checks the type of damage that killed the player.
 * : Checks the type of damage that killed the player.

minecraft:fall_from_height
Triggers when a player lands after falling. Available extra conditions: An example
 * : A location predicate for the last position before the falling started.
 * : The distance between the start position and the player's position.
 * : The distance between the start position and the player's position.
 * : The distance between the start position and the player's position.

minecraft:filled_bucket
Triggers after the player fills a bucket. Available extra conditions: An example
 * : The item resulting from filling the bucket.
 * : The item resulting from filling the bucket.

minecraft:fishing_rod_hooked
Triggers after the player successfully catches an item with a fishing rod or pulls an entity with a fishing rod. Available extra conditions: An example
 * : The entity that was pulled. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The item that was caught.
 * : The fishing rod used.
 * : The item that was caught.
 * : The fishing rod used.
 * : The fishing rod used.

minecraft:hero_of_the_village
Triggers when a raid ends in victory and the player has attacked at least one raider from that raid. No extra condition. An example

minecraft:impossible
Never triggers. An example

minecraft:inventory_changed
Triggers after any changes happen to the player's inventory. Available extra conditions: An example
 * : A list of items in the player's inventory. All items in the list must be in the player's inventory, but not all items in the player's inventory have to be in this list.
 * : The amount of slots empty in the inventory.
 * : The maximum value.
 * : The minimum value.
 * : The amount of slots completely filled (stacksize) in the inventory.
 * : The maximum value.
 * : The minimum value.
 * : The amount of slots occupied in the inventory.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.
 * : The amount of slots occupied in the inventory.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.

minecraft:item_durability_changed
Triggers after any item in the inventory has been damaged in any form. Available extra conditions:
 * The change in durability (negative numbers are used to indicate a decrease in durability).
 * : The maximum value.
 * : The minimum value.
 * : The remaining durability of the item.
 * : The maximum value.
 * : The minimum value.
 * : The item before it was damaged, allows you to check the durability before the item was damaged.
 * : The maximum value.
 * : The minimum value.
 * : The item before it was damaged, allows you to check the durability before the item was damaged.

An example

minecraft:item_used_on_block
Triggers when the player their hand or an item on a block. Available extra conditions: An example
 * : The location at the center of the block the item was used on.
 * : The item used on the block.
 * : The item used on the block.
 * : The item used on the block.

minecraft:kill_mob_near_sculk_catalyst
Triggers after a player is the source of a mob or player being killed within the range of a sculk catalyst. Available extra conditions: An example
 * : The entity that was killed. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The type of damage that killed an entity.
 * : The type of damage that killed an entity.
 * : The type of damage that killed an entity.

minecraft:killed_by_crossbow
Triggers after the player kills a mob or player using a crossbow in ranged combat. Available extra conditions: An example
 * : The exact count of types of entities killed.
 * : The acceptable range of count of types of entities killed.
 * : The maximum value.
 * : The minimum value.
 * : A list of predicates for any of the killed entities. All of the predicates must be matched, and one killed entity may match only one predicate.
 * : A predicate for any of the killed entities. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : A predicate for any of the killed entities. May also be a list of predicates that must pass in order for the criterion to be granted.

minecraft:levitation
Triggers when the player has the levitation status effect. Available extra conditions: An example
 * : The distance between the position where the player started levitating and the player's current position.
 * : The duration of the levitation in ticks.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.
 * : The minimum value.

minecraft:lightning_strike
Triggers when a lightning bolt disappears from the world, only for players within a 256 block radius of the lightning bolt. Available extra conditions: An example
 * : The lightning bolt that disappeared. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : An entity not hurt by the lightning strike but in a certain area around it. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : An entity not hurt by the lightning strike but in a certain area around it. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : An entity not hurt by the lightning strike but in a certain area around it. May also be a list of predicates that must pass in order for the criterion to be granted.

minecraft:location
Triggers every 20 ticks (1 second). No extra condition. An example

minecraft:nether_travel
Triggers when the player travels to the Nether and then returns to the Overworld. Available extra conditions: An example
 * : A location predicate for the last position before the player teleported to the Nether.
 * : The distance between the position where the player teleported to the Nether and the player's position when they returned.
 * : The distance between the position where the player teleported to the Nether and the player's position when they returned.
 * : The distance between the position where the player teleported to the Nether and the player's position when they returned.

minecraft:placed_block
Triggers when the player places a block. Available extra conditions: An example
 * : The block that was placed. Accepts block IDs.
 * : The item that was used to place the block before the item was consumed.
 * : The location of the block that was placed.
 * : The block states of the block.
 * : A single block state, with the key name being the state name and the value being the required value of that state.
 * : The block states of the block.
 * : A single block state, with the key name being the state name and the value being the required value of that state.
 * : A single block state, with the key name being the state name and the value being the required value of that state.

minecraft:player_generates_container_loot
Triggers when the player generates the contents of a container with a loot table set. Available extra conditions: An example
 * * : The resource location of the generated loot table.
 * * : The resource location of the generated loot table.

minecraft:player_hurt_entity
Triggers after the player hurts a mob or player. Available extra conditions: An example
 * : The damage that was dealt. Missing corresponding list of predicates for the direct entity.
 * : The entity that was damaged. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The entity that was damaged. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The entity that was damaged. May be a list of predicates that must pass in order for the criterion to be granted.

minecraft:player_interacted_with_entity
Triggers when the player interacts with an entity. Available extra conditions: An example
 * : The item which was in the player's hand during interaction.
 * : The entity which was interacted with. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The entity which was interacted with. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The entity which was interacted with. May be a list of predicates that must pass in order for the criterion to be granted.

minecraft:player_killed_entity
Triggers after a player is the source of a mob or player being killed. Available extra conditions: An example
 * : The entity that was killed. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The type of damage that killed an entity.
 * : The type of damage that killed an entity.
 * : The type of damage that killed an entity.

minecraft:recipe_unlocked
Triggers after the player unlocks a recipe (using a knowledge book for example). Available extra conditions: An example
 * * : The recipe that was unlocked.
 * * : The recipe that was unlocked.

minecraft:ride_entity_in_lava
Triggers when a player mounts an entity walking on lava and while the entity moves with them. Available extra conditions: An example
 * : A location predicate for the last position before the player mounted the entity.
 * : The distance between the start position and the player's position.
 * : The distance between the start position and the player's position.
 * : The distance between the start position and the player's position.

minecraft:shot_crossbow
Triggers when the player shoots a crossbow. Available extra conditions: An example
 * : The item that was used.
 * : The item that was used.

minecraft:slept_in_bed
Triggers when the player enters a bed. No extra condition. An example

minecraft:slide_down_block
Triggers when the player slides down a block. Available extra conditions: An example
 * : The block that the player slid on.
 * : The block that the player slid on.

minecraft:started_riding
Triggers when the player starts riding a vehicle or an entity starts riding a vehicle currently ridden by the player. No extra condition. An example

minecraft:summoned_entity
Triggers after an entity has been summoned. Works with iron golems (pumpkin and iron blocks), snow golems (pumpkin and snow blocks), the ender dragon (end crystals) and the wither (wither skulls and soul sand/soul soil). Using dispensers to place the wither skulls or pumpkins will still activate this trigger. Spawn eggs, commands and mob spawners will not work however. Available extra conditions: An example
 * : The summoned entity. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The summoned entity. May be a list of predicates that must pass in order for the criterion to be granted.

minecraft:tame_animal
Triggers after the player tames an animal. Available extra conditions: An example
 * : Checks the entity that was tamed. May be a list of predicates that must pass in order for the criterion to be granted.
 * : Checks the entity that was tamed. May be a list of predicates that must pass in order for the criterion to be granted.

minecraft:target_hit
Triggers when the player shoots a target block. Available extra conditions:
 * : The redstone signal that will come out of the target block.
 * : The projectile used to hit the target block.
 * : The player who shot or threw the projectile. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The player who shot or threw the projectile. May also be a list of predicates that must pass in order for the criterion to be granted.

An example

minecraft:thrown_item_picked_up_by_entity
Triggers after the player throws an item and another entity picks it up. Available extra conditions: An example
 * : The thrown item which was picked up.
 * : The entity which picked up the item. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The entity which picked up the item. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The entity which picked up the item. May be a list of predicates that must pass in order for the criterion to be granted.

minecraft:thrown_item_picked_up_by_player
Triggers when a player picks up an item thrown by another entity. Available extra conditions: An example
 * : The entity that threw the item. May also be a list of predicates that must pass in order for the criterion to be granted.
 * : The item thrown.
 * : The item thrown.
 * : The item thrown.

minecraft:tick
Triggers every tick (20 times a second). No extra condition. An example

minecraft:used_ender_eye
Triggers when the player uses an eye of ender (in a world where strongholds generate). Available extra conditions: An example
 * : The horizontal distance between the player and the stronghold.
 * : A maximum value.
 * : A minimum value.
 * : A maximum value.
 * : A minimum value.

minecraft:used_totem
Triggers when the player uses a totem. Available extra conditions: An example
 * : The item, only works with totem items.
 * : The item, only works with totem items.

minecraft:using_item
Triggers for every tick that the player uses an item that is used continuously. It is known to trigger for bows, crossbows, honey bottles, milk buckets, potions, shields, spyglasses, tridents, food items and eyes of ender. Most items that activate from a single click, such as fishing rods, do not affect this trigger. Available extra conditions: An example
 * : The item that is used
 * : The item that is used

minecraft:villager_trade
Triggers after the player trades with a villager or a wandering trader. Available extra conditions: An example
 * : The item that was purchased. The "count" tag checks the count from one trade, not multiple.
 * : The villager the item was purchased from. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The villager the item was purchased from. May be a list of predicates that must pass in order for the criterion to be granted.
 * : The villager the item was purchased from. May be a list of predicates that must pass in order for the criterion to be granted.

minecraft:voluntary_exile
Triggers when the player causes a raid. No extra condition. An example

minecraft:arbitrary_player_tick
Triggers every tick for one player only.

Removed in 1.12-pre1.

minecraft:item_delivered_to_player
Triggers when an allay delivers an item to the player. Available extra conditions: An example

Only exists in 22w14a.

minecraft:player_damaged
Triggers when the player receives damage. Available conditions:
 * : Damage source predicate.
 * : Damage source predicate.

Removed in 17w14a.

minecraft:safely_harvest_honey
Triggers when the player harvests honey from a bee nest/beehive with a campfire below it. Available extra conditions: An example
 * : The block that the player harvested the honey from.
 * : A block ID.
 * : A block tag.
 * : The item that the player used to harvest the honey.
 * : The item that the player used to harvest the honey.

This trigger was made redundant by the  trigger. Removed in 20w20a.

Fortschrittsdaten Progrès/Format JSON Progressos/Formato JSON 进度/JSON格式