Advancement



Advancements are an upcoming feature set to replace achievements.

Usage
Unlike achievements, advancements are easily customizable with the use of JSON files. Its tab-based UI can support a large number of tabs, but currently only 4-5 are planned for vanilla Minecraft: "mine & craft", "nether", "end", "combat", "engineering", and perhaps other variants. Each tab has a different background with a repeating texture.

The command has the ability to grant, revoke and test for advancements on a given player.

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.
 * : The optional type of background for the icon.  for a tile with a more fancy 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 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 recipes (strings).
 * : A list of loot tables (strings).
 * : An amount of experience.

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 the stronghold.
 * : Minimum value.
 * : Maximum value.
 * : An entity ID.
 * : 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 list of parents.
 * : An entity ID.
 * : The x position.
 * : The y position.
 * : The z position.
 * : 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.
 * : The x position.
 * : The y position.
 * : The z position.
 * : 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.
 * : The amount of slots occupied in the inventory.
 * : Minimum value.
 * : Maximum value.
 * : Maximum value.