Pack Metadata Workflow
Use this skill for Create Delight Project Rebirth pack metadata work.
Repository Rules
- Treat the repository as modpack source, not a completed Minecraft instance.
- Do not commit mod jars, generated NeoForge libraries, worlds, logs, crash reports, or local server state.
- Track bkmpw/packwiz-style metadata:
*.pw.toml, the root.packwizignore, and the release-root templates inpack/. - Root
pack.tomlandindex.tomlare generated local files. - In this repository, use the root
devtool.batentry point on Windows, or./devtool.shon Linux/macOS, first. It calls the global npmbkmpwcommand from@bro-know-my/packwiz. - Do not vendor pack management binaries. Install
bkmpwglobally withnpm install -g @bro-know-my/packwizordevtool.bat setup-tools. - Do not reintroduce
packwiz.exe,packwiz-old.exe,packwiz-installer-bootstrap.jar, or their VERSION files. - Run
devtool.bat refreshafter adding, removing, moving, or editing pack files.
Common Commands
From the repository root:
devtool.bat check
devtool.bat setup-tools
devtool.bat refresh
devtool.bat list
devtool.bat update --all
devtool.bat add-curseforge <project>
devtool.bat add-url <side> <name> <filename> <url> <sha256>
devtool.bat add-github <owner/repo-or-url>
devtool.bat remove-mod <name-or-metadata-file>
devtool.bat install-files
devtool.bat install-files-headless
devtool.bat install-files-retry
devtool.bat download-files
devtool.bat modlist
devtool.bat generate-integrity-manifest
devtool.bat export-client
devtool.bat export-curseforge
devtool.bat export-server
devtool.bat export-server-installer
Removed commands are intentional: do not use install-packwiz, add-modrinth, detect-curseforge, serve, or export-modrinth.
Workflow
- Inspect
pack/pack.toml, root.packwizignore,.gitignore, and generatedindex.tomlwhen present. - Use
devtool.bat checkbefore changing pack metadata. - Add mods through
devtool.bat add-*orbkmpwcommands, not by copying jars intomods/. - Keep descriptors under the expected folders:
mods/*.pw.tomlfor newly added mod metadata before manual side placement.mods/common/*.pw.tomlfor common mods.mods/client/*.pw.tomlfor client-only mods.mods/server/*.pw.tomlfor server-only mods.resourcepacks/*.pw.tomlshaderpacks/*.pw.toml
- Runtime mod jars stay in
mods/*.jar, not undermods/common,mods/client, ormods/server. - Run
devtool.bat refresh. - Review
pack/pack.toml, root.packwizignore, and any generated*.pw.tomlbefore finalizing. - Verify git ignores:
git check-ignore --quiet mods/example.jar
git check-ignore --quiet mods/example.pw.toml
mods/example.jar should be ignored. mods/example.pw.toml should be trackable.
devtool.bat add-*, devtool.bat update, and devtool.bat remove-mod auto-run refresh; run refresh manually after direct file edits or moves.
Local Sync And Downloads
Use devtool.bat install-files or devtool.bat install-files-headless to synchronize managed files through bkmpw.
Use devtool.bat download-files to download missing files referenced by metadata. This command:
- downloads missing files only by default
- supports
--forceto overwrite existing files - validates hashes when metadata provides a supported hash
- never deletes unrelated local files
Cleanup commands only clean files recorded in the previous bkmpw:1 packwiz.json manifest under mods/, resourcepacks/, and shaderpacks/. Manual jars that were never recorded in that manifest must not be deleted.
Mod List
Use devtool.bat modlist to generate human-readable mod lists from metadata.
Default outputs:
docs/generated/modlist.mddocs/generated/modlist.csv
The command is for review/documentation. Do not treat generated lists as the source of truth; metadata remains authoritative.
Pack Integrity Manifest
The pack has a client-side mod list integrity warning. Keep these files together:
scripts/pack-integrity.mjs: release-time manifest generation helpers.scripts/devtool.mjs: exposesgenerate-integrity-manifest; direct runtime exports call it before refresh/export.kubejs/config/createdelight_pack_integrity_expected.json: generated expected mod id manifest.kubejs/config/createdelight_pack_integrity.json: runtime config, includingallowedExtraModIds.kubejs/client_scripts/pack_integrity_check.js: client runtime check and title-screen warning.
Generation workflow:
devtool.bat install-files
devtool.bat generate-integrity-manifest
Manifest generation scans mods/**/*.pw.toml, resolves managed jars from local mods/*.jar, and extracts actual loaded mod ids from META-INF/neoforge.mods.toml, META-INF/mods.toml, compatible fabric.mod.json, and nested jars. It records expected ids by common, client, and server side. If a managed jar is missing or cannot be parsed, the command should fail and tell the user to synchronize files first.
Runtime check behavior:
- Client compares
expected.common + expected.clientagainstPlatform.getList(). - Reports are written to
logs/createdelight_pack_integrity.json. - KubeJS logs missing mods, extra mods, and allowed extra mods.
- Title-screen warning state is stored in
local/createdelight_pack_integrity_state.json; delete this local file to force the same fingerprint warning again during testing. - This is diagnostics only, not tamper resistance.
Known export caveat:
devtool.bat export-curseforge ... client currently exports a CurseForge-style manifest.json plus overrides. CurseForge manifests only express CurseForge projectID/fileID entries. URL-managed jars are not automatically represented unless the export flow places them under overrides/mods/.
As of the pack-integrity work, a client test export installed without manual changes reported these missing URL-managed common mods:
collectorsreapmutilsilentsdelighttetravintagedelight
Those jars existed in the source workspace but were absent from the installed test instance and from overrides/mods/ in the exported zip. Treat this as a packaging-flow issue, not a false positive in the integrity checker. The investigation was recorded on GitHub issue #12.
Release Exports
The devtool wraps the current bkmpw export commands:
Before release exports, run devtool.bat setup-tools and devtool.bat check; confirm bkmpw is current with npm.
devtool.bat export-client [output.zip] [root-dir]
devtool.bat export-curseforge [output.zip] [client|server|both]
devtool.bat export-server [output.zip]
devtool.bat export-server-installer [output.zip]
- Menu option 13 uses
export-curseforgefor the client CurseForge installer package. - Menu option 14 uses
export-clientfor a full client package with bundled client/common runtime jars. The default output isclient-full.zip.roots/commonandroots/clientare overlaid onto the instance root. - Menu option 15 uses
export-serverfor a direct-use server zip with bundled server/common runtime jars and server-applicable files. The default output isserver-pack.zip.roots/commonandroots/serverare overlaid onto the zip root. - Menu option 16 uses
export-server-installerfor a download-based server installer zip with metadata and install scripts, but no runtime jars and no bundled local bkmpw binary. The install scripts download bkmpw from the GitHub latest release. The default output isserver-installer.zip.
export-client, export-server, and export-curseforge run the pack integrity manifest generator first. export-server-installer does not require local runtime jars, so update kubejs/config/createdelight_pack_integrity_expected.json separately after mod list changes before producing an installer package.
Root overlay files are tracked source files:
roots/common/: overlaid into both client and server roots.roots/client/: overlaid only into theexport-clientinstance root.roots/server/: overlaid intoexport-serverandexport-server-installerroots.
If roots/common and the target-side overlay contain the same path, the target-side file wins. Export outputs do not preserve the roots/ prefix.
Ignore Policy
Keep these ignored:
mods/*.jar*.mrpack- generated export zips
libraries/,versions/,downloads/logs/,crash-reports/,saves/,world*run.bat,run.sh,user_jvm_args.txt,server.properties,eula.txtneoforge.jar,minecraft_server*.jar
Do not allow vendored pack management binaries. Keep scripts/bin/ ignored.
Allow these when relevant:
mods/*.pw.tomlmods/common/*.pw.tomlmods/client/*.pw.tomlmods/server/*.pw.toml- curated config/KubeJS/resource files
Create Delight Project Rebirth Notes
- Target Minecraft:
1.21.1 - Target NeoForge:
21.1.242 - Required Java:
21 - Windows, Linux, and macOS are supported for pack maintenance through the Node-based devtool.
- Source reference repository:
Create-Delight-RemakeForge1.20.1 - Do not bulk-copy old KubeJS/configs without checking target mod availability, IDs, loader API, and config schema changes.
Validation
Before finishing, run:
devtool.bat check
devtool.bat refresh
git status --short --untracked-files=all
Root index.toml and pack.toml are generated local files; mention changes to tracked metadata source files instead.