Advancements

From Minecraft Wiki
(Redirected from Advancement)
Jump to: navigation, search
This page contains content on features that may be included in the next update.
These features have appeared in development versions, but the full update containing these features has not been released yet.
Dinnerbone-twitter.png The system as a whole is called "advancements", which is aimed at guiding & tracking players progress through the game (in vanilla survival and any custom additions by mapmakers or mods). Most advancements are literally just that - an advancement through the game.
Dinnerbone on the advancements system[1]
The popup that appears when an advancement is completed.
The popup that appears when a goal advancement is completed.
The popup that appears when special challenge advancements are completed.

Advancements are an upcoming feature set to replace achievements.

Obtaining[edit | edit source]

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 /advancement 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[edit | edit source]

The advancements interface. One advancement ("Isn't It Iron Pick") is selected.

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 two tabs in vanilla Minecraft (although more may possibly be added[2][3]):

  • Minecraft: The heart and story of the game.
  • Adventure: Adventure, exploration, and combat.

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[edit | edit source]

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.

    •  display: The optional display data.

      •  icon: An item or block id to represent the icon in the advancements window.

      •  title: The title for this story advancement.

      •  title: A JSON text component (containing text and formatting like used in /tellraw and various other commands)

      •  frame: The optional type of frame for the icon. challenge for a tile with a more fancy spiked border as it is used for the kill all mobs advancement, goal for a tile with a rounded border as it is used for the full beacon advancement, task for a normal tile (default).

      •  background: The optional directory for the background to use in this advancement tab (only for the root advancement).

      •  description: The description of the advancement

    •  parent: The optional parent advancement directory of this advancement (does not apply for the root advancement).

    •  criteria: The required criteria that have to be met.

      •  <criteriaName>: A name given to the criteria (can be any string, must be unique).

        •  trigger: The trigger for this advancement; specifies what the game should check for the advancement.

        •  conditions: All the conditions that need to be met when the trigger gets activated.

    •  requirements: An optional list of requirements (all the <criteriaName>). 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)

    •  rewards: An optional collection of the rewards provided when this advancement is obtained.

      •  recipes: A list of recipes (strings).

      •  loot: A list of loot tables (strings).

      •  experience: An amount of experience.

Triggers[edit | edit source]

Trigger Name Triggered when: Available Conditions
minecraft:bred_animals Player breeds 2 animals "parent", "partner", "child"
minecraft:brewed_potion Player brews a potion "potion"
minecraft:construct_beacon Player changes the structure of a beacon. (When the beacon updates itself) "level"
minecraft:cured_zombie_villager Player cures a zombie villager "zombie, "villager"
minecraft:enchanted_item Player enchants an item through an enchanting table (does not get triggerd through an anvil, or through commands) "item", "levels"
minecraft:enter_block Player enters a block (such as a portal) player needs to be standing in the same block space as the block "block", "state"
minecraft:entity_killed_player Entity kills a player "entity"
minecraft:impossible Only using commands
minecraft:inventory_changed Any changes happen to the player's inventory. "items", "slots"
minecraft:item_durability_changed Any item being damaged in any form. "item", "durability", "delta"
minecraft:location Checks every 20 ticks (1 second) where the player is "position", "biome"
minecraft:player_damaged Player receives damage "damage"
minecraft:player_hurt_entity Player hurts an entity (including itself) "damage"
minecraft:player_killed_entity Player kills an entity "entity"
minecraft:recipe_unlocked Player unlocks a recipe (using a knowledge book for example) "recipe"
minecraft:slept_in_bed Player enters a bed "location"
minecraft:summoned_entity Player summons an entity through for example wither skulls (needs to yet be tested thoroughly, e.g. will it work when spawning from dispenser, using spawn eggs, with pumpkins, ender dragon, etc.) "entity"
minecraft:used_ender_eye Player uses an ender eye (in a world where strongholds generate) "distance"
minecraft:villager_trade Player trades with a villager "villager", "item"

Conditions[edit | edit source]

