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, functions, loot tables, predicates, structures, recipes and tags without any code modification.
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
/datapack command and is stored in the
- (data pack name)
More than one directory for different namespaces may exist under the
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.
- pack: Holds the data pack information.
- description: A JSON text that appears when hovering over the data pack's name in the list given by the
/datapack list command.
- pack_format: 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. The current pack version is 5.
pack.mcmeta used by the "vanilla" data pack in 1.15.2, as found in the client and official server jars
"description": "The default data for Minecraft"
This folder contains all the data under one or multiple namespaces. It can contain
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.
Folder structure of Vanilla Data Pack:
|1.13||17w43a||Added data packs.|
/datapack, a command to control loaded data packs.
|17w48a||Data packs can now load custom recipes.|
|17w49a||Tags can now be created with data packs.|
|17w49b||Tags can now be created for functions.|
|Functions tagged in |
tick now run every tick at the beginning of the tick.
set_name function to loot tables.
|Functions tagged in |
load now run once after a (re)load.
|Crash reports now list what data packs are enabled.|
|1.14||18w43a||Tags can now be created for entity types.|
predicates folder where predicates can be defined.
|Upcoming Java Edition|
|1.16||20w22a||Slightly changed datapack loading to prevent custom datapacks from crashing.
|If datapack reload fails, changes will not be applied and the game will continue using previous data.|
|Changes to datapack list are stored only after successful reload.|
|If existing datapacks prevent world from loading, the game will give option to load world in safe mode, which loads only vanilla datapack.|
|Added --safeMode option for servers to load only with vanilla datapack.|
|Game will now detect any critical datapack issues, such as required tags being missing, and prevent the world from being loaded.|
Issues relating to "Data pack" are maintained on the bug tracker. Report issues there.