Appendix G — Data Pack Folder Structure Cheat Sheet
A one-page map of every folder a data pack can contain. Use it to answer two questions fast: “Which folder does this file go in?” and “Is this folder required or optional?” Every folder and its one-line purpose comes straight from the wiki’s Data pack page. Folder names use the book’s singular convention (
function,recipe,loot_table, neverfunctions/recipes), exactly as the game expects them.
How a data pack is laid out
A data pack is a folder (or a .zip) with two things at its root, plus a data
folder that holds everything else:
<data pack name>/
├── pack.mcmeta ← REQUIRED. The only mandatory file. Metadata in JSON.
├── pack.png ← optional. Icon shown next to the pack in the selection screen.
└── data/
└── <namespace>/ ← your namespace (e.g. mypack). "minecraft" overrides vanilla.
└── ... registry folders (below) ...
The rule that drives everything: a file at
data/<namespace>/<registry>/<path>.json is loaded into the <registry>
registry with the ID <namespace>:<path>. Both <registry> and <path> may
contain slashes, which just create deeper sub-folders. Functions use
.mcfunction instead of .json; structures use .nbt.
What’s required vs. optional: only pack.mcmeta is mandatory. The data
folder, the namespace folder, and every registry folder below are optional:
you create a folder only when you have a file to put in it. An empty data pack is
just pack.mcmeta.
The experimental-settings mark (*)
A folder marked with * is an experimental-settings folder. Putting even one
valid file inside any * folder marks the whole pack as “using experimental
settings”: opening the world shows a warning screen, the world cannot be
uploaded to Realms, and changes to those folders cannot be applied with
/reload: you must exit and reopen the world (or reboot the server). Folders
without a * are safe and /reload-friendly.
The complete tree
data/<namespace>/
├── function .mcfunction files with lists of commands.
├── structure .nbt files defining a saved structure of blocks.
├── tags/ collections of things; each sub-folder is one tag type (.json).
│ ├── function tags of functions.
│ └── <registry> tags can be defined for any registry (see tag types).
│
│ ── all following folders hold .json files defining the content ──
│
├── advancement definitions of advancements.
├── banner_pattern * textures and names to use for banner patterns.
├── cat_variant * textures and spawn conditions of cat variants.
├── chat_type * formatting of chat messages.
├── chicken_variant * textures and spawn conditions of chicken variants.
├── cow_variant * textures and spawn conditions of cow variants.
├── damage_type * attributes of damage and death messages.
├── dialog * definitions of dialogs.
├── dimension * biome layout and terrain of dimensions.
├── dimension_type * properties of dimensions.
├── enchantment * enchantment effects, supported items, level cost, etc.
├── enchantment_provider * selection of enchantments for specific uses.
├── frog_variant * textures and spawn conditions of frog variants.
├── instrument * instruments for goat horns.
├── item_modifier loot functions used to modify items.
├── jukebox_song * jukebox song definitions.
├── loot_table loot from mobs, blocks, chests, etc.
├── painting_variant * size and texture of paintings.
├── pig_variant * textures and spawn conditions of pig variants.
├── predicate tests for conditions based on position, mobs, etc.
├── recipe recipes for crafting, smelting, etc.
├── sulfur_cube_archetype * defines Sulfur Cube archetypes.
├── test_environment * groups GameTests with the right preconditions to run.
├── test_instance * a test that can be run by the GameTest framework.
├── timeline * specifies events and attributes by time of day.
├── trade_set * a set of trades selected by villagers / wandering traders.
├── trial_spawner * configuration of trial spawners.
├── trim_material * colors, ingredients, and name of trim materials.
├── trim_pattern * textures and name of trim patterns.
├── villager_trade * trades of villagers and wandering traders.
├── wolf_sound_variant * sound variants of wolves.
├── wolf_variant * textures and spawn conditions of wolf variants.
├── world_clock * clocks used to keep track of internal time.
├── zombie_nautilus_variant * textures and spawn conditions of zombie nautilus variants.
└── worldgen/ * world-generation registries:
├── biome biome generation options, effects, etc.
├── configured_carver carver cave definitions.
├── configured_feature configuration of features.
├── density_function math to calculate a value for each position in the world.
├── noise size and amplitudes of a noise.
├── noise_settings terrain shape (noise caves) and main terrain block types.
├── placed_feature placement of features within a chunk.
├── processor_list post-processing of blocks in structures.
├── structure structure generation and allowed biomes.
├── structure_set distribution of a set of structures within the world.
├── template_pool a set of templates (structure files) for jigsaw structures.
├── world_preset sets of dimensions selectable in the Create World screen.
├── flat_level_generator_preset presets for the "Superflat" world type.
└── multi_noise_biome_source_parameter_list preset name for the multi-noise biome layout.
Quick reference: required vs. optional
| Path | Required? | Reloadable with /reload? |
|---|---|---|
pack.mcmeta | Yes — the only mandatory file | n/a |
pack.png | No | n/a |
data/<namespace>/function | No | Yes |
data/<namespace>/structure | No | Yes |
data/<namespace>/tags/... | No | Yes |
data/<namespace>/loot_table | No | Yes |
data/<namespace>/recipe | No | Yes |
data/<namespace>/advancement | No | Yes |
data/<namespace>/item_modifier | No | Yes |
data/<namespace>/predicate | No | Yes |
any * folder (above) | No | No — exit/reopen world or reboot server |
Reminder.
tagsis the one plural folder (it holds tag types, one sub-folder each). Everything inside it, and every other registry folder, is singular. If a folder you need isn’t in this tree, it isn’t a data pack folder: double-check the spelling against the list above.
Source: the Data pack page of the Minecraft Wiki (Java Edition 26.2),
“Folder structure” section. Every folder name, purpose, and * mark is taken
directly from that list.