Available conditions are listed below:


  •  conditions:

    •  biome: The biome the player is currently in.

    •  block: A block ID.

    •  child:

    •  damage:

      •  blocked: Checks if the damage was successfully blocked.

      •  bypasses_armor: Checks if the damage bypasses the armor of a player.

      •  bypasses_invulnerability: Checks if the damage bypasses the invulnerability status of a player.

      •  bypasses_magic: Checks if the damage is caused by starvation.

      •  dealt: Checks the amount of incoming damage against the player before damage reduction.

      •  dealt

        •  min: Minimum value.

        •  max: Maximum value.

      •  is_explosion: Checks if the damage originates from an explosion.

      •  is_fire: Checks if the damage originates from fire.

      •  is_magic: Checks if the damage originates from magic.

      •  is_projectile: Checks if the damage originates from a projectile.

      •  source_entity: Checks the entity that dealt damage.

      •  taken: Checks the amount of incoming damage against the player after damage reduction.

      •  taken

        •  min: Minimum value.

        •  max: Maximum value.

    •  distance: The distance to an origin.

    •  distance

      •  min: Minimum value.

      •  max: Maximum value.

    •  entity:

      •  type: An entity ID.

      •  distance: (same as above, trigger dependant)

    •  item: An item.

      •  count: Amount of the item.

      •  data: Data of the item.

      •  enchantments: List of enchantments.

        •  An enchantment

          •  enchantment: An enchantment ID.

          •  levels: The level of the enchantment.

          •  levels

            •  min: Minimum value.

            •  max: Maximum value.

      •  item: An item ID.

      •  potion: A brewed potion ID.

    •  items: A list of items.


        •  count: Amount of the item.

        •  data: Data of the item.

        •  enchantments: List of enchantments.

          •  An enchantment

            •  enchantment: An enchantment ID.

            •  levels: The level of the enchantment.

            •  levels

              •  min: Minimum value.

              •  max: Maximum value.

        •  item: An item ID.

        •  potion: A brewed potion ID.

    •  level: The tier of beacon.

    •  level

      •  min: Minimum value.

      •  max: Maximum value.

    •  levels: The levels spent on an enchantment.

    •  levels

      •  min: Minimum value.

      •  max: Maximum value.

    •  parent: A parent.

    •  partner: A partner (the entity the parent above was bred with, useful for checking horses + donkey = mule breeding)

    •  position

      •  x: The x position.

      •  x

        •  min: Minimum value.

        •  max: Maximum value.

      •  y: The y position.

      •  y

        •  min: Minimum value.

        •  max: Maximum value.

      •  z: The z position.

      •  z

        •  min: Minimum value.

        •  max: Maximum value.

    •  potion: A brewed potion ID.

    •  recipe: A recipe.

    •  state: The blockstates of a block.

      •  <state_name>: A single blockstate, with the key name being the state name and the value being the required value of that state.

    •  slots

      •  empty: The amount of slots empty in the inventory.

      •  empty

        •  min: Minimum value.

        •  max: Maximum value.

      •  full: The amount of slots completely filled (stacksize) in the inventory.

      •  full

        •  min: Minimum value.

        •  max: Maximum value.

      •  occupied: The amount of slots occupied in the inventory.

      •  occupied

        •  min: Minimum value.

        •  max: Maximum value.

    •  villager: information stored about the villager upon conversion from a zombie.

      •  distance

    •  zombie: information stored about the zombie upon conversion to a villager.

      •  distance

History[edit | edit source]

