Is there a way to see how far you are in an advancement in Minecraft?

Solution 1:

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
  • Linux: /home/<user>/.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.