7

Me and some of my friends are taking on a challenge to get all of the advancements you can get in minecraft, and while I was trying to get the "A Balanced Diet" advancement I realized that you cannot see which foods you have eaten and which ones you still need to eat. After looking at some of the other advancements (such as "Two by Two" and "Discover Every Biome".)It would be very helpful to know how much of the advancement I have done, and how much I still need to do.

Is there a way to do this? I am hoping that if you press a button on your keyboard or or something similar to show it. Sadly, so far I am at a dead end.

  • 1
    I doubt it . I've researched a lot of sites and noone has said its possible anywhere. – Reflexive Jan 19 '19 at 0:41
  • 1
    I may be miss-remembering, but aren't there some advancements where you CAN see your progress? Would it then be possible to edit all the advancements in a datapack folder so it would show you your progress? I wouldn't know how, though, but if it were possible I'm sure someone else would answer. – SpiceWeasel Jan 19 '19 at 2:48
  • 1
    General tip, not just for this site: Please Do Not Type Like This, it's super annoying and makes it difficult to read. – Fabian Röling Jan 19 '19 at 17:18
  • 1
    Interesting, it doesn't even appear in /data get entity @s and I also can't find it anywhere in the save data. – Fabian Röling Jan 19 '19 at 17:37
  • 1
    I think the best way would be to write down what you've done so far somewhere. – redapple8787 Jan 21 '19 at 16:11
10
+100

It is important to understand how Advancements work internally before trying to track your progress on different Advancements.

Where are Advancements stored?

Advancements are stored in the world data folder as a JSON file. The path to reach the file that stores your progress is as follows.

  • Windows: C:\Users\<user>\AppData\Roaming\.minecraft\saves\<world>\advancements
  • macOS: Library/Application Support/minecraft/saves/<world>/advancements

Upon reaching the folder, a JSON file with your UUID can be found. In my case, the file name is 1f2481d2-9e43-4417-b103-667abb948bfd.json. You can open the file using your favourite text editor.

How are Advancements tracked?

For every action performed in Minecraft, a certain trigger is "activated". The game then records the actions you have performed by updating info stored in the Advancements JSON file mentioned above.

For instance, on initial world creation, the Advancement file is blank.

Then, I join the world. Immediately on join, the following is written into the file:

{
  "minecraft:adventure/adventuring_time": {
    "criteria": {
      "minecraft:jungle": "2019-01-21 17:27:40 +0800"
    },
    "done": false
  }
}

It is easy to understand the tree of text as below:

minecraft:adventure/adventuring_time is the internal name that the game uses to identify different Advancements.

criteria denotes what objectives needs to be completed in order to finish an Advancement. Only objectives that have already been met will be shown. This can be seen later in this answer. On a new criterion completion, the details are immediately written into the file. In my case, I spawned in the Jungle biome for the first time (its internal name is minecraft:jungle) at the time 2019/01/21 17:27:40 GMT+8 (which is stored as 2019-01-21 17:27:40 +0800).

done denotes whether the entire Advancement has been finished. It has a value of false by default, meaning the Advancement has not yet been finished. When all criteria has been completed, the value becomes true and a toast that congratulates the player on completing an Advancement is correspondingly shown on the game screen.

After joining the game, I randomly walked around and ventured into another biome. The file is immediately updated to the following:

{
  "minecraft:adventure/adventuring_time": {
    "criteria": {
      "minecraft:jungle": "2019-01-21 17:27:40 +0800",
      "minecraft:jungle_hills": "2019-01-21 17:32:28 +0800"
    },
    "done": false
  }
}

which reflects that I have entered the Jungle Hills biome for the first time at 5:32pm.

As seen from above, the file is constantly edited to keep the game up to date on your progress. So, we can always obtain the most updated information on Advancement progress through this file.

So how do I know the detailed progress of each Advancement?

Give me a tl;dr!

You have to cross-reference the Advancements JSON file with the Advancements page on the Minecraft wiki.

So how should I do that?