Upcoming
1.12 February 16, 2017 Dinnerbone tweets that he had spent an entire day designing "a new thing" with Darngeek.
February 20, 2017 The design on "this thing" is now done and can begin to be implemented; he later hints at the feature's name.[4]
February 22, 2017 He states that he is "advancing" on the feature; "So. Many. Json. Files." he adds.
Later that day he states that the project is growing bigger, and that he may need a command "even more complicated than /scoreboard"
March 06, 2017 The backend of the mysterious feature is finished, but the UI needs work, he tweets.
"I made a tabthulhu today," he later adds,[5] indicating this feature may use a large number of tabs.
March 13, 2017 He again references the name of the feature in a tweet, stating that he is almost done with "this new feature advancement".
March 14, 2017 He tweets that the UI is now working, and that the project took many days and a few research papers to accomplish.
March 22, 2017 The feature now "awards players with things", he states while making another reference to the feature name.
March 23, 2017 Dinnerbone states that the feature requires around 500 JSON files.
He later tweets a teaser of what the feature holds,[6] though it is hidden behind an encrypted .zip file disguised as a .png image, which he clarifies in later tweets.[7][8][9] This .zip file contains custom recipe JSON files.
He posts another encrypted .zip file soon afterwards, containing a few more recipes.[10]
March 24, 2017 "A deafening metallic condor keeps distracting me", Dinnerbone states. Users quickly pinpointed this bizarre message to this Gfycat URL officially showcasing advancements for the first time.
He reveals that the UI can have several tabs with advancement trees that are themselves advancements.[11] He clarifies that that's what he meant by "tabthulhu."[12]
All of the UI is data-driven, including positioning and layout, with no hardcoded data or positions.[13]
17w13a Advancements added.
17w14a Added new advancements, including a new "adventure" tab.
Added new notifications for when players advance, which have a sliding effect, and come in two colors: yellow for normal advancements, and pink for special challenges.
17w15a Added the description of an advancement & changed the title of some advancements.
17w16b Added trigger minecraft:item_durability_changed.

Issues[edit | edit source]

Issues relating to “Advancements” are maintained on the issue tracker. Report issues there.

Gallery[edit | edit source]

References[edit | edit source]

  1. https://www.reddit.com/r/Minecraft/comments/64pk6r/dinnerbone_working_on_giving_advancements/dg4uiou?context=1
  2. “The tabs are alternate trees that are themselves advancements too. We support a lot, but we'll use 4/5 in vanilla. http://media.dinnerbone.com/uploads/2017-03/screenshots/24_09-23-41_rYLfqg0Q52.png” – @Dinnerbone, March 24, 2017
  3. “4 or 5 tabs. Probably: "mine & craft", "nether", "end", "combat", "engineering" or some variant of.” – @Dinnerbone, March 27, 2017
  4. “Getting this implemented in a nice way would be a real advancement for the game.” – @Dinnerbone, February 20, 2017
  5. “I made a tabthulhu at work today. This is an interesting project!” – @Dinnerbone, March 06, 2017
  6. “This is a super big spoiler of what I'm working on. Totally unfinished and may change a lot, but gives you an idea. http://media.dinnerbone.com/uploads/2017-03/screenshots/23_15-00-52_ttcfj9tDnV.png” – @Dinnerbone, March 23, 2017
  7. “(No I'm not adding emoji.)” – @Dinnerbone, March 23, 2017
  8. “(P.s. there was more to that picture than meets the eye. May need a bit of trickery.)” – @Dinnerbone, March 23, 2017
  9. “Did the filesize seem a bit big?” – @Dinnerbone, March 23, 2017
  10. “Okay so I think my webserver proxy messed that up. Technology is difficult. Here's a more fun image, in a zip: http:// media.dinnerbone.com/uploads/2017-0 3/screenshots/23_15-00-52_ttcfj9tDnV.zip” – @Dinnerbone, March 23, 2017
  11. “The tabs are alternate trees that are themselves advancements too. We support a lot, but we'll use 4/5 in vanilla. http://media.dinnerbone.com/uploads/2017-03/screenshots/24_09-23-41_rYLfqg0Q52.png” – @Dinnerbone, March 24, 2017
  12. “(Thus "tabthulu" tweets from a few weeks back. :D)” – @Dinnerbone, March 24, 2017
  13. “Also worth noting: all of that UI is data driven. Positioning and layout included. No hardcoded data in UI, no hardcoded positions in data.” – @Dinnerbone, March 24, 2017