Packaging & Installation
Package datapacks/resource packs correctly, install them in the right location, preserve stable identity, and avoid nested-ZIP releases.
Packaging is mostly about the ZIP root.
Before distribution, open the ZIP itself. Do not trust the filename. The first level should immediately contain the pack metadata and its data/ or assets/ folder.
Datapack ZIP
Correct
MyGame_Datapack_v1.0.0.zip ├─ pack.mcmeta └─ data/ └─ my_game/
Wrong
MyGame_Datapack_v1.0.0.zip └─ MyGame_Datapack_v1.0.0/ ├─ pack.mcmeta └─ data/
Resource-pack ZIP
MyGame_ResourcePack_v1.0.0.zip ├─ pack.mcmeta └─ assets/ └─ my_game/
A complete DAI game commonly ships a datapack ZIP and a separate companion resource-pack ZIP. The two artifacts can be presented as one combo in DAI's official pack system without physically nesting one inside the other.
Where packs go
| Artifact | Location | Meaning |
|---|---|---|
| DAI global datapack library | <gameDir>/datapacks/ | DAI MAIN/ADDON installation/update source. |
| Normal world-local datapack | <gameDir>/saves/<world>/datapacks/ | Standard Minecraft world datapack location. |
| Resource pack | <gameDir>/resourcepacks/ | Client presentation packs. |
Stable identity vs filename
The downloadable filename can change each release. The logical identity should not.
File: MyGame_v1.0.0.zip → dai.pack_id: "my_game" File: MyGame_v1.1.0.zip → dai.pack_id: "my_game" Same project identity; newer version.
Advance dai.version; keep dai.pack_id stable.
MAIN vs ADDON packaging
Declare the intended role in pack.mcmeta for new DAI projects:
"dai": {
"role": "main",
"pack_id": "my_game",
"version": "1.0.0"
}"dai": {
"role": "addon",
"pack_id": "my_addon",
"version": "1.0.0"
}Companion resource packs
For an auto-enabled companion, keep its stable companion identity even when the ZIP filename changes:
"dai": {
"auto_enable": true,
"companion_id": "my_game"
}Release checklist
- Open the final ZIP and confirm the root is correct.
- No editor backups, source PSDs, temporary logs, test exports or duplicate old files are included unless intentionally distributed.
- Fresh install works.
/reload/ save-reload path works where applicable.- Previous-version save migration works when the project has already shipped.
- Two-player test passes for multiplayer-capable systems.
- Optional resource pack can be disabled without breaking gameplay if it is advertised as optional.
- Changelog describes player-visible behavior and whether a fresh world is required.
- Official-pack registry entry is published only after every referenced download is actually public.
Drag-and-drop packaging rule
If you are distributing a site/repository patch instead of a Minecraft pack, mirror the repository root inside the ZIP. A patch containing dai/guides/... should be dropped at the site's repository root so those paths merge in place. Do not wrap it in another deployment folder.
Checkpoint
You are ready when you can inspect a ZIP without extracting it and immediately tell whether Minecraft/DAI will see the correct root files.