What are you making?
Three rules that apply to all of it
Namespaced ids are the whole addressing system
Everything in Minecraft is namespace:name. Vanilla content lives in minecraft:; yours should live in a namespace nobody else will use. Writing into minecraft: overwrites the game and collides with the next pack the player installs.
The pack format number decides compatibility
Resource packs and data packs both carry a pack_format in pack.mcmeta, and it changes with almost every release. Most “my pack will not load” problems are this number.
Copy the shape of a file that already works
Every vanilla recipe, loot table, advancement and tag is listed on this wiki exactly as it ships in the version you are targeting. Reading one real file beats guessing at a schema.
The data you will be copying
Read straight out of the game files, so it matches the version exactly.
