| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A universal Minecraft datapack, resource pack and mod builder.
Pack-Packer allows developers to maintain a single source structure and automatically generate:
It supports template variables, automatic metadata generation, custom datagen scripts, and multi-loader packaging.
| Output | Description |
|---|---|
| Datapack | Pure Minecraft datapack .zip |
| Resource Pack | Pure Minecraft resource pack .zip |
| Forge Mod | Jar containing datapack/resourcepack |
| Fabric Mod | Jar with generated fabric.mod.json |
| NeoForge Mod | Jar with generated metadata |
| GitHub Release | Automatic artifact publishing |
A Pack-Packer project uses the following layout:
. ├── pack.yml ├── src/ │ ├── data/ │ │ ├── pack.mcmeta │ │ └── data/ │ │ └── <namespace>/ │ │ │ ├── assets/ │ │ ├── pack.mcmeta │ │ └── assets/ │ │ └── <namespace>/ │ │ │ ├── common/ │ │ ├── icon.png │ │ ├── LICENSE │ │ ├── README.md │ │ └── CHANGELOG.md │ │ │ └── generated/ │ ├── template/ │ ├── forge/ │ ├── fabric/ │ └── neoforge/ │ ├── scripts/ │ └── datagen/ │ ├── recipes.js │ └── tags.js │ ├── dist/ │ └── package.json
Install dependencies:
pnpm installRun:
pnpm run buildGenerated files:
dist/ ├── <id>-<version>-datapack.zip ├── <id>-<version>-resourcepack.zip ├── <id>-<version>-forge.jar ├── <id>-<version>-fabric.jar └── <id>-<version>-neoforge.jar
Pack-Packer uses pack.yml.
Example:
id: better_ores
name: Better Ores
version: 1.0.0
description: |
A Minecraft datapack and resource pack
that improves ore generation.
license: MIT
authors:
- MangoJellyPudding
contributors:
- name: Alex
contact:
homepage: https://example.com
github: alex
minecraft:
version: 1.21.1
pack_format:
data: 48
assets: 34
loaders:
forge:
enabled: true
version: 51.0.0
fabric:
enabled: true
version: 0.16.0
neoforge:
enabled: true
version: 21.1.0
build:
datapack: auto
resourcepack: auto
standalone:
datapack: true
resourcepack: true
mod: true
datagen:
enabled: true
output: src/generated
release:
enabled: true
draft: false
prerelease: falseTemplates are stored in:
template/ ├── forge/ ├── fabric/ └── neoforge/
Files inside templates support variables:
Example:
fabric.mod.json
{
"id": "${mod_id}",
"version": "${version}",
"name": "${mod_name}"
}During build:
${mod_id}
will become:
"better_ores"Variables come from:
Example:
variables:
display_url:
https://github.com/example/project
issue_tracker_url:
https://github.com/example/project/issuesUse:
{
"homepage": "${display_url}"
}fabric.mod.json requires valid JSON.
Pack-Packer automatically handles:
Input:
description: |
Line one
Line twoOutput:
{
"description":
"Line one\nLine two\n"
}Fabric supports:
[
"Author",
{
"name": "Developer",
"contact": {
"github": "user"
}
}
]Use:
authors:
- MangoJellyPudding
contributors:
- name: Alex
contact:
github: alexThe builder converts them automatically.
Datagen allows generating files through JavaScript.
Location:
scripts/datagen/
Example:
scripts/datagen/test.js
import { Datagen } from "../datagen.js";
Datagen.data(
"better_ores",
"recipe/test.json",
{
type: "minecraft:crafting_shaped"
}
);Generated:
src/generated/
└── data/
└── data/
└── better_ores/
└── recipe/
└── test.json
Automatically initialized by build.
Datagen.gen(
"path/file",
content
);Supports:
Example:
Datagen.gen(
"data/example/functions/load.mcfunction",
"say hello"
);Datagen.data(
namespace,
file,
content
);Example:
Datagen.data(
"example",
"loot_table/test.json",
{}
);Output:
generated/data/data/example/loot_table/test.json
Datagen.assets(
namespace,
file,
content
);Example:
Datagen.assets(
"example",
"models/item/test.json",
{}
);Output:
generated/assets/assets/example/models/item/test.json
Instead of:
Datagen.data(
"example",
"recipe/test.json",
{}
);Use:
const example =
Datagen.namespace("example");
example.data(
"recipe/test.json",
{}
);Pack-Packer supports automatic releases.
Workflow:
commit | tag | GitHub Actions | build | release
Create release tag:
git add .
git commit -m "release: v1.0.0"
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin main
git push origin v1.0.0GitHub Actions will create:
Release v1.0.0 Assets: better_ores-1.0.0-datapack.zip better_ores-1.0.0-resourcepack.zip better_ores-1.0.0-forge.jar better_ores-1.0.0-fabric.jar better_ores-1.0.0-neoforge.jar
Using GitHub Template:
Use this template
git clone <repository>pack.yml
src/data/ src/assets/
npm run buildRecommended:
node_modules/ dist/ src/generated/ *.log .DS_Store .idea/ .vscode/
GNU General Public License v3.0
| Back | FazBrowse Home | New Git URL |