> 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/edevents/features/winner-announcement.md).

# Winner Announcement & Chat Heads

When an event ends, the winner (or the top N) is announced in chat with their **skin face** rendered out of coloured characters, next to your own lines.

```
████████
████████  EVENT WINNER
████████  Notch
████████  won Mining Frenzy
████████  with 12.4K Blocks
████████
████████  Participants: 14
████████
```

## Per event

```yaml
winner-announcement:
  enabled: true
  show-head: true
  placements: 1              # announce the top N players (1st, then 2nd...)
  lines:
    - ""
    - "{head}"
    - "{head}&6&lEVENT WINNER"
    - "{head}&f{winner}"
    - "{head}&7won &e{event}"
    - "{head}&7with &a{value_formatted} &7{objective}"
    - "{head}"
    - "{head}&7Participants: &f{participants}"
    - "{head}"
    - ""
  lines-no-head:
    - "  &6&lEVENT WINNER &f{winner} &7won &e{event}&7!"
```

Every line that contains `{head}` receives **one row of the face** (8 rows, top to bottom) in its place; lines without it are printed as they are, so you decide the layout: text beside the face, header/footer lines, blank lines. Extra `{head}` lines after the 8th get nothing. `lines-no-head` is used when `show-head` is off, when `chat-head.enabled` is off, or when it is the only list defined.

Available placeholders: `{winner}`, `{position}`, `{position_suffix}`, `{value}`, `{value_formatted}` plus every [event placeholder](/p/edevents/features/placeholders.md).

## Global settings (config.yml)

```yaml
chat-head:
  enabled: true
  pixel: "█"              # character per skin pixel
  chars-per-pixel: 1      # 2 makes the face wider
  after-head: " "         # text placed right after each face row
  hat-layer: true         # draw the hat/overlay layer
  fallback-steve: true    # draw Steve when the skin cannot be resolved
  prefetch-on-join: true  # fetch skins when players join so announcements are instant
  mojang-lookup: true     # ask Mojang's session server for offline players
  offline-mode-lookup-by-name: true   # offline-mode servers: resolve the premium UUID by name first
  cache-minutes: 360
  fetch-timeout-ms: 3000
```

Faces are resolved from the player's profile when online (no web request), otherwise from Mojang, always **asynchronously** and cached. If the skin is not available within `fetch-timeout-ms`, Steve's face (or no face) is used so the announcement is never delayed.

## Titles & sounds for winners

The 1st place also receives `titles.winner` and `sounds.winner`; other placements receive `titles.placed` and `sounds.placed` (see [Creating Events](/p/edevents/features/events.md)).
