Configuration - ItzSkyReed/BACAP-Addon-Helper GitHub Wiki
This page provides a reference for the project configuration file (config.yml). The configuration engine manages validation routines, localization workflows, checklists, and release packaging across multiple datapacks.
Top-level paths define root directories used during execution.
registry_path: "./registries"
release_path: "./releases"| Key | Type | Description |
|---|---|---|
registry_base_path |
string |
Path to extracted Minecraft registry JSON files (generated via registry-dumper). Used to validate entity types, items, blocks etc. |
release_path |
string |
Output directory where built release archives (.zip) are saved. |
Configures paths for automated advancement documentation export and human-readable requirement tracking.
document_generator:
requirements_directory: "./requirements"
output_directory: "./docs"| Key | Type | Description |
|---|---|---|
requirements_directory |
string |
Path to the directory where actual advancement requirement YAML files and stubs are stored. |
output_directory |
string |
Output directory where final generated documentation JSON files are written. |
Templates allow defining reusable presets for validation rules, language generation, and checklists. Datapacks inherit these configurations using template: <name>, with support for deep property merging (explicit local values override template defaults).
Controls advancement integrity checks, code style conventions, and dependency resolution.
templates:
validation:
default:
enabled: true
title_case_formatting:
enabled: true
severity: info
use_default_minor_words: true
minor_words: [ "a", "an", "the", "and", "but", "or", "for", "of", "in", "to", "with", "vs" ]
allowed_titles:
- "Say NO to Campfires"
whitespace_trimming:
enabled: true
severity: error
plain_text_usage:
enabled: true
severity: error
include_default_strings: true
allowed_strings:
- "/trigger bacaped_mob_universe"
reward_paths:
enabled: true
severity: error
parent_references:
enabled: true
severity: error-
enabled(boolean, defaults totrue): Master toggle for all validators inheriting from this template. -
title_case_formatting: Ensures advancement titles follow standard English Title Case conventions.-
enabled(boolean, defaults totrue): Enables title case linting. -
severity(info|warning|error, defaults toinfo): Log severity level when violations are caught. -
use_default_minor_words(boolean, defaults totrue): Loads built-in lowercase conjunctions/prepositions.Default words are: "a", "an", "the", "and", "but", "or", "nor", "for", "yet", "so", "vs", "as", "at", "by", "in", "of", "off", "on", "per", "to", "via", "with", "from", "into" and roman numerals from I to XII
-
minor_words(Optionallist<string>): Custom words that remain lowercase unless placed at the beginning or end of a title. -
allowed_titles(Optionallist<string>): Exact titles exempted from Title Case rules (e.g., acronyms, intentional stylization).
-
-
whitespace_trimming:-
enabled(boolean, defaults totrue): Flags accidental leading or trailing whitespace in titles and descriptions. -
severity(info|warning|error, defaults toinfo): Logging level (recommended:error).
-
-
plain_text_usage:-
enabled(boolean, defaults totrue): Disallows raw strings in text components to enforce translation keys (translate). Ignores lines that do not contain letters. -
severity(info|warning|error, defaults towarning): Logging level. -
include_default_strings(boolean, defaults totrue): Automatically allows built-in intended plain text strings.Default strings are:
/trigger bac_timers,/trigger bac_progress,/trigger bac_dragon,/trigger bac_statistics -
allowed_strings(Optionallist<string>): Exact strings exempted from Plain Text Usage rules (e.g.,/trigger bacaped_mob_universe).
-
-
reward_paths:-
enabled(boolean, defaults totrue): Verifies that referenced.mcfunctionreward files exist in the file tree and follow standard naming schemes. -
severity(info|warning|error, defaults toerror): Logging level.
-
-
parent_references:-
enabled(boolean, defaults totrue): Resolves parent advancement IDs across all loaded packs and checks for circular dependencies and parent existance. -
severity(info|warning|error, defaults toerror): Logging level.
-
Configures automatic extraction and synchronization of translation files.
templates:
language_pack:
default:
use_default_ignored_keys: true
exclude_vanilla_keys: true
remove_unused_keys: true
ignored_keys:
- "DonationAlerts"
- "Patreon"
- "Enhanced Discoveries"
- "Enhanced Discoveries Hardcore"
base_translation_header: |-
Enhanced Discoveries Language File
Language: Your Language
Author: Names| Property | Type | Default | Description |
|---|---|---|---|
use_default_ignored_keys |
boolean |
true |
Excludes words that are already translated in BACAP Language Pack. |
exclude_vanilla_keys |
boolean |
true |
Ignores native Minecraft translation keys (entity.minecraft.*, item.minecraft.*). |
remove_unused_keys |
boolean |
true |
Automatically prunes orphaned keys from existing translation files during synchronization. |
ignored_keys |
list<string> |
[] |
Explicit keys or literals to exclude from discovery. |
base_translation_header |
string |
"" |
Multiline comment prepended to base_translation.json. Use |- in YAML to preserve line breaks without adding a trailing empty newline. |
Defines layout, formatting, and detection defaults for in-game interactive entity tracker (for example /trigger bacaped_mob_universe).
templates:
checklist:
default:
distance: 64
style:
complete_color: "#00a523"
incomplete_color: "#c2c2c2"
separator_color: "#c2c2c2"
divider_color: "dark_gray"-
distance(integer): Default entity search radius (in blocks) centered on the executing player. -
style.complete_color(string, defaults to#00a523): Hex code or named color applied to verified/found targets. -
style.incomplete_color(string, defaults to#c2c2c2): Color applied to unverified/missing targets. -
style.separator_color(string, defaults to#c2c2c2): Color applied to punctuation and connectors (commas, spaces). -
style.divider_color(string, defaults todark_gray): Color applied to top and bottom horizontal dividers.
Each root key under datapacks defines an isolated pack configuration.
The behavior of each pack is governed by its type:
-
reference: Read-only base pack (e.g., base BACAP). Used exclusively for resolving parent advancements and cross-pack namespace dependencies. Never modified on disk. -
addon: Primary functional datapack containing advancements, milestones, functions, etc. -
compatibility_addon: Dependent sub-pack (e.g., Hardcore variant) linked to a parent addon pack to conditionally override rewards.
datapacks:
bacaped:
path: "./datapacks/bacaped_datapack"
main_namespace: "bacaped"
reward_namespace: "bacaped_rewards"
fanpacks_namespace: "bacaped_fanpacks"
type: "addon"
release_name: "Enhanced Discoveries"
checklist_triggers_folder: "triggers_callback"
advancement_legend_mc_path: "bacaped:bacap/enhanced_legend"
milestone_mc_paths:
adventure: "bacaped:bacap/enhanced_adventure_milestone"
animal: "bacaped:bacap/enhanced_animal_milestone"
validation:
template: default
language_pack:
template: default
path: "./resourcepacks/Enhanced_Discoveries_Language_Pack"
document_generator:
enable: true
section_name: "default"
checklists: [...]-
path(string): Local file path to the datapack root folder. -
main_namespace(string): Primary data namespace for advancements and core functions. -
reward_namespace(string): Namespace where reward functions reside. -
fanpacks_namespace(string): Namespace reserved for third-party addon hooks. -
type(string): Set toaddon. -
release_name(string, defaults to datapack , in this case it isbacaped): Base filename used when packing release archives. -
advancement_legend_mc_path(Optionalstring): The namespaced ID of the pack's "Legend" advancement. Used to automatically update its criteria with all non-hidden advancements. - **
milestone_mc_paths(Optionalmap<string, string>): Maps tab names (e.g., adventure, monsters) to their milestone advancement IDs. Is used to automatically collect all non-hidden advancements from each tab and adds them as criteria to the corresponding milestone. -
checklist_triggers_folder:(Optional string): Folder in which checklists (see 3.3) will be created. Can't be empty if checklists present. -
Optional
document_generator:-
enable(boolean, defaults tofalse): Enables documentation generation for this datapack. -
section_name(string, defaults todefault): The key used when reading/writing requirement descriptions for this pack. Use"default"for base addons, and custom identifiers (e.g.,"Hardcore") for compatibility sub-packs to document alternative criteria.
-
-
Optional
language_pack:-
template(optional string): Optional template fromtemplates. -
path(string): The path to the language pack directory.
-
Checklists generate /trigger scoreboard callbacks, command storage registries, and *_check.mcfunction files that inspect targets around the player and render interactive chat readouts via tellraw.
checklists:
- id: "mob_universe"
template: default
storage_name: "bacaped_mob_universe_storage"
trigger_scoreboard: "bacaped_mob_universe"
distance: 128
check_subfolder: "mob_universe"
trigger_filename: "mob_universe_trigger.mcfunction"
header_translate_key: "Mob list for the current dimension of the Mob Universe Advancement"
categories:
- name: "overworld"
advancement: "bacaped:challenges/mob_universe overworld"
dimension_requirement: "minecraft:overworld"
prefix_text: "Overworld: "
prefix_color: "green"
entities:
- "@all_overworld"| Field | Type | Required | Description |
|---|---|---|---|
id |
string |
Yes | Unique checklist identifier. |
template |
string |
No | Inherits distance and styling from templates.checklist. |
storage_name |
string |
Yes | Namespaced command storage target used for runtime NBT manipulation. |
trigger_scoreboard |
string |
Yes | Scoreboard objective name listened to and reset on execution. |
distance |
integer |
No | Overrides the template search radius. |
extra_selector |
string |
No | Additional selector arguments appended to @e[...] queries (e.g., predicate=bacaped:is_baby). Omit leading commas. |
check_subfolder |
string |
No | Output subfolder under data/<namespace>/function/. If omitted, files are written directly into function/. |
trigger_filename |
string |
Yes | Target entrypoint function generated under function/triggers_callback/. |
header_translate_key |
string |
Yes | Translation key rendered as the chat header. |
categories |
list<object> |
Yes | Category and dimension sub-group definitions. |
Example:
-
name(string): Unique category identifier. -
advancement(string): Associated advancement ID with optional criteria that will be granted for completing this category. -
dimension_requirement(string): Optional dimension identifier (minecraft:overworld,minecraft:the_nether,minecraft:the_end). If specified, this section only executes if the player is in that dimension. -
prefix_text(string): Label prefix displayed before entity list output. -
prefix_color(string): Color of the prefix label. -
entities(list<string>): List of entity IDs. Supports presets prefixed with@.
The following presets are available out of the box and can be referenced in your configuration. Keys are case-insensitive.
| Preset | Aliases | Description | Total Mobs |
|---|---|---|---|
| Overworld |
overworld, all_overworld
|
Overworld entity pool | 72 |
| Nether |
nether, all_nether
|
Nether entity pool | 12 |
| End |
end, all_end
|
End entity pool | 4 |
| Baby Zoo |
baby_zoo, all_baby_mobs
|
Breedable animal pool | 29 |
Click to view mob lists for each preset
allay, armadillo, axolotl, bat, bee, bogged, breeze, camel, camel_husk, cat, cave_spider, chicken, cod, copper_golem, cow, creaking, creeper, dolphin, donkey, drowned, elder_guardian, evoker, fox, frog, glow_squid, goat, guardian, horse, husk, iron_golem, llama, mooshroom, mule, nautilus, ocelot, panda, parched, parrot, phantom, pig, pillager, polar_bear, pufferfish, rabbit, ravager, salmon, sheep, silverfish, skeleton, skeleton_horse, slime, sniffer, snow_golem, spider, squid, stray, sulfur_cube, tadpole, trader_llama, tropical_fish, turtle, vex, villager, vindicator, wandering_trader, warden, witch, wolf, zombie, zombie_horse, zombie_nautilus, zombie_villager
blaze, ghast, happy_ghast, hoglin, magma_cube, piglin, piglin_brute, strider, wither, wither_skeleton, zoglin, zombified_piglin
ender_dragon, enderman, endermite, shulker
armadillo, axolotl, bee, camel, cat, chicken, cow, dolphin, donkey, fox, glow_squid, goat, happy_ghast, hoglin, horse, llama, mooshroom, mule, nautilus, ocelot, panda, pig, polar_bear, rabbit, sheep, sniffer, squid, strider, turtle, wolf
Similar to addon configuration but contains compatibility_addon_settings and parent_datapack_id. By default compatibility addons
datapacks:
bacaped_hardcore:
path: "./datapacks/bacaped_hardcore_datapack"
main_namespace: "bacaped"
reward_namespace: "bacaped_rewards"
type: "compatibility_addon"
parent_datapack_id: "bacaped"
release_name: "Enhanced Discoveries Hardcore"
compatibility_addon_settings:
override_msg: true
override_exp_rewards: false
override_item_rewards: false
override_trophy_rewards: false
validation:
template: default
language_pack:
template: default
path: "./resourcepacks/Enhanced_Discoveries_Language_Pack"Most compatibility addons do not need to override function settings, as reward loot, experience, and items typically remain unchanged. However, because advancement descriptions are modified, notification messages must be updated accordingly.
-
parent_datapack_id(string): Must match an existing pack key underdatapacks(bacaped). -
Optional
compatibility_addon_settings:-
override_msg(boolean, defaults totrue): Replaces advancement announcement messages with addon-specific. -
override_exp_rewards(boolean, defaults tofalse): Overwrites experience grant commands in reward function. -
override_item_rewards(boolean, defaults tofalse): Overwrites item grant commands in reward function. -
override_trophy_rewards(boolean, defaults tofalse): Overwrites trophy grant commands in reward function.
-
Configures custom scoreboards/points "update score" functions. The generator produces static .mcfunction files (execute as @a[advancements={...}] run scoreboard ...) alongside their registration tags in #bacap_fanpacks:tags/function.
datapacks:
bacaped:
custom_scores:
- id: "ed_all_advancements"
scoreboard: "bacaped_all_advancements"
file_path: "update_score_all.mcfunction"
amount: 1
filter:
exclude_root: false
hidden: all
- id: "ed_advancements_only_hiddens"
scoreboard: "bacaped_advancements_only_hiddens"
file_path: "update_score_only_hiddens.mcfunction"
amount: 1
filter:
exclude_root: true
hidden: only
custom_points:
- id: "ed_points"
scoreboard: "bac_advancements_points"
source_scoreboard: "bac_points"
operation: "+="
file_path: "update_points.mcfunction"
filter:
exclude_root: true
hidden: allGenerates commands that increment a scoreboard counter by a static value for each completed advancement:
execute as @a[advancements={<mc_path>=true}] run scoreboard players add @s <scoreboard> <amount>| Field | Type | Required | Default | Description |
|---|---|---|---|---|
id |
string |
Yes | — | Unique counter identifier within the datapack. |
scoreboard |
string |
Yes | — | Target Minecraft scoreboard objective name updated on the player. |
file_path |
string |
Yes | — | Relative destination file path inside data/<reward_namespace>/function/. Must end with .mcfunction. |
amount |
integer |
No | 1 |
Value added to the scoreboard per matching completed advancement. |
filter |
object |
No | {} |
Criteria defining which advancements are included (see Filter Options). |
Generates scoreboard operation commands assigning points dynamically according to each advancement's tier:
execute as @a[advancements={<mc_path>=true}] run scoreboard players operation @s <scoreboard> <operation> <tier> <source_scoreboard>| Field | Type | Required | Default | Description |
|---|---|---|---|---|
id |
string |
Yes | — | Unique point definition identifier within the datapack. |
scoreboard |
string |
Yes | — | Target player scoreboard objective receiving the calculated points. |
source_scoreboard |
string |
No | "bac_points" |
Scoreboard storing baseline point values assigned to tier dummy players (task, goal, challenge, etc.). |
operation |
string |
No | "+=" |
Minecraft scoreboard math operator (+=, =, -=, etc.). |
file_path |
string |
Yes | — | Relative destination file path inside data/<reward_namespace>/function/. Must end with .mcfunction. |
filter |
object |
No | {} |
Criteria defining which advancements are included (see Filter Options). |
Configures which advancements are gathered during generation.
filter:
datapacks: ["bacaped"]
exclude_root: true
hidden: exclude
tiers:
- challenge
- super_challenge| Property | Type | Default | Description |
|---|---|---|---|
datapacks |
list<string> |
[<current_datapack_id>] |
Datapack IDs whose advancements are evaluated. If omitted, only advancements belonging to the parent datapack are included. Specify ["*"] or ["@all"] to collect advancements across all loaded packs. |
exclude_root |
boolean |
false |
When true, tab root advancements (tier: root) are skipped. Set to false to count every advancement. |
hidden |
string |
exclude |
Filter rule for hidden advancements: • exclude: Skips hidden advancements.• only: Counts exclusively hidden advancements.• all: Includes both standard and hidden advancements without distinction. |
tiers |
list<string> |
[] |
Optional whitelist of allowed tiers (task, goal, challenge, super_challenge, hidden, milestone, advancement_legend). If omitted or empty, all non-excluded tiers are included. |
When document_generator.enable is set to true, the generator outputs structured JSON documentation for each advancement and maintains manual requirement stub files in YAML format.
Must contain actual descriptions of the required advancements. inside requirements_directory.
Missing advancement keys are automatically appended as stubs:
# Auto-generated stubs (Added: 2026-09-30 22:56)
bacaped:adventure/fake_netherite_armor:
default:
bacaped:adventure/advancement_info:
default: |-
First line ofrequirement.
Second line of the requirement.
Hardcore: |-
Complete without taking any fall damage.Multiline strings in YAML: Use the |- block scalar indicator to write multi-line text without trailing empty newlines. Newlines are preserved as \n in the compiled JSON. Each advancement ID (mc_path) maps to a dictionary of sections defined by the datapack's section_name property (e.g. default, Hardcore).
The final output is an array of advancement documentation objects:
[
{
"title": "Advancement Info",
"description": "This mod can be useful for completing advancements",
"alternative_descriptions":
{
"Hardcore": "This mod is useless :D"
}
"tier": "hidden",
"tab": "adventure",
"mc_path": "bacaped:adventure/advancement_info",
"parent": "minecraft:adventure/root",
"rewards": {
"experience": 50,
"items": [],
"trophies": [
{
"id": "minecraft:cobblestone_stairs",
"count": 1,
"title": "Advancement's Stairs",
"description": "Shows more information about advancement\nrequirements",
"title_color": "#B0CCD8",
"enchantments": {
"minecraft:unbreaking": 3
},
"unbreakable": false
}
]
},
"requirements": {
"default": "First line of detailed manual requirement.\nSecond line of the requirement.",
"Hardcore": "Complete without taking any fall damage."
}
}
]| Field | Type | Nullable | Description |
|---|---|---|---|
title |
string |
No | Translated or raw advancement title. |
frame |
string |
No | Advancement frame. |
icon_id |
string |
No | Item id of the advancement display. |
description |
string |
No | Translated advancement description. |
tier |
string |
No | Tier (task, goal, challenge, super_challenge, hidden, milestone, advancement_legend, root). |
tab |
string |
No | Identifier of the tab category (e.g. adventure, monsters, challenges). |
mc_path |
string |
No | Full namespaced identifier (namespace:tab/id). |
parent |
ParentAdvancementDocEntry |
Yes | Parent advancement object that contains mc_path or detailed info including title, description, etc. null for roots. |
rewards |
RewardsDocEntry |
Yes | Advancement rewards entry, or null if no rewards exist. |
requirements |
map<string, string> |
Yes | Key-value pairs mapping section_name to actual requirements. |
alternative_descriptions |
map<string, string> |
Yes | Key-value pairs mapping section_name to alternative compatibility addons descriptions. |
player_head_data |
PlayerHeadDocEntry |
Yes | Player head information if id = player_head. |
| Field | Type | Nullable | Description |
|---|---|---|---|
experience |
integer |
Yes | Experience points granted upon completion. |
items |
list<ItemRewardDocEntry> |
Yes | Items granted by the reward function. |
trophies |
list<TrophyDocEntry> |
Yes | Custom trophy items granted by the reward function. |
| Field | Type | Nullable | Description |
|---|---|---|---|
id |
string |
No | Minecraft item identifier (e.g. minecraft:diamond). |
count |
integer |
No | Stack count. |
enchantments |
map<string, integer> |
Yes | Map of enchantment IDs to levels. |
custom_name |
string |
Yes | Custom display name component. |
player_head_data |
PlayerHeadDocEntry |
Yes | Player head information if id = player_head. |
| Field | Type | Nullable | Description |
|---|---|---|---|
id |
string |
No | Minecraft item identifier (e.g. minecraft:diamond). |
count |
integer |
No | Stack count. |
title |
string |
Yes | Custom trophy display title. |
description |
string |
Yes | Trophy lore description (lines separated by \n). |
title_color |
string |
Yes | Hex color (#RRGGBB) or named color used for the trophy title. |
enchantments |
map<string, integer> |
Yes | Map of enchantment IDs to levels applied to the trophy. |
unbreakable |
boolean |
No | Whether the item has the unbreakable component flag set. |
player_head_data |
PlayerHeadDocEntry |
Yes | Player head information if id = player_head. |
| Field | Type | Nullable | Description |
|---|---|---|---|
id |
uuid |
Yes | Player UUID |
texture_hash |
string |
Yes | Texture hash to get player skin from [minecraft.textures](http://textures.minecraft.net/texture/). |
| Field | Type | Nullable | Description |
|---|---|---|---|
title |
string |
Yes | Translated or raw advancement title. |
frame |
string |
Yes | Advancement frame. |
icon_id |
string |
Yes | Item id of the advancement display. |
description |
string |
Yes | Translated advancement description. |
tier |
string |
Yes | Tier (task, goal, challenge, super_challenge, hidden, milestone, advancement_legend, root). |
mc_path |
string |
No | Full namespaced identifier (namespace:tab/id). |
player_head_data |
PlayerHeadDocEntry |
Yes | Player head information if id = player_head. |