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, 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 four tabs in vanilla Minecraft (although more may possibly be added ):


 * Minecraft: The heart and story of the game.
 * Adventure: Adventure, exploration, and combat.
 * Nether: Nether things.
 * The End: End things.

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 goal advancements are more rounded, while challenge advancements have a sharper appearance. Advancement icons begin as light-gray but turn dark-golden when completed.

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:

One of these JSON files is structured according to the following format: For story advancements:


 * The root tag.
 * : The optional display data.
 * : An item or block id to represent the icon in the advancements window.
 * : The title for this story advancement.
 * : A JSON text component (containing text and formatting like used in /tellraw and various other commands)
 * : 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
 * : 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 list of commands (strings). These are run in order by the player, with full privileges.

Conditions
Available conditions are listed below:


 * : The biome the player is currently in.
 * : A block ID.
 * : An entity ID.
 * : Checks if the damage was successfully blocked.
 * : Checks if the damage bypasses the armor of a player.
 * : Checks if the damage bypasses the invulnerability status of a player.
 * : Checks if the damage is caused by starvation.
 * : Checks the amount of incoming damage against the player before damage reduction.
 * : Minimum value.
 * : Maximum value.
 * : 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 dealt damage.
 * : An entity ID.
 * : Checks the amount of incoming damage against the player after damage reduction.
 * : Minimum value.
 * : Maximum value.
 * : The distance to an origin.
 * : Minimum value.
 * : Maximum value.
 * : An entity ID.
 * : (same as above, trigger dependant)
 * : Name of a structure (see /locate command)
 * : An item.
 * : Amount of the item.
 * : Data of the item.
 * : List of enchantments.
 * : An enchantment ID.
 * : The level of the enchantment.
 * : Minimum value.
 * : Maximum value.
 * : An item ID.
 * : A brewed potion ID.
 * : A list of items.
 * : Amount of the item.
 * : Data of the item.
 * : List of enchantments.
 * : An enchantment ID.
 * : The level of the enchantment.
 * : Minimum value.
 * : Maximum value.
 * : An item ID.
 * : A brewed potion ID.
 * : The tier of beacon.
 * : Minimum value.
 * : Maximum value.
 * : The levels spent on an enchantment.
 * : Minimum value.
 * : Maximum value.
 * : A parent.
 * : An entity ID.
 * : A partner (the entity the parent above was bred with, useful for checking horses + donkey = mule breeding)
 * : An entity ID.
 * : The x position.
 * : Minimum value.
 * : Maximum value.
 * : The y position.
 * : Minimum value.
 * : Maximum value.
 * : The z position.
 * : Minimum value.
 * : Maximum value.
 * : A brewed potion ID.
 * : A recipe.
 * : 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 amount of slots empty in the inventory.
 * : Minimum value.
 * : Maximum value.
 * : The amount of slots completely filled (stacksize) in the inventory.
 * : Minimum value.
 * : Maximum value.
 * : The amount of slots occupied in the inventory.
 * : Minimum value.
 * : Maximum value.
 * : information stored about the villager upon conversion from a zombie.
 * : information stored about the zombie upon conversion to a villager.
 * : Minimum value.
 * : Maximum value.
 * : A brewed potion ID.
 * : A recipe.
 * : 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 amount of slots empty in the inventory.
 * : Minimum value.
 * : Maximum value.
 * : The amount of slots completely filled (stacksize) in the inventory.
 * : Minimum value.
 * : Maximum value.
 * : The amount of slots occupied in the inventory.
 * : Minimum value.
 * : Maximum value.
 * : information stored about the villager upon conversion from a zombie.
 * : information stored about the zombie upon conversion to a villager.
 * : Minimum value.
 * : Maximum value.
 * : 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.
 * : information stored about the zombie upon conversion to a villager.