Effects
What a skin does beyond looking different: the equip and unequip effects, the ambient it repeats while worn, and the set bonus for wearing every piece it fits.
Every skin may declare an effects block. All of it is optional, and a skin with none simply looks
different and does nothing else.
skins:
inferno:
effects:
on-equip:
sound:
name: ITEM_ARMOR_EQUIP_NETHERITE
volume: 0.8
pitch: 1.2
title:
text: '{warning}&lINFERNO'
subtitle: '{letters}The armour burns'
on-unequip:
sound:
name: BLOCK_FIRE_EXTINGUISH
ambient:
particle: 'FLAME|5|0.3|0'
sound: ''
interval: 1.0
radius: 32.0
set:
on-complete:
sound:
name: ITEM_FIRECHARGE_USE
volume: 1.0
pitch: 1.4
on-break: {}
ambient:
particle: 'FLAME|4|0.4|0.01'
sound: ''
interval: 0.25
radius: 32.0| Block | When it runs |
|---|---|
on-equip / on-unequip | The moment a piece with this skin goes on or comes off. |
ambient | Repeated at each worn piece, at that piece's own height. |
set | Once every piece the skin fits is worn with it — see Set bonus. |
on-equip and on-unequip
Both are standard ExyliaLib effects, so each one may carry any combination of six sections. They are played to the wearer.
| Section | Keys |
|---|---|
title | text, subtitle, fade-in, stay, fade-out, countdown, time-style |
action-bar | text, duration, countdown, time-style |
boss-bar | text, colour, overlay, countdown, count-up, progress, time-style |
sound | name, volume, pitch, category |
particle | name, count, spread, speed |
firework | colours, fades, shape, flicker, trail |
A section that says nothing is left out of the file entirely, which is why the default skins.yml
shows no sound: block under on-equip. Write the section by hand and it is read from then on. The
full reference lives in the ExyliaLib effects module.
on-equip plays when a piece is equipped or when its skin changes on the body. Joining, respawning,
changing world, /armorskinsadmin refresh and /armorskinsadmin reload all rebuild the visual silently — a
player logging in is not greeted by four titles.
ambient
Repeated for as long as the piece is worn.
| Key | Default | What it is |
|---|---|---|
particle | '' | NAME|count|spread|speed. Empty for none. |
sound | '' | NAME|volume|pitch. Empty for none. |
interval | 1.0 | Seconds between repetitions. Values below 0.05 are raised to it. |
radius | 32.0 | Blocks around the player that can see or hear it. Values below 1.0 are raised to it. |
Both lines are pipe-separated, and a namespaced key survives because the colon is never a separator:
minecraft:flame|10|0.4|0.01 is valid. The particle line also accepts the longer
NAME|count|dx|dy|dz|speed form when you want the spread to differ per axis.
Where it plays
At the wearer's feet plus the height of the piece the skin is on, so four skinned pieces are four different heights:
| Piece | Height |
|---|---|
helmet | 1.7 |
chestplate | 1.2 |
leggings | 0.7 |
boots | 0.2 |
What it costs
One repeating task per worn piece that declares an ambient, bound to the player's entity so Folia is happy and so it dies with them. It is cancelled the moment the piece comes off, the skin changes, or the player quits; nothing survives a plugin disable.
The floor exists so a typo cannot ask for less, not as an invitation. A particle once a second on a chestplate is what the defaults are shaped for.
Set bonus
effects.set fires when a player wears every piece the skin fits with that same skin. For a skin
with an empty pieces list that means all four; for golden_sentry, which fits only the helmet and
the chestplate, two pieces complete the set.
| Key | What it is |
|---|---|
on-complete | An effect played once, the moment the set becomes complete. |
on-break | An effect played once, the moment it stops being complete. |
ambient | The same four keys as the per-piece ambient, played around the player at a fixed height of 1.0 while the set holds. |
The set is judged from the topmost skinned piece downwards: whatever skin sits in the first occupied
slot is the only one that can complete. Three inferno pieces and an ocean helmet complete nothing.
The set ambient is a single timer per player, on top of the per-piece ones. It is cancelled the tick the set breaks, when the wearer quits, and on disable.
What the defaults ship
Every shipped skin now carries the full show: a sound as it goes on, a particle around the body
while the set holds, an action bar line — ✦ Full set » <NAME> — when it closes and
✧ Set broken when it ends.
| Skin | Set ambient particle | Interval | on-equip sound | on-complete sound |
|---|---|---|---|---|
rainbow | NOTE|3|0.5|0 | 0.5 s | BLOCK_NOTE_BLOCK_CHIME | ENTITY_PLAYER_LEVELUP |
pastel | END_ROD|2|0.4|0 | 0.5 s | BLOCK_AMETHYST_BLOCK_CHIME | BLOCK_AMETHYST_BLOCK_CHIME |
inferno | FLAME|4|0.4|0.01 | 0.25 s | ITEM_FIRECHARGE_USE | ENTITY_BLAZE_SHOOT |
ocean | BUBBLE_POP|3|0.4|0 | 0.3 s | AMBIENT_UNDERWATER_ENTER | ENTITY_DOLPHIN_SPLASH |
heartbeat | HEART|1|0.3|0 | 1.2 s | ENTITY_WARDEN_HEARTBEAT | ENTITY_WARDEN_HEARTBEAT |
toxic | SNEEZE|2|0.4|0.02 | 0.4 s | ENTITY_CREEPER_HURT | ENTITY_CREEPER_PRIMED |
galaxy | END_ROD|2|0.5|0.01 | 0.4 s | BLOCK_PORTAL_TRIGGER | BLOCK_END_PORTAL_FRAME_FILL |
aurora | GLOW|3|0.5|0 | 0.4 s | BLOCK_AMETHYST_CLUSTER_PLACE | BLOCK_BEACON_ACTIVATE |
ember | SMALL_FLAME|3|0.4|0.01 | 0.4 s | BLOCK_FIRE_AMBIENT | ITEM_FIRECHARGE_USE |
voltage | ELECTRIC_SPARK|4|0.4|0.05 | 0.25 s | BLOCK_COPPER_BULB_TURN_ON | ENTITY_LIGHTNING_BOLT_IMPACT |
tempest | CLOUD|3|0.5|0.02 | 0.4 s | ENTITY_BREEZE_WIND_BURST | ENTITY_LIGHTNING_BOLT_THUNDER |
sakura | CHERRY_LEAVES|3|0.5|0 | 0.4 s | BLOCK_CHERRY_WOOD_PLACE | BLOCK_NOTE_BLOCK_CHIME |
shogun | CRIT|3|0.4|0.05 | 0.5 s | ITEM_ARMOR_EQUIP_NETHERITE | ENTITY_PLAYER_ATTACK_SWEEP |
dragonfire | LAVA|2|0.4|0 | 0.35 s | ENTITY_ENDER_DRAGON_FLAP | ENTITY_ENDER_DRAGON_SHOOT |
void_dragon | DRAGON_BREATH|3|0.5|0.01 | 0.35 s | ENTITY_ENDER_DRAGON_GROWL | ENTITY_ENDER_DRAGON_GROWL |
frostbite | SNOWFLAKE|4|0.5|0.01 | 0.4 s | BLOCK_POWDER_SNOW_STEP | BLOCK_GLASS_BREAK |
neon | GLOW|3|0.4|0 | 0.3 s | BLOCK_BEACON_POWER_SELECT | BLOCK_BEACON_POWER_SELECT |
verdant | FALLING_SPORE_BLOSSOM|2|0.5|0 | 0.5 s | BLOCK_MOSS_PLACE | BLOCK_AZALEA_PLACE |
bloodmoon | CRIMSON_SPORE|4|0.5|0 | 0.4 s | ENTITY_WOLF_GROWL | ENTITY_WOLF_HOWL |
celestial | WAX_ON|3|0.5|0 | 0.4 s | BLOCK_AMETHYST_BLOCK_CHIME | ITEM_TOTEM_USE |
Every one of them uses a radius of 32 blocks, an equip sound at volume 0.8 and a completion sound at
volume 1.0, pitch 1.4, category PLAYERS. on-break is the same everywhere:
BLOCK_BEACON_DEACTIVATE at volume 0.7 with the broken-set line.
Changing straight from a complete inferno set to a complete ocean set plays ocean's
on-complete but not inferno's on-break — the break line is for a set that actually ended.
Applying and removing
Putting a skin on and taking it off play their own effect, and those two live in config.yml rather
than on the skin, because they belong to the system:
effects:
on-apply:
sound:
name: BLOCK_SMITHING_TABLE_USE
volume: 1.0
pitch: 1.2
on-remove:
sound:
name: BLOCK_GRINDSTONE_USE
volume: 1.0
pitch: 1.0Both are full ExyliaLib effects, both are played to the player who did it, and both only fire on a successful drag in the inventory — a refused apply plays nothing, and the API plays nothing either.
Something missing on this page? Tell us on Discord