Children of hidden advancements are always hidden as well even if they explicitly set hidden to false.
For the purposes of this bug report I will be using the Minecraft 'story' advancement tree to explain, overriding the default in a custom folder within the worlds directory. This is reproducible with custom advancements, but I wanted to use the vanilla ones for the sake of making the demonstration clearer.
Parent advancements with their "hidden" field set to "true" will pass this field value on to any and all children advancements within the tab, meaning that even if the parent advancement is completed the children icons will not display until they are also complete.
Specifying "hidden": "false" within these children's .json file does not avoid this issue, limiting options of guiding players down branches of a story once they have discovered an initial secret within a custom map or semi-vanilla survival world.
When the hidden advancement was unlocked, it's childrens icons would then display as part of the tree due to having no "hidden" field specified within their .json file (therefore defaulting to false in theory). A hidden advancement not achieved by a player should also not show it's children (as is the current working implementation)
When the hidden advancement was unlocked, it's childrens icons do not show up in the advancements screen despite having no mention of "hidden": "false" within their .json file.
- Download the attached advancements root.json and child.json and place them in the following directory of your world folder
- Open the world or use /reload
- Grant yourself the hidden parent advancement
- Open the advancement GUI
→ The child advancement is not visible
- Grant yourself the child advancement to make sure it was loaded