🎯 Select Your Minecraft Version
Choose your Minecraft version to get the correct pack format and features
Latest format with minor version support
Current stable format
Stable with cloud height support
Major overhaul with component changes
TNT minecart and furnace changes
Attribute and component updates
Data-driven enchantments
Item components and recipe changes
Text parsing and grass renaming
Function macros introduced
Sign NBT and advancement changes
Damage types added
Filter sections and locate merge
Structure location changes
Loot function string requirements
Replace item command changes
Custom world generation added
Predicates introduced
Initial data pack format
🚀 Data Pack Creation Tutorial
Follow these steps to create your first Minecraft data pack
Setting Up Your Data Pack
📂 Finding Your World Directory
🪟 Windows
Press Win + R, type %APPDATA%\.minecraft\saves\(your world)
🍎 macOS
Press Cmd + Shift + G, navigate to ~/Library/Application Support/minecraft/saves/(your world)
🐧 Linux
Press Ctrl + L, navigate to ~/.minecraft/saves/(your world)
📁 Required Folder Structure
Creating pack.mcmeta
⚙️ Understanding pack.mcmeta
The pack.mcmeta file is the only mandatory file in your data pack. It tells Minecraft about your pack's compatibility and description.
⚠️ Important Notes
- File must be named exactly
pack.mcmeta
(not .txt!) - Check file extensions are visible in your OS
- JSON syntax must be perfect (brackets, commas, quotes)
- Use the version selector above to get the correct format
- 💡 You can use § symbol in description for color codes!
- ⚙️ supported_formats is optional (1.20.2+) but recommended
Creating Your Namespace
🏷️ Creating Your Namespace
Namespaces prevent conflicts between different data packs and organize your content effectively.
📝 Naming Rules
my_awesome_pack
skyblock_tools
My Awesome Pack
(spaces not allowed)
minecraft
(reserved namespace)
🎯 Best Practices
- Use lowercase letters, numbers, underscores, hyphens
- Make it unique and descriptive
- Avoid "minecraft" namespace (reserved for vanilla)
- Use your username or project name
Adding Content
📝 Adding Your First Content
Start with a simple function to test your data pack setup.
⚡ Create Your First Function
File: data/your_namespace/function/hello.mcfunction
# My first data pack function say Hello from my data pack! give @s diamond 1 title @s title {"text":"Welcome!","color":"gold"}
🧪 Testing Your Data Pack
/reload
Reload all data packs
/datapack list
Show all loaded data packs
/function your_namespace:hello
Run your function
📚 Data Pack Content Types
Explore different types of content you can create in your data pack
Functions
BeginnerCommand sequences that can be executed
function
.mcfunction
Loot Tables
IntermediateDefine what drops from mobs or containers
loot_table
.json
Recipes
BeginnerCustom crafting and smelting recipes
recipe
.json
Advancements
IntermediateAchievement system with rewards
advancement
.json
Structures
AdvancedCustom building structures
structure
.nbt
World Generation
ExpertCustom terrain and biome generation
worldgen
.json
Tags
BeginnerGroup items, blocks, or entities
tags
.json
Predicates
AdvancedConditions for commands and loot tables
predicate
.json
🚀 Advanced Data Pack Features
🔄 Function Macros
Dynamic functions with parameters (1.20.2+)
$execute as $(player) run say Hello $(message)
🎨 Custom Enchantments
Data-driven enchantments (1.21+)
data/namespace/enchantment/custom.json
🌍 Dimension Creation
Custom dimensions and world generation
/execute in namespace:custom_dimension
🏗️ Structure Placement
Custom structures and jigsaw blocks
/place structure namespace:castle
⚠️ Important Version Changes
Critical changes that affect data pack compatibility
🚨 Folder Naming Changes (1.21)
Old → New
recipes/
→recipe/
loot_tables/
→loot_table/
functions/
→function/
Action Required: Update folder names when upgrading to 1.21+
📝 Recipe Format Changes (1.20.5)
Result Object Syntax
Old: "result": {"item": "minecraft:diamond"}
New: "result": {"id": "minecraft:diamond"}
Action Required: Update all recipe files
🎨 Pack Icon Support
pack.png Icon
- Optional 128×128px PNG image
- Place next to pack.mcmeta
- Square aspect ratio (1:1)
- Shows in data pack selection screen
🧪 Testing Commands
Essential Commands
/reload
- Reload all data packs/datapack list
- Show loaded data packs/datapack enable "file/pack_name"
- Enable pack/datapack disable "file/pack_name"
- Disable pack
🔧 Troubleshooting Common Issues
❌ Data Pack Not Loading
Common Causes:
- Incorrect pack.mcmeta syntax
- Wrong folder structure
- Invalid pack_format
- Missing .mcmeta extension
Solutions:
- Check JSON syntax in pack.mcmeta
- Verify folder names are lowercase
- Use correct pack format for your version
- Ensure file extensions are visible
⚠️ Functions Not Working
Common Causes:
- Wrong file extension (.txt instead of .mcfunction)
- Incorrect namespace in command
- Command syntax errors
- Functions in wrong folder (use function/ not functions/)
Solutions:
- Ensure file has .mcfunction extension
- Use /function namespace:filename
- Test commands individually first
- Check for folder naming (1.21+ changes)