Example Custom Pack
Example Custom Pack
This example reflects the current pack layout used by the plugin.
Folder layout
/plugins/SkinEngine/packs/frostfall/
├ pack.yml
├ configs/
│ ├ skins/
│ │ ├ frostblade.yml
│ │ └ frostguard.yml
│ ├ images.yml
│ └ decorative_items.yml
└ resourcepack/
├ skins/
│ └ frostfall/
│ ├ sword.png
│ ├ mace.png
│ ├ trident.json
│ ├ trident_throwing.json
│ ├ axe.png
│ ├ bow.png
│ ├ bow_pulling_0.png
│ ├ bow_pulling_1.png
│ ├ bow_pulling_2.png
│ ├ crossbow.png
│ ├ crossbow_pulling_0.png
│ ├ crossbow_pulling_1.png
│ ├ crossbow_pulling_2.png
│ ├ crossbow_charged.png
│ ├ crossbow_firework.png
│ ├ fishing_rod.png
│ ├ fishing_rod_cast.png
│ ├ shield.json
│ ├ shield_blocking.json
│ ├ spear.png
│ ├ elytra.png
│ ├ elytra_broken.png
│ ├ elytra_wings.png
│ ├ helmet.png
│ ├ chestplate.png
│ ├ leggings.png
│ ├ boots.png
│ ├ armor_layer_1.png
│ └ armor_layer_2.png
├ images/
│ ├ icons/
│ │ └ logo.png
│ └ titles_en.png
└ decorative_items/
├ info.png
├ next.png
└ back.png
pack.yml
display:
name: "<aqua>Frostfall</aqua>"
description:
- "<gray>A cold-themed skin pack.</gray>"
icon:
material: PAPER
item-model: "{$decorative:frostfall_info}"
name: "<aqua>Frostfall</aqua>"
lore:
- "<gray>Open the Frostfall pack.</gray>"
# If the icon config is wrong, the pack still loads.
# SkinEngine falls back to the icon material, then to CHEST if needed.
This file is explained in more detail here:
Tool and ranged skin example
configs/skins/frostblade.yml
id: "frostblade"
display:
name: "<aqua>Frostblade</aqua>"
description:
- "<gray>An icy weapon set.</gray>"
content:
folder: "frostfall"
items:
sword:
materials:
- iron
- diamond
- netherite
type: generate
cost: 500
particle:
effect: CRIT
resources:
main: "sword.png"
mace:
type: generate
resources:
main: "mace.png"
trident:
resources:
main: "trident.json"
throwing: "trident_throwing.json"
axe:
materials:
- iron
- diamond
- netherite
type: generate
resources:
main: "axe.png"
bow:
type: generate
resources:
main: "bow.png"
pulling:
- "bow_pulling_0.png"
- "bow_pulling_1.png"
- "bow_pulling_2.png"
crossbow:
type: generate
resources:
main: "crossbow.png"
pulling:
- "crossbow_pulling_0.png"
- "crossbow_pulling_1.png"
- "crossbow_pulling_2.png"
charged: "crossbow_charged.png"
firework: "crossbow_firework.png"
fishing_rod:
type: generate
resources:
main: "fishing_rod.png"
cast: "fishing_rod_cast.png"
shield:
resources:
main: "shield.json"
blocking: "shield_blocking.json"
spear:
materials:
- wooden
- iron
- diamond
type: generate
resources:
main: "spear.png"
elytra:
cost: 900
particle:
effect: END_ROD
resources:
main: "elytra.png"
broken: "elytra_broken.png"
wings: "elytra_wings.png"
In that elytra example:
elytra.pngis the normal item textureelytra_broken.pngis the optional broken item textureelytra_wings.pngis the wings texture used when the player is actually wearing the elytra
configs/skins/frostguard.yml
id: "frostguard"
display:
name: "<aqua>Frostguard</aqua>"
description:
- "<gray>Heavy frozen armor.</gray>"
content:
folder: "frostfall"
armor:
layer_1: "armor_layer_1.png"
layer_2: "armor_layer_2.png"
particle:
effect: DUST
data:
color: "#8FE9FF"
size: 1.2
items:
helmet:
materials: "all"
resources:
main: "helmet.png"
chestplate:
materials: "all"
resources:
main: "chestplate.png"
leggings:
materials: "all"
resources:
main: "leggings.png"
boots:
materials: "all"
resources:
main: "boots.png"
Managed image example
configs/images.yml
bitmaps:
titles_en:
resource: "titles_en.png"
rows: 4
columns: 1
ascent: 20
height: 20
images:
logo:
resource: "icons/logo.png"
ascent: 8
height: 8
title_main:
bitmap:
id: "titles_en"
row: 1
column: 1
This system is explained in:
Decorative item example
configs/decorative_items.yml
info:
material: PAPER
type: generate
resource: "info.png"
next:
material: PAPER
type: generate
resource: "next.png"
back:
material: PAPER
type: generate
resource: "back.png"
This system is explained in:
After editing the pack:
- reload or restart
- run
/se zip - verify delivery or merge output
Why this example is split this way
This example shows the real SkinEngine pattern:
- skins live in skin files and use
resourcepack/skins/ - decorative item-model helpers live in
decorative_items.yml - title and inline text graphics live in
images.yml
Keeping those separate is what makes larger packs maintainable.