> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://aetherskywarswiki.netlify.app/api/mcp` to find what you need.

# Shop and cosmetics

What players spend coins on, and how to change what is for sale.

<img src="/shop-hub.svg" alt="The shop hub: nine cosmetic categories in a three by three grid" />

## Coins

Coins are the in-game currency. Players earn them by playing and spend them on kits and
cosmetics.

```yaml
Config:
  Coins:
    Per-Win: 10
    Per-Kill: 5
    Per-Death: -5
```

A negative value takes coins away. Achievements pay out larger one-off amounts, see
[Achievements and leaderboards](/features/achievements-and-leaderboards).

Players check their balance with `/asw balance`. Staff adjust balances with `/asw coins`.

### Using your server economy instead

If you run Vault, AetherSkyWars can use your existing economy rather than its own coins.

```yaml
Config:
  Use-Vault-As-Currency: true
```

With this on, prices are charged against the player's normal server balance. With it off, or
without Vault installed, the plugin keeps its own coin balance per player.

:::note
The plugin logs which one it picked on startup, so check the console if you are unsure
which is active.
:::

## The shops

There is one shop per kind of cosmetic, and each can be switched off on its own.

| Shop | What it sells | Config toggle |
| --- | --- | --- |
| Cage blocks | The block your cage is made of while you wait for the drop. | `Enable-Cage-Block-Shop` |
| Win blocks | The block that erupts around you when you win a match. | `Enable-Win-Block-Shop` |
| Bow particles | A particle trail that follows arrows you fire. | `Enable-Bow-Particles-Shop` |
| Win effects | A burst where you are standing the moment you win. | `Enable-Win-Effect-Shop` |
| Kill effects | A burst where a player you killed died. | `Enable-Kill-Effect-Shop` |
| Victory dances | A longer show around you for the whole win screen. | `Enable-Victory-Dance-Shop` |
| Glows | A coloured outline on you in the lobby. | `Enable-Glow-Shop` |
| Balloons | A head floating on a string over your cage. | `Enable-Balloon-Shop` |
| Spectator shop | Items a dead player can buy and throw into the match. | `Enable-Spectator-Shop` |

They all sit under `Config.Shops` in `config.yml`, along with `Enable-Shop`, which turns the
whole shop menu off in one go, and `Enable-Kit-Shop`.

Players open the shop with `/asw shop`, or the shop item in the lobby hotbar, and land on a page
listing every category. Spectators open theirs with `/asw spectatorshop`.

### Effects, dances and where they play

Win effects, kill effects and victory dances all name a show in `Extras.Effect`. The same names work
in all three categories, so a show you like as a win effect can be a kill effect as well.

The short bursts are `FIREWORK_SHOW`, `LIGHTNING_STORM`, `EXPLOSION_RING`, `RAINBOW_BURST`,
`ENDER_SIGNAL`, `GUARDIAN_BEAM`, `SOUL_FLAMES`, `HEART_AURA`, `TORNADO`, `FROST_BURST`,
`TOTEM_BURST`, `NOTE_PARTY`, `SMOKE_BOMB`, `BLOOD_SPLATTER` and `SOUL_HARVEST`. Each is over in
about a second and spawns particles only, so they are safe to fire in the middle of a match.

The long shows are `RAINING_PIGS`, `ANVIL_RAIN`, `FIREWORKS_FINALE`, `FLOATING_LANTERNS`,
`GUARDIAN_CIRCLE`, `COLD_SNAP`, `HAUNTED`, `RAINBOW_DOLLY`, `WITHER_STORM` and `BLOCK_STORM`. These
run for seconds and spawn things, so they only ever play once a match is already over.

Two of the long shows put the winner inside the moment rather than next to it. `YEE_HAW` gives them
a horse that jumps absurdly high, and `NIGHT_SHIFT` races the arena clock through three whole days.
A ride ends in the air, so the winner floats down rather than falls.

Everything a show spawns is harmless and is taken away when the show ends, including if the match
ends early or the player leaves. Falling anvils hurt nobody and snow golems do not throw snowballs.
A show never breaks a block outside an arena world.

An unknown name in `Extras.Effect` plays nothing rather than stopping the match.

The same show is drawn at different sizes depending on where it is used. A win is the one moment
everybody is stood still watching, so it plays at full size and is meant to be seen from across the
map. A kill happens every few seconds in the middle of a fight, so the same show is drawn at under
half that, which keeps it readable without blinding anybody.

Cosmetic fireworks never damage anyone. A firework a player built and fired themselves still behaves
normally.

:::note
The win screen fires a rocket a second at the winner, and always has. That is the celebration for
anybody who owns no win effect, so it stays for them. A player wearing a win effect gets theirs
instead, rather than both at once with the free one drowning out the thing they paid for.

Team winners now get those rockets too. Only solo winners used to.
:::

### Glows only show in the lobby

A glow is drawn through walls, which would turn a cosmetic into a way of seeing where everyone is
hiding. It is on in the lobby and while players wait in their cages, and it comes off the moment the
cages open. It comes back on its own when they are out of the match.

Set the colour in `Extras.Color` using a Minecraft colour name, such as `RED` or `LIGHT_PURPLE`.

The colour itself lives on a scoreboard team, and a player can only be on one team at a time. If you
run a nametag plugin such as TAB, every player is already in a team of its own, which takes the
colour away and leaves a plain white outline whichever colour was picked.

Install PacketEvents and that is handled for you: the colour is written onto the team packets your
nametag plugin is already sending, so nothing needs setting up and nobody loses their team. Without
PacketEvents, put `%aetherskywars_glow_color%` at the front of your nametag prefix instead, which is
`tagprefix` in TAB's `groups.yml`. See [Placeholders](/reference/placeholders#glow) for both, and
`Config.Glow-Teams` for the switch.

### Balloons

A balloon floats over a player while they sit in their cage and vanishes when the cages open, so it
never gets in anybody's way during a match.

The entry's `Material` is what floats. Add `Extras.Texture` with a base64 head value to float a
custom head instead, and the material is then only what the menu shows.

## The wardrobe

Buying something only records that a player owns it. Putting it on happens in the wardrobe, which
shows the same items as the shop with the prices gone and only the ones already owned left.

Open it with the wardrobe item in the lobby hotbar, or from the Items button in the player
profile. The first screen has one button per kind of cosmetic, each naming what is worn right
now. Click one to see everything owned of that kind.

Inside a category, an item's lore says which of these it is:

| Lore | What it means |
| --- | --- |
| Click to equip | Owned, not worn. Clicking puts it on. |
| Equipped, click to unequip | Worn right now. The icon also glints. Clicking takes it off. |

Unequipping clears the cosmetic: no kit, no arrow trail, no win block. A cage block cannot be
cleared, since every cage is made of something, so unequipping puts the default glass back.

Kits sit in the wardrobe alongside the cosmetics. With `Only-Buy-Kits-Per-Match` turned on they
are rented for a single match rather than owned, so that button opens the kit shop instead.

The buttons at the bottom of a category page switch between kinds without going back, and the
compass goes to the list of every category. The wardrobe remembers nothing about a player beyond
what they have equipped, which is stored with the rest of their data.

Players can open the wardrobe with `/cosmetics`, which also answers to `/wardrobe`, or with
`/asw cosmetics`.

## Editing what is for sale

Everything lives in `plugins/AetherSkyWars/shops.yml`, grouped by shop.

```yaml
Shops:
  Cage-Blocks:
    item2:                                  # [1]
      Displayname: '&bDiamond Cage'         # [2]
      Material: DIAMOND_BLOCK               # [3]
      Price: 20.0                           # [4]
      Permission: AetherSkyWars.Cage        # [5]
  Bow-Particles:
    item50:
      Displayname: '&cFlame Trail'
      Material: BLAZE_POWDER                # [6]
      Price: 100.0
      Permission: AetherSkyWars.Particle
      Extras:
        Particle: FLAME                     # [7]
```

1. The entry key. Must be unique inside its shop, otherwise the value does not matter.
2. What players see. Colour codes work.
3. For cage and win blocks this is the block they get. For particles it is just the menu icon.
4. Cost in coins, or in your Vault currency.
5. Who is allowed to buy it. Leave it out to let everyone buy.
6. Menu icon only.
7. Bow particle entries need this. It is the Minecraft particle name.

:::info
Particle names changed in Minecraft 1.20.5. The plugin accepts the old names as well as the
new ones, so a shop file copied from an older setup keeps working. New entries should use the
current names, for example `POOF` rather than `EXPLOSION_NORMAL`.
:::

## The spectator shop

Dead players stay in the arena as spectators when the arena has spectating enabled. The
spectator shop lets them spend coins on items, which drop into the live match.

```yaml
Shops:
  Spectator-Shop:
    item106:
      Displayname: '&6Golden Apple'
      Material: GOLDEN_APPLE
      Price: 50.0
```

It is a way for eliminated players to stay involved. Price it high enough that it does not
decide matches.

## Related pages

* [Kits](/features/kits)
* [Mystery box](/features/mystery-box)
* [Quests and challenges](/features/quests-and-challenges)
* [Achievements and leaderboards](/features/achievements-and-leaderboards)
* [Permissions](/configuration/permissions)
