logs/latest.log with entries tagged customadvancements. The entries below cover the causes seen most often.
My custom advancement doesn't appear in the advancements screen
My custom advancement doesn't appear in the advancements screen
- Validate your JSON. A single misplaced comma or bracket stops that file from loading. Paste the file into a validator such as jsonlint.com before anything else.
- Confirm the folder path. Your file must sit inside the double-nested folder:
The repetition is intentional — the outer folder is the mod’s root, and the inner one is the
customadvancementsnamespace. A file placed directly in the outer folder, or in a folder named anything else, is treated as an override for a different namespace instead. See Structure. - Check the required fields. Every file needs both a
criteriaand adisplayobject. A file with noparentfield additionally needs abackgroundinsidedisplay, or it fails validation and is skipped entirely. - Reload. Run
/ca reloadto pick up new or changed files without restarting. - Read the log. Open
logs/latest.logand search for your file name. Parsing and validation errors name the file that caused them.
My root advancement is silently ignored
My root advancement is silently ignored
background field. A root advancement — one with no parent — is only accepted if its display object contains a background. Without it, the file does not load partially or fall back to a default texture; it is rejected outright with an error in the log.The background image doesn't show, or appears as a missing-texture checkerboard
The background image doesn't show, or appears as a missing-texture checkerboard
- Verify the file location. The image must live at
.minecraft/customadvancements/data/textures/your_texture.png. - Verify the resource location. It must be written exactly as
customadvancements:textures/your_texture.png, including thetextures/prefix and the file extension. - Check the case. File names are case-sensitive on Linux and macOS, so
MyTexture.pngandmytexture.pngare different files. - Check the extension is supported. See Textures for the full list; unrecognized extensions are skipped with a log warning.
- The
backgroundfield is on a child advancement. Backgrounds render only on root advancements — on a child the field is accepted but does nothing. - The player doesn’t have the texture file. Textures are not sent over the network. Every client needs the mod and a copy of the image in its own textures folder.
My background image is tiled or stretched instead of filling the tab properly
My background image is tiled or stretched instead of filling the tab properly
- Tiled into small repeating squares —
largeBackgroundisfalseor absent, so Minecraft renders the texture the vanilla way, repeating it at 16×16 intervals. SetlargeBackground: trueto switch on the mod’s own renderer. - Stretched and distorted —
largeBackgroundistruebutshouldBgClipisfalse, so the image is scaled to the panel’s exact dimensions without regard for its proportions. SetshouldBgClip: trueto preserve them. - Cropped in the wrong place —
shouldBgClipistruebutbgRatiodoes not match the image. Divide the image’s pixel width by its pixel height and use that number.
Progression gating isn't blocking anything, or is blocking too much
Progression gating isn't blocking anything, or is blocking too much
- Confirm
advancementProgression = trueis actually set inconfig/customadvancements-common.toml— the progression system is off by default. - Check
advancementProgressionMode. If it is set toMINECRAFTorCUSTOM_ADVANCEMENTS, advancements outside that namespace are never gated, which can look like the system “isn’t working” if you are testing with a mod advancement. - Under
MODSmode, every namespace (includingminecraft:) is gated by default —modBlacklistonly narrows this down, it never opts a namespace in. If you expected vanilla advancements to be ungated underMODS, add"minecraft"tomodBlacklist. - Root advancements have no parent to gate them, so they are always immediately achievable. Use
connectedAdvancementsListto link a tree’s root to a prerequisite in another tree. - Recipe advancements are never gated, regardless of mode.
- A gated advancement that cannot be earned yet shows no error message to the player — its criteria simply are not granted. This is expected behavior, not a bug.
Config changes aren't taking effect
Config changes aren't taking effect
/ca reload to apply them. It does not./ca reloadnever re-reads the config file. It reloads advancement JSON, textures, and language files only. Every option inconfig/customadvancements-common.tomlrequires a full game or server restart.- Verify the TOML syntax. An invalid config file causes the mod to fall back to defaults, which looks identical to your changes being ignored. Check for unclosed quotes, missing commas in lists, and wrong value types.
- Verify your IDs. List options are validated against the advancements actually loaded:
advancementsBlacklistentries must be real advancement IDs, andadvancementSortingListentries must be root advancement IDs. An invalid entry causes the whole option to fall back to its default.
A blacklisted advancement still shows up
A blacklisted advancement still shows up
- Restart, don’t reload. The blacklist is read from the config at startup, so a
/ca reloadwill not apply it. - Check the ID format. Entries must be
namespace:pathwith no.jsonextension and no leading slash —"minecraft:story/mine_stone", not"minecraft:story/mine_stone.json"or"/minecraft:story/mine_stone". - Check for typos. An entry that does not match a loaded advancement is rejected by the config validator, and the option falls back to its default — meaning one bad entry can silently disable your entire blacklist.
- Removing a child does not remove its parent or siblings. Only the listed advancement and its own descendants are cleared. To remove an entire tab, blacklist its root advancement.
- In whitelist mode, an advancement showing up unexpectedly is usually a required ancestor of something you did list — parents of whitelisted advancements are kept automatically so the tree does not break.
advancementSortingList doesn't change the tab order
advancementSortingList doesn't change the tab order
advancementSortingListonly has an effect whenadvancementTabSortingMode = "DEFINED_LIST". If the mode is stillUNSORTEDorALPHABETICALLY, the list is ignored.- Entries must be root advancement resource locations, not child advancements and not tab display names. Run
/ca generate resource_locationsand look for the advancements with noparentfield. - Tab sorting is read from the config at startup, so restart rather than reloading. Once the mod is running with the new order, reopening the advancements screen is enough to see it.
A /ca command isn't recognized
A /ca command isn't recognized
- Permissions are not the problem. No Custom Advancements command requires an operator permission level — every command is available to any player, in single-player with or without cheats as well as on a server.
- Try the full alias. If
/cais not being recognized, another mod may have claimed it. Use the unabbreviated form instead: - Check the subcommand spelling. The four commands are
reload,generate resource_locations,generate advancement all, andgenerate advancement <advancement>. Tab-completion after/calists what is available.
/ca generate advancement <id> fails with a "file already exist" message
/ca generate advancement <id> fails with a "file already exist" message
customadvancements namespace, because that advancement is already sourced from a file you control. To edit it, open its JSON directly in customadvancements/customadvancements/ instead of generating it.The game crashes, or advancements throw errors in the log
The game crashes, or advancements throw errors in the log
- Check every
parentreference. An advancement whoseparentpoints at an ID that does not exist will break the tree it belongs to. This is the most common cause after blacklisting or removing a mod. - Invalid files are skipped, not fatal. A JSON file with invalid structure is skipped with a warning rather than crashing the game. Search
logs/latest.logforcustomadvancementswarnings to find the culprit. - Read the crash report. If the game does crash, open the newest file in
crash-reports/and search forcustomadvancements. The stack trace usually names the specific file or advancement involved.
An update notification keeps appearing in chat
An update notification keeps appearing in chat
config/customadvancements-common.toml, set the following, and restart:logs/latest.log.