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.yml is the pack header
  • configs/ contains definitions
  • resourcepack/ 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.yml if the pack uses custom GUI item-models
  • optional configs/images.yml if 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.name
  • display.description
  • icon.material
  • icon.item-model
  • icon.name
  • icon.lore
  • icon.hide-tooltip
  • icon.item-flags

Important:

  • the real pack id is the folder name
  • SkinEngine does not use an id: field from pack.yml as 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, or wings
  • 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.