Data pack

The data pack system provides a way for players to further customize their Minecraft experience. Data packs can be used to override or add new advancements, dimensions, functions, loot tables, predicates, recipes, structures, tags, world generation settings, and biomes without any code modification.

Usage
Data packs can be placed in the .minecraft/saves/(world)/datapacks folder of a world. Each data pack is either a sub-folder or a .zip file within the datapacks folder. After it is in the folder, a data pack is enabled for that world when the world is reloaded or loaded.

Data packs load their data based on the load order. This order can be seen and altered by using the command and is stored in the  file.

The player can also select data packs at the world creation screen by clicking the Data Packs button and dragging-and-dropping their data pack folders/zip-files there. This is similar to the Resource Pack selection screen, and allows the player to enable data packs before the world is generated, and easily customize the load order too.

Folder structure
More than one directory for different namespaces may exist under the directory.

pack.mcmeta
A data pack is identified by Minecraft based on the presence of the pack.mcmeta file in the root directory of the data pack, which contains data in JSON format.


 * The root object.
 * Holds the data pack information.
 * A JSON text that appears when hovering over the data pack's name in the list given by the /datapack list command, or when viewing the pack in the Create World screen.
 * : Pack version. If this number does not match the current required number, the data pack displays a warning and requires additional confirmation to load the pack. See for a full list of pack format numbers.
 * (1.19+) If any of files in packs added before one with filter section matches any pattern inside block, it will be filtered out (i.e. treated as if it wasn’t present in the first place). It does not apply to a pack containing it - only to packs loaded before it.
 * list of patterns to block from previous datapack.
 * regular expression for the namespaces. If omited, will matches every value.
 * regular expression for the paths. If omited, will matches every value. Can be a list of multiple entries.
 * regular expression for the paths. If omited, will matches every value. Can be a list of multiple entries.

pack.mcmeta, as used by the "vanilla" data pack in 1.19, as found in the client and official server jars:

data
This folder contains all the data under one or multiple namespaces. It can contain advancements, dimension, dimension_type, functions, loot_tables, predicates, recipes, structures, tags and/or worldgen, folders. The worldgen folder can contain biome, configured_carver, configured_feature, density_function, flat_level_generator_preset, noise, noise_settings,  placed_feature,  processor_list,  structure,  structure_set, template_pool and world_preset folders.

The dimension, dimension_type and worldgen folders are currently experimental features.

Each advancement, function, loot table, predicate, structure, recipe and tag file can be placed directly in their respective folder but sub-folders are also allowed.

Pack format
The table below describes the version range using each pack format number:

Template
The folder structure of the vanilla data pack: