Packs

Back to PackEngine

Layout

A pack is a folder or zip in .minecraft/packengine/. Each item is one .json file in its items/ folder, and each armor piece is one file in armor/.

my_pack/
|-- pack.json
|-- items/medkit.json
|-- armor/field_helmet.json
|-- geo/item/medkit.geo.json
|-- geo/armor/field_helmet.geo.json
|-- textures/item/medkit.png
|-- animations/item/medkit.animation.json
`-- sounds/medkit_use.ogg

The folder or zip name is the pack’s namespace, so the model above is my_pack:geo/item/medkit.geo.json.

You don’t need a sounds.json. PackEngine writes the sound definitions itself for every .ogg file under sounds/.

pack.json

{
  "format_version": 1,
  "name": "My Pack",
  "description": "Optional text",
  "version": "1.0.0",
  "required_mods": []
}
Field Default Meaning
format_version 1 A pack with a newer version than PackEngine supports is rejected, so it can’t be read wrongly.
name, description, version none Kept as pack metadata.
required_mods empty Mod IDs that must all be loaded. If one is missing the pack is skipped and the log says why.

Recipes, tags and other data

Folder and zip packs are also loaded as data, so recipes and tags can sit next to the items. Put them in recipes/ (recipe/ on 1.21 and later), tags/items/ (tags/item/ on 1.21 and later), curios/ and so on. They load in the pack’s namespace like a data pack would.

Packs inside a mod jar

A mod can ship a pack inside its own jar:

assets/my_mod/packengine/pack.json
assets/my_mod/packengine/items/medkit.json
assets/my_mod/packengine/armor/field_helmet.json
assets/my_mod/geo/item/medkit.geo.json
assets/my_mod/textures/item/medkit.png
assets/my_mod/animations/item/medkit.animation.json
assets/my_mod/sounds.json
assets/my_mod/sounds/medkit_use.ogg

These go through Minecraft’s normal resource loading, which means two differences from folder packs:

A mod can also have PackEngine scan a folder of its own. See Addon pack folders.