> For the complete documentation index, see [llms.txt](https://edseries-plugins.gitbook.io/p/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edseries-plugins.gitbook.io/p/edcosmetics/cosmetics/hats-wings.md).

# Hats & Wings

Both are `type: HAT` categories and need packetevents. They are only drawn on players' screens: they never replace the real helmet or chestplate, never exist on the server, and nothing changes in anybody's inventory. They hide while swimming, gliding, sleeping, in spectator and (optionally) while invisible.

## Hats

```yaml
type: HAT
cosmetics:
  crown:
    name: '&6Crown'
    item: PAPER                       # a material, itemsadder:ns:id, oraxen:id or nexo:id
    item-model: 'edcosmetics:astral_crystal_crown'   # optional namespace:key item model
    custom-model-data: 0              # optional
    material: PAPER                   # menu icon (defaults to the hat item)
    mode: slot                        # slot or display
    slot: head                        # head or offhand
```

| `mode`    |                                                                                                                                                                                                                                                                                                        |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `slot`    | Your helmet (`slot: head`) or off-hand (`slot: offhand`) **looks** like the item, for everyone and for you in F5 (creative included). The game draws it as a worn item: glued to the body, no lag. Your real items stay and keep their stats; the off-hand look only shows while the off-hand is empty |
| `display` | A client-side item display riding you. Extra keys: `scale` (1 = a helmet's size), `offset: { x, y, z }` (blocks, y = up), `rotation` (180 if the model faces backwards), `follow-pitch` (tilt with the head; false for capes and back pieces)                                                          |

The model's `head` display settings are used (`thirdperson_lefthand` for `slot: offhand`), exactly like vanilla draws that slot, so models made as ItemsAdder / Oraxen / Nexo wearables sit right with no changes.

Each HAT category equips one cosmetic: put head and off-hand pieces in separate HAT categories to wear them together.

`config.yml` → `hats`: `enabled`, `visible-to-self` (see your own hat in F5), `interpolation-ticks`, `hide-when-invisible`, `update-ticks` (display hats: ticks between pose updates), `rotation-threshold` (degrees of head turn before one is sent) and `view-distance` (blocks; 0 = everyone who sees the player).

## Wings (`slot: chest`)

Wings, capes and back pieces drawn by the pack's shader on the chestplate: your chestplate looks like "your real chestplate + the wings", for everyone and for you in F5. They flap (faster while running), fold while sneaking, glow, turn and lean with the body.

```yaml
halloween-wings:
  name: '&#FF7A1A&lHalloween Wings'
  mode: slot
  slot: chest
  equipment: 'edcosmetics:halloween_wings'      # the equipment asset in the resource pack
  item-model: 'edcosmetics:halloween_wings_icon' # icon, and what your chest slot shows with no chestplate
  material: PAPER
```

The pack ships **Halloween**, **Demon** and **Emerald Dragon** wings, each with a combined look for every vanilla armour. `equipment-combos.yml` lists those combinations (generated with the pack, don't edit). An armour without a combination (a custom armour from another plugin) keeps its normal look while the wings are worn. Leather colours, trims and enchant glints stay. One chest cosmetic is worn at a time (the first equipped across HAT categories).

Wings are drawn by the shader on clients 1.21.6 and newer; Iris / OptiFine shader packs show no wings. While a player swims they follow the body lying in the water, folded back. Over a leather (or other dyed) chestplate they are taken off while swimming instead, because the swimming data travels in the item's dye.

In creative your own inventory shows the looks too. A creative client can write what it shows back to the server, so EdCosmetics catches that: picking the look up and putting it down moves your real helmet / chestplate, and a copy of the look never becomes a real item.

## On emote models

Emote models wear the player's hat and wings. The shipped ones have emote versions in the pack (`emotes/hats.yml` and `emotes/wings.yml`, generated with it), glued to the model's head and torso through every move. Hats, wings and back items brought in with [`/edcosmetics import`](/p/edcosmetics/cosmetics/importing.md) get their emote versions made for them the same way. A hat you add by hand is worn as an item that follows the model's head (it can trail a little in fast moves); wings or back items you add by hand are worn by an armour stand that follows the model (`emotes.back-items: stand` behaviour; `off` hides them).

## Adding your own

Drop the model into `plugins/EdCosmetics/imports/` and run `/edcosmetics import`: the resource pack files, the armour combinations, the emote versions and the cosmetic entry are all made for you. See [Importing Your Own Cosmetics](/p/edcosmetics/cosmetics/importing.md).
