Skip to main content
Custom Advancements registers a small set of server-side commands under the /ca prefix that let you work with the mod directly from the in-game chat or the server console. Between them they cover reloading your files without a restart, exporting any loaded advancement as an editable JSON template, and dumping every advancement ID to a text file. All arguments are space-separated, and tab-completion works throughout.
None of the /ca commands require server operator permissions — any player connected to the server can run them, and in single-player they work whether or not cheats are enabled.

/ca reload

Re-reads everything in your customadvancements/ folder and rebuilds the advancement data for every player online, without restarting the server.
This command takes no arguments. When executed it:
  1. Sends “Reloading…” to the player who ran it.
  2. Starts a background thread that clears the mod’s loaded data, recreates any missing folders, and re-reads your advancement JSON files, textures, and language files.
  3. Reloads the server’s game data so the rebuilt advancement set reaches all connected players.
  4. Sends “Reload complete!” once the reload has been started, and logs Reload completed in <n> ms! when the work actually finishes.

When to use it

  • After adding a new advancement JSON file.
  • After editing or deleting an existing advancement file.
  • After adding or replacing a texture in data/textures/ or a language file in data/lang/.
/ca reload does not re-read config/customadvancements-common.toml. Config values are re-read by Forge when you save that file while the game is running, which the mod then follows with a reload of its own. See Config File.

Failure conditions


/ca generate advancement all

Exports every currently loaded advancement — vanilla, modded, and your own — as individual JSON files inside your customadvancements/ folder, organized by namespace. After all files are written, the mod triggers a full reload so the exported files take effect immediately.
This command takes no arguments. When executed it:
  1. Sends “Starting to generate files for game advancements…” to the executing player.
  2. Starts a background thread so the server stays responsive while files are written.
  3. Writes each advancement to <game_dir>/customadvancements/<namespace>/<path>.json, creating the folders as needed.
  4. Reports “Generated <N> files for game advancements successfully!” on completion.
  5. Triggers an automatic reload so the exported files become active.
On a modded instance this writes hundreds of files, and every file left in the folder is loaded as an override of the original advancement. Treat the output as a one-time reference dump: delete the files you do not intend to customize, or set disableStandardAdvancementLoad = true so only your folder is loaded. See Blacklist & Whitelist.

Failure conditions


/ca generate advancement <advancement>

Exports a single advancement by its resource location ID as a JSON file, then triggers a reload. Use this instead of all when you only want to tweak one advancement — it is far faster and leaves your folder clean.

Arguments

ResourceLocation
required
The resource location ID of the advancement to export, in namespace:path format. Press Tab after /ca generate advancement to browse every advancement currently loaded on the server, including all mod advancements. The command fails if the supplied ID belongs to the customadvancements namespace, because that advancement is already one of your own files.
When executed it:
  1. Checks that the advancement’s namespace is not customadvancements.
  2. Writes the advancement to <game_dir>/customadvancements/<namespace>/<path>.json — for example customadvancements/minecraft/story/obtain_armor.json.
  3. Sends “Successfully generated file for: <id>”.
  4. Triggers an automatic reload so the exported file is picked up immediately.
A generated file looks like this:
customadvancements/minecraft/story/obtain_armor.json

Failure conditions

To regenerate a file for an advancement you have already exported and edited, delete your existing copy first — the command refuses to overwrite advancements that are already in the customadvancements namespace.

/ca generate resource_locations

Writes every currently loaded advancement resource location ID to a plain-text file on disk. Run this first whenever you need exact IDs for advancementsBlacklist, advancementSortingList, or connectedAdvancementsList.
This command takes no arguments. When executed it:
  1. Sends “Starting to write resource locations to file…” to the executing player.
  2. Collects the IDs of every loaded advancement, including your own custom advancements.
  3. Writes them to <game_dir>/customadvancements/resource_locations.txt, one entry per line.
  4. Sends “Finished!” on success.

Output file format

The file is overwritten every time the command runs, so it always reflects the current state of the instance. Run it again after installing new mods or adding new custom advancements.

Failure conditions

[INSERT IMAGE: Chat output after running /ca generate resource_locations, showing the “Starting…” and “Finished!” messages]

Recommended workflow for editing an existing advancement:
  1. Run /ca generate resource_locations to write all advancement IDs to customadvancements/resource_locations.txt.
  2. Open that file and find the namespace:path ID you want to customize.
  3. Run /ca generate advancement <id> with that ID (tab-complete to select it). The JSON template is written to customadvancements/<namespace>/<path>.json and a reload fires automatically.
  4. Edit the exported JSON in your favorite text editor — change criteria, rewards, display text, or anything else.
  5. Run /ca reload to apply your edits without restarting.