Advancement



Advancements are an upcoming feature set to replace achievements.

Obtaining
Advancements are completed much in the same fashion that achievements are. They can be completed in any game mode, and are obtained and saved per world. Advancements can also be granted (and revoked) using the command.

Although advancements guide players logically through the game, they are independent of each other; an advancement can be completed without having completed the advancements "before" it.

When an advancement is obtained, a sliding toast notification displays in the top right corner. The color of the header text in the notification depends on the advancement; normal advancements have yellow header text, while special "challenge" advancements have pink header text. When a final "goal" advancement is completed, the header text will display Goal Reached! instead of the typical Advancement Made! text.

Interface


The button to access the Advancements screen is found on the pause menu screen.

The advancement system involves several trees composed of advancements, each tree beginning with a root advancement and ending with goal or challenge advancements. By clicking and dragging, you can view different branches of an advancement tree. Each tree is categorized into different tabs (which are, themselves, advancements). There are currently five tabs in vanilla Minecraft (although more may possibly be added ):


 * Minecraft: The heart and story of the game.
 * Adventure: Adventure, exploration, and combat.
 * Nether: Bring summer clothes.
 * The End: Or the beginning?
 * Husbandry: The world is full of friends and food.

Each tab has a different background with a repeating texture.

Advancement icons display a header name and description when hovered over. They only appear in a tree when the advancement before it is completed, although, as stated before, advancements can be completed in any order.

The icon frames of advancements can vary in appearance based on difficulty, and whether or not it was completed. A legend is provided below:

Extra advancements and tabs can be added and customized with the use of JSON files, as detailed below.

JSON Format
The advancements in the 'data/advancements' folder of a Minecraft world store the advancement data for that world as separate JSON files:

These JSON files are structured according to the following format:


 * The root tag.
 * : The optional display data.
 * : The data for the icon.
 * : The item id.
 * : The damage value for the item.
 * : The title for this advancement.
 * : A JSON text component (containing text and formatting like used in /tellraw and various other commands. Also translate tag can be used here).
 * : The optional type of frame for the icon.  for a tile with a more fancy spiked border as it is used for the kill all mobs advancement,   for a tile with a rounded border as it is used for the full beacon advancement,   for a normal tile (default.)
 * : The optional directory for the background to use in this advancement tab (only for the root advancement).
 * : The description of the advancement.
 * : A JSON text component (containing text and formatting like used in /tellraw and various other commands. Also translate tag can be used here).
 * : Can be  or  . Whether or not to show the toast pop up after completing this advancement. Defaults to true.
 * : Can be  or  . Whether or not to announce in the chat when this advancement has been completed. Defaults to true.
 * : Can be  or  . Whether or not to hide this advancement and all its children from the advancement screen until they have been completed. Has no effect on root advancements them self but will still effect all their children. Once inherited from a parent advancement, it can't be overwritten. Defaults to false.
 * : The optional parent advancement directory of this advancement (does not apply for the root advancement).
 * : The required criteria that have to be met.
 * : A name given to the criteria (can be any string, must be unique).
 * : The trigger for this advancement; specifies what the game should check for the advancement.
 * : All the conditions that need to be met when the trigger gets activated.
 * : An optional list of requirements (all the  ). If all criteria are required, this may be omitted. With multiple criteria: requirements contains a list of lists with criteria (all criteria need to be mentioned). If all the criteria within any of the lists is met, it will complete the advancement. (basically AND grouping and OR grouping the criteria.)
 * : An optional collection of the rewards provided when this advancement is obtained.
 * : A list of crafting recipes (strings).
 * : A list of loot tables (strings).
 * : An amount of experience.
 * : A function to run. Functions are plain text files in .minecraft\saves\XXXX\data\functions\ and can contain a list of commands to run in order.

Conditions

 * : The durability of the item.
 * : The minimum value.
 * : The maximum value.
 * : The difference in value.
 * : The minimum value.
 * : The maximum value.
 * : The amount of slots occupied in the inventory.
 * : The minimum value.
 * : The maximum value.
 * : The amount of slots completely filled (stacksize) in the inventory.
 * : The minimum value.
 * : The maximum value.
 * : The amount of slots empty in the inventory.
 * : The minimum value.
 * : The maximum value.
 * : A list of items.
 * : An item ID.
 * : Amount of the item.
 * : The minimum value.
 * : The maximum value.
 * : Data of the item.
 * : The minimum value.
 * : The maximum value.
 * : The durability of the item.
 * : The minimum value.
 * : The maximum value.
 * : A brewed potion ID.
 * : An NBT string.
 * : List of enchantments.
 * : An enchantment ID.
 * : The level of the enchantment.
 * : The minimum value.
 * : The maximum value.
 * : An item.
 * : An item ID.
 * : Amount of the item.
 * : The minimum value.
 * : The maximum value.
 * : Data of the item.
 * : The minimum value.
 * : The maximum value.
 * : The durability of the item.
 * : The minimum value.
 * : The maximum value.
 * : A brewed potion ID.
 * : An NBT string.
 * : List of enchantments.
 * : An enchantment ID.
 * : The level of the enchantment.
 * : The minimum value.
 * : The maximum value.
 * : The levels spent on an enchantment.
 * : The minimum value.
 * : The maximum value.
 * : A recipe.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command).
 * : The dimension the entity is currently in.
 * : The dimension the entity traveled from.
 * : The dimension the entity traveled to.
 * : A block ID.
 * : The blockstates of a block.
 * : A single blockstate, with the key name being the state name and the value being the required value of that state.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command).
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : The type of damage that killed an entity.
 * : Checks if the damage bypasses the armor of a entity.
 * : Checks if the damage bypasses the invulnerability status of a entity.
 * : Checks if the damage is caused by starvation.
 * : Checks if the damage originates from an explosion.
 * : Checks if the damage originates from fire.
 * : Checks if the damage originates from magic.
 * : Checks if the damage originates from a projectile.
 * : The entity that was the direct cause of the damage.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : Checks the entity that was the source of the damage.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A parent.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : A partner (the entity the parent was bred with, useful for checking horses + donkey = mule breeding)
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : The tier of beacon.
 * : The minimum value.
 * : The maximum value.
 * : Checks the amount of incoming damage against the entity before damage reduction.
 * : A minimum value.
 * : A maximum value.
 * : Checks the amount of incoming damage against the entity after damage reduction.
 * : A minimum value.
 * : A maximum value.
 * : Checks if the damage was successfully blocked.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : Information stored about the villager upon conversion from a zombie.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : Information stored about the zombie upon conversion to a villager.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : An entity ID.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : Information stored about the villager upon conversion from a zombie.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : Information stored about the zombie upon conversion to a villager.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : Information stored about the zombie upon conversion to a villager.
 * : An NBT string.
 * : The x position.
 * : A minimum value.
 * : A maximum value.
 * : The y position.
 * : A minimum value.
 * : A maximum value.
 * : The z position.
 * : A minimum value.
 * : A maximum value.
 * : The biome the entity is currently in.
 * : Name of a structure (see /locate command)
 * : The dimension the entity is currently in.
 * : The distance to an origin.
 * : The minimum value.
 * : The maximum value.
 * : the horizontal distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The x distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The y distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : The maximum value.
 * : The z distance to the origin.
 * : The minimum value.
 * : The maximum value.
 * : A list of status effects.
 * : A status effect with the key name being the status effect name.
 * : The effect amplifier.
 * : The minimum value.
 * : The maximum value.
 * : The effect duration in ticks.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The maximum value.