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. Not available for  trigger.
 * : Another format for "player". Specifies a list of predicates that must pass in order for the criterion to be granted. Not available for  trigger.
 * : 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 marked with " * ".

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.
 * : Another form for.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.

An example

minecraft:bred_animals
Triggers after the player breeds 2 animals. Available extra conditions:
 * : Checks properties of the child that results from the breeding.
 * : Another format for "child". Specified a list of predicates that must pass in order for the criterion to be granted. The origin of the predicate is the position of the player that would get the advancement.
 * : A single predicate.
 * : The parent.
 * : Another format for "parent". Specified a list of predicates that must pass in order for the criterion to be granted. The origin of the predicate is the position of the player that would get the advancement.
 * : A single predicate.
 * : The partner (The entity the parent was bred with).
 * : Another format for "partner". Specified a list of predicates that must pass in order for the criterion to be granted. The origin of the predicate is the position of the player that would get the advancement.
 * : A single predicate.
 * : The partner (The entity the parent was bred with).
 * : Another format for "partner". Specified a list of predicates that must pass in order for the criterion to be granted. The origin of the predicate is the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

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.
 * : A victim.
 * : Another format for victim. Specified 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 lighting, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for victim. Specified 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 lighting, with the origin being the position of the player that would get the advancement.
 * : A single predicate.

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 level of the updated beacon structure.
 * : Another format.
 * : The maximum value.
 * : The minimum 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".
 * : Another format for villager. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the villager, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : 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".
 * : Another format for zombie villager. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the zombie villager, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for zombie villager. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the zombie villager, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

minecraft:effects_changed
Triggers after the player gets a status effect applied or taken from them. Available extra conditions: An example
 * : A list of active status effects the player currently has.
 * : The key name is a status effect name.
 * : Whether the effect is from a beacon.
 * : The effect amplifier.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The effect duration in ticks.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : Whether the effect has visible particles.
 * : The entity that was the source of the status effect. When there is no entity or when the effect was self-applied or removed, the test passes only if the source is not specified.
 * : Another format for source. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the source, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for source. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the source, with the origin being the position of the player that would get the advancement.
 * : A single predicate.

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.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The maximum 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.
 * : A map of block property names to values. Errors if the block doesn't have these properties.
 * : Block property key and value pair.
 * : Another format.
 * : A maximum value.
 * : A minimum value.
 * : A minimum value.

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.
 * : Checks the damage done to the player.

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).
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity that kills the player, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Checks the type of damage that killed the player.
 * : A single predicate.
 * : 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, or the fisshing bobber if no entity is pulled.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity pulled or the bobber, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : 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. No available condition. 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.
 * : An item stack.
 * : The amount of slots empty in the inventory.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The amount of slots completely filled (stacksize) in the inventory.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The amount of slots occupied in the inventory.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : Another format.
 * : 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).
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The remaining durability of the item.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The item before it was damaged, allows you to check the durability before the item was damaged.
 * : 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.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the mob, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : The type of damage that killed an entity.
 * : A single predicate.
 * : 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.
 * : Another format. The acceptable range of count of types of entities killed.
 * : The maximum value.
 * : The minimum value.
 * : A list of victims. All of the entries must be matched, and one killed entity may match only one entry.
 * : A killed entities.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the victim, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the victim, with the origin being the position of the player that would get the advancement.
 * : A single predicate.

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.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The maximum 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.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the lightning, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : An entity not hurt by the lightning strike but in a certain area around it.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the bystander, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the bystander, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

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.
 * : A map of block property names to values. Errors if the block doesn't have these properties.
 * : Block property key and value pair.
 * : Another format.
 * : A maximum value.
 * : A minimum value.
 * : Another format.
 * : A maximum value.
 * : A minimum value.

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.
 * : The entity that was damaged.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

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.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

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.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : The type of damage that killed an entity.
 * : A single predicate.
 * : 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 crossbow that is using.
 * : The crossbow that is using.

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.
 * : A map of block property names to values. Errors if the block doesn't have these properties.
 * : Block property key and value pair.
 * : Another format.
 * : A maximum value.
 * : A minimum value.
 * : A minimum value.

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, commands, or pistons to place the wither skulls or pumpkins will still activate this trigger. Available extra conditions: An example
 * : The summoned entity.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.

minecraft:tame_animal
Triggers after the player tames an animal. Available extra conditions: An example
 * : Checks the entity that was tamed.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.

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.
 * : Another format.
 * : The maximum value.
 * : The minimum value.
 * : The projectile hit the target block.
 * : Another format for projectile. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the projectile, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for projectile. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the projectile, with the origin being the position of the player that would get the advancement.
 * : A single predicate.

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.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

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 item thrown.
 * : The entity that threw the item.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for entity. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the entity, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

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.
 * : Another format.
 * : A maximum value.
 * : A minimum 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, eyes of ender, etc. 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.
 * : Another format for villager. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the villager, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : Another format for villager. Specified a list of predicates that must pass in order for the criterion to be granted. The checks are applied to the villager, with the origin being the position of the player that would get the advancement.
 * : A single predicate.
 * : A single predicate.

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格式