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. You can also open this screen by pressing (this can be changed in the in-game options menu).

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 this advancement have been completed. Has no effect on root advancements them self but will still affect all their children. 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 text files with the file extension   in .minecraft\saves\XXXX\data\functions\ and can contain a list of commands to run in order.

Conditions

 * : The biome the entity is currently in.
 * : A block ID.
 * : An entity ID.
 * : Checks if the damage was successfully blocked.
 * : A maximum value.
 * : A minimum value.
 * : Checks the amount of incoming damage against the entity before damage reduction.
 * : An entity ID.
 * : A maximum value.
 * : A minimum value.
 * : Checks the amount of incoming damage against the entity after damage reduction.
 * : An entity ID.
 * : An entity ID.
 * : The maximum value.
 * : The minimum value.
 * : The difference in value.
 * : The dimension the entity is currently in.
 * : The maximum value.
 * : The minimum value.
 * : The maximum value.
 * : The minimum value.
 * : the horizontal distance to the origin.
 * : The maximum value.
 * : The minimum value.
 * : The x distance to the origin.
 * : The maximum value.
 * : The minimum value.
 * : The y distance to the origin.
 * : The maximum value.
 * : The minimum value.
 * : The z distance to the origin.
 * : The distance to an origin.
 * : The maximum value.
 * : The minimum value.
 * : The durability of the item.
 * : An entity ID.
 * : Name of a structure (see /locate command).
 * : The dimension the entity traveled from.
 * : A list of items.
 * : The maximum value.
 * : The minimum value.
 * : Amount of the item.
 * : The maximum value.
 * : The minimum value.
 * : Data of the item.
 * : The maximum value.
 * : The minimum value.
 * : The durability of the item.
 * : List of enchantments.
 * : An enchantment ID.
 * : The maximum value.
 * : The minimum value.
 * : The level of the enchantment.
 * : An item ID.
 * : An NBT string.
 * : A brewed potion ID.
 * : An item.
 * : The maximum value.
 * : The minimum value.
 * : Amount of the item.
 * : The maximum value.
 * : The minimum value.
 * : Data of the item.
 * : The maximum value.
 * : The minimum value.
 * : The durability of the item.
 * : List of enchantments.
 * : An enchantment ID.
 * : The maximum value.
 * : The minimum value.
 * : The level of the enchantment.
 * : An item ID.
 * : An NBT string.
 * : A brewed potion ID.
 * : 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.
 * : The entity that was the direct cause of the damage.
 * : An entity ID.
 * : 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.
 * : Checks the entity that was the source of the damage.
 * : An entity ID.
 * : The maximum value.
 * : The minimum value.
 * : The levels spent on an enchantment.
 * : The maximum value.
 * : The minimum value.
 * : The tier of beacon.
 * : A parent.
 * : An entity ID.
 * : A partner (the entity the parent was bred with, useful for checking horses + donkey = mule breeding)
 * : An entity ID.
 * : A maximum value.
 * : A minimum value.
 * : The x position.
 * : A maximum value.
 * : A minimum value.
 * : The y position.
 * : A maximum value.
 * : A minimum value.
 * : The z position.
 * : A recipe.
 * : The maximum value.
 * : The minimum value.
 * : 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 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.
 * : The dimension the entity traveled to.
 * : Information stored about the villager upon conversion from a zombie.
 * : Information stored about the zombie upon conversion to a villager.
 * : Checks if the damage is caused by starvation.
 * : The entity that was the direct cause of the damage.
 * : An entity ID.
 * : 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.
 * : Checks the entity that was the source of the damage.
 * : An entity ID.
 * : The maximum value.
 * : The minimum value.
 * : The levels spent on an enchantment.
 * : The maximum value.
 * : The minimum value.
 * : The tier of beacon.
 * : A parent.
 * : An entity ID.
 * : A partner (the entity the parent was bred with, useful for checking horses + donkey = mule breeding)
 * : An entity ID.
 * : A maximum value.
 * : A minimum value.
 * : The x position.
 * : A maximum value.
 * : A minimum value.
 * : The y position.
 * : A maximum value.
 * : A minimum value.
 * : The z position.
 * : A recipe.
 * : The maximum value.
 * : The minimum value.
 * : 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 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.
 * : The dimension the entity traveled to.
 * : Information stored about the villager upon conversion from a zombie.
 * : Information stored about the zombie upon conversion to a villager.
 * : The minimum value.
 * : 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 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.
 * : The dimension the entity traveled to.
 * : Information stored about the villager upon conversion from a zombie.
 * : Information stored about the zombie upon conversion to a villager.
 * : Information stored about the villager upon conversion from a zombie.
 * : Information stored about the zombie upon conversion to a villager.
 * : Information stored about the zombie upon conversion to a villager.