Pack Structure
Pack Structure
This page shows the current on-disk layout for a normal SkinEngine pack and explains what each part is expected to contain.
Root folder
SkinEngine reads packs from:
/plugins/SkinEngine/packs/
Each custom pack lives in its own folder:
/plugins/SkinEngine/packs/my_pack/
Normal custom pack
my_pack/
├ pack.yml
├ configs/
│ ├ skins/
│ │ ├ first_skin.yml
│ │ └ second_skin.yml
│ ├ images.yml
│ └ decorative_items.yml
└ resourcepack/
├ skins/
│ ├ first_skin/
│ └ second_skin/
├ images/
└ decorative_items/
Think of the layout in layers:
pack.ymlis the pack headerconfigs/contains definitionsresourcepack/contains the actual assets those definitions point to
What a healthy pack usually expects
In practice, creators normally want all of these:
- one
pack.yml - at least one file in
configs/skins/ - one or more folders in
resourcepack/skins/ - optional
configs/decorative_items.ymlif the pack uses custom GUI item-models - optional
configs/images.ymlif the pack uses title graphics, image tokens, or PlaceholderAPI image output
SkinEngine does not require every optional system to exist, but it does expect every referenced file path to stay inside the correct pack folder and to point to a real file.
Reserved skinengine pack
skinengine is a reserved internal pack used by the plugin for built-in images and decorative assets.
Do not use it as a normal custom content pack.
pack.yml
pack.yml defines the pack entry shown in the GUI.
Current fields used by the plugin include:
display.namedisplay.descriptionicon.materialicon.item-modelicon.nameicon.loreicon.hide-tooltipicon.item-flags
Important:
- the real pack id is the folder name
- SkinEngine does not use an
id:field frompack.ymlas the canonical pack id
Full details: Pack Metadata
configs/skins/*.yml
Each file defines one skin.
More details:
configs/images.yml
Defines managed single images and bitmap atlases used by GUI titles, image tokens, and PlaceholderAPI image output.
More details: Font Images
configs/decorative_items.yml
Defines decorative item assets that can be referenced through {$decorative:pack_id_item_id} tokens in GUI item-model fields.
Full details: Decorative Items
resourcepack/skins/
Contains the content folders referenced by each skin's content.folder.
Example:
resourcepack/skins/frostfall/
├ sword.png
├ bow.png
├ bow_pulling_0.png
├ bow_pulling_1.png
├ bow_pulling_2.png
├ shield.json
├ shield_blocking.json
├ elytra.png
├ elytra_wings.png
├ armor_layer_1.png
└ armor_layer_2.png
This folder is where SkinEngine expects:
- main item resources
- optional state resources such as
pulling,charged,firework,blocking,cast,throwing,broken, orwings - armor textures for armor skins
resourcepack/images/
Contains the PNG files referenced by configs/images.yml.
This folder is only for font-backed image assets, not skin item textures and not decorative item-model assets.
resourcepack/decorative_items/
Contains the PNG or JSON files referenced by configs/decorative_items.yml.
This folder is only for decorative item-model content, usually pack icons, GUI buttons, fillers, and helper models.