Let's say we want to track the Monsters Hunted Advancement. This Advancement requires a player to kill one of every hostile monster.

  1. Visit the Advancements page on the Minecraft wiki (linked below). Navigate to the Monsters Hunted Advancement section in the list of Advancements.
  2. Open the Advancements JSON file. Use the search function to quickly find the section minecraft:adventure/kill_all_mobs.
  3. Check the criteria section and see the list of completed criteria. Remember what criteria you have completed. If needed, jot them down on a blank document or a piece of paper.
  4. Now look at the Advancements page on the Minecraft wiki. The actual requirements state that you have to

    Kill each of these 24 mobs. In 1.14,‌[upcoming] also kill each of these 2 mobs. Other mobs may be killed, but are ignored for the advancement.

  5. So, hover your mouse over "these 24 mobs". Check if your list of completed criteria contains each mob. If not, write the missing criterion down.
  6. When you have finished checking the 24 or 26 mobs, you should now hold a list of criteria that you have yet to complete. Congratulations! You now know what mobs you should focus on killing.
  7. For extra accuracy, count if the number of items on your list of incomplete criteria matches the number shown in the Advancements GUI in-game.

I can't find a certain Advancement ID!

If you are unable to find the Advancement ID in the file, that means you either made a typo, or have made no progress on that Advancement at all.

Are there less obnoxious ways?

At current stage, no.

The main issue is that the criteria that you have never met before is not stored in the file. There is no way to check detailed progress grouped by each Advancement in-game.

Do note that Fabian's answer provides an in-game way to manually check if a very specific criterion is met. It may be easier when only a few criteria are left and you have a vague idea on what you have not yet done. However, this method only works when commands are enabled.

Links

For a list of Advancements and their internal IDs, criteria for specific Advancements, the general structure of the Advancements JSON file and more, visit the Minecraft wiki.

  • 2
    Oh, I totally overlooked that! For some reason I thought that the folder saves/<world>/advancements contained advancement files from data packs. But of course they are in saves/<world>/datapacks/<pack>/data/<namespace>/advancements. In general a great answer, covers everything that one might want to know. You could also get the list of advancement criteria from that version's jar file, but since the location in there or different conditions might change, I think it's better to reference the wiki instead, as you did. – Fabian Röling Jan 21 '19 at 11:00
  • 1
    I think I'll provide a function at some point that outputs which criteria are met and which ones aren't. It can all be automated without changing anything and without triggering "advancement got" popups. But making a really good solution for it requires time, which I don't have that much of currently. – Fabian Röling Jan 21 '19 at 11:18
  • 1
    I did not know that there are in-game ways to check for internal save data and design functions based on the check results. In general how can that be accomplished? – 54D Jan 21 '19 at 11:29
  • 2
    I meant my answer. You can automate that by getting the result with execute store success. And yes, you can access a lot of internals with commands, for example everything in the NBT data of entities. – Fabian Röling Jan 21 '19 at 15:38
0

I totally missed this in the release notes, but there's actually a target selector argument "advancements"! It works like this:

@a[advancements={story/form_obsidian=false,story/shiny_gear={diamond_helmet=true}}]

This selects every player who has not gotten the "ice bucket challenge" advancement in the "Minecraft tab", but have worn a diamond helmet, therefore completing that part of the "cover me with diamonds" advancement.

You can use this to check for all criteria individually. Sadly they are not documented in the wiki, so you'll have to get them out of the version's .jar file in .minecraft/versions/<version> (not the path set in the launcher, the one chosen when installing Minecraft, if you had the option, otherwise the default). Inside that .jar file there's the path data/minecraft/advancements with sub-folders for all the advancements, containing the advancements in JSON format.

0

This answer works, but there are two much better ones, one by me. Link and link.


I wasn't able to find where this is stored, otherwise you could just look it up there with an NBT editor.

The best I was able to find is running /advancement (grant|revoke) @s only <advancement> <criterion> and then the opposite again, if necessary. The feedback message will tell you whether you had that criterion already. Based on that, you can undo that command again.

-2

Just hover over the advancement... It works for me. So simple!

  • 3
    That only shows you the progress in numbers, like "3/42", not what you already have. – Fabian Röling Jan 19 '19 at 17:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.