> For the complete documentation index, see [llms.txt](https://realisticnode.gitbook.io/rnsetups/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://realisticnode.gitbook.io/rnsetups/rnkoth/guides/display.md).

# What players see

Who sees what (whole server, one world, a distance, some worlds or a WorldGuard region), boss bar, action bar, locator, sidebar, hologram, particles, glowing holders, titles, sounds and world names.

Some options are for every KOTH (`config.yml` → `display`), others are set per KOTH (the `display:` section of its file, or `/koth editor <name>` → **What players see**). Every text is in the [language file](/rnsetups/rnkoth/configuration/languages.md).

## Who sees what

Each KOTH decides, part by part, who gets it: the announcements in the chat, the capture messages, the titles, the sounds, the boss bar, the sidebar and the locator. Set it in its file (`display.audience`) or in game: `/koth editor <name>` → **Who sees it** (also in **What players see**).

```yaml
display:
  audience:
    announcements: server     # countdown, "starts in", opened, moved, overtime, stopped, results
    capture-messages: world   # is capturing, took it, lost control, contested
    titles: world             # start title and "X won" (the winners always get their own title)
    sounds: world
    boss-bar: 150
    sidebar: 60               # the rnKoth sidebar (and %rnkoth_near%)
    locator: world            # arrow and distance for players outside
    action-bar: on            # progress while standing in the area: on / off
    discord: on               # post this KOTH to Discord: on / off
```

These are the values of a new KOTH. Each part takes one of:

| Value                | Who gets it                                                                                                                                                                        |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `server`             | Every online player, in every world.                                                                                                                                               |
| `world`              | Players in the world of the KOTH.                                                                                                                                                  |
| A number, like `150` | Players in the world of the KOTH, up to that many blocks from the area.                                                                                                            |
| `worlds:pvp,arena`   | Players in those worlds (any number of worlds, separated by commas).                                                                                                               |
| `region:spawn`       | Players inside that [WorldGuard](https://modrinth.com/plugin/worldguard) region, in the world of the KOTH. Without WorldGuard it works like `world`, and the console says so once. |
| `off`                | Nobody.                                                                                                                                                                            |

* Before an event (warnings, countdown, "not enough players") distances are measured to the area where the event will start.
* The console always gets the announcements, even with `off`.
* The winners always see their own `VICTORY!` title. `titles` is about the start title and the "X won" title everyone else sees.
* The locator only points within a world: players in another world never get an arrow, even with `server`.
* `config.yml` can still turn the sidebar, the locator, the action bar and the titles off for every KOTH (`display.sidebar: false`...).
* A value that is not understood is reported in the console, and that part works as before (see below).

### In the editor

`/koth editor <name>` → **Who sees it** has one button per part. The button says what the part is and who gets it now ("Whole server", "This world", "Within 150 blocks", "Worlds: pvp, arena", "Region: spawn", "Off").

| Click                | Does                                                                                                                                                        |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Left click           | Next: whole server → this world → a distance → off                                                                                                          |
| Right click          | The other way                                                                                                                                               |
| Shift + left / right | Distance +50 / -50 blocks                                                                                                                                   |
| `Q` (drop key)       | Type any value in chat: `250`, `worlds:pvp,arena`, `region:spawn`... An unknown world or region, or a region without WorldGuard, is refused with a message. |

Action bar and Discord are on/off: click to switch.

### Examples

**Announce it to the whole server, but show the scoreboard only near the KOTH.** Everyone hears that it opened and who won; only players close to the fight get the sidebar and the boss bar, and players far away keep their own scoreboard:

```yaml
display:
  audience:
    announcements: server
    capture-messages: 150
    titles: world
    sounds: 150
    boss-bar: 150
    sidebar: 60
    locator: world
```

**Only one world.** A KOTH in a PvP world that the rest of the server never hears about:

```yaml
display:
  audience:
    announcements: world
    capture-messages: world
    titles: world
    sounds: world
    boss-bar: world
    sidebar: 100
    locator: world
```

To include other worlds too, like the spawn where players wait: `announcements: worlds:world_pvp,spawn`.

**Only a WorldGuard region.** Everything stays inside the arena region (players outside it see and hear nothing), and the start is still announced everywhere:

```yaml
display:
  audience:
    announcements: server
    capture-messages: region:arena
    titles: region:arena
    sounds: region:arena
    boss-bar: region:arena
    sidebar: region:arena
    locator: 'off'
```

### With TAB or another scoreboard plugin

The rnKoth sidebar only replaces the scoreboard of the players in `audience.sidebar`. As soon as a player leaves it (walks away, changes world, teleports, the event ends), they get their own scoreboard back.

`%rnkoth_near%` is `yes` for exactly those players, so your scoreboard plugin can step aside while ours shows. In TAB (`config.yml` → `scoreboard` → `scoreboards`):

```yaml
scoreboard:
  scoreboards:
    koth:
      # Your own KOTH scoreboard while the player is near a running KOTH
      # (with rnKoth's sidebar off: display.sidebar: false in rnKoth's config.yml)
      display-condition: "%rnkoth_near%=yes"
      title: "<gold>KOTH"
      lines:
        - "&7KOTH: &f%rnkoth_current_name%"
        - "&7Holder: &e%rnkoth_current_holder%"
        - "&7Progress: &a%rnkoth_current_progress%"
        - "&7Time left: &f%rnkoth_current_time_left%"
    normal:
      # Your usual scoreboard: hidden while the rnKoth sidebar shows
      display-condition: "%rnkoth_near%=no"
      title: "My server"
      lines: [...]
```

Use only `normal` to keep rnKoth's sidebar, or both with rnKoth's sidebar turned off to show the KOTH in TAB's own style.

### Older KOTH files

Files made before 1.0.1 have no `display.audience`; they keep working as they did:

| Old setting                                          | Works like                                                                                  |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `display.radius: 0`                                  | Announcements, capture messages, titles and sounds: `server`. Boss bar: `world`.            |
| `display.radius: 300`                                | All of them: `300`.                                                                         |
| `display.boss-bar: false` / `display.locator: false` | `boss-bar: off` / `locator: off`                                                            |
| Sidebar and locator                                  | `config.yml` `sidebar-radius` / `locator-radius` (and `display.radius` when it is smaller). |

Changing any part in the editor adds `display.audience` with that part to the file; the parts that are not in it yet keep the old behaviour.

## Boss bar

```yaml
display:
  audience:
    boss-bar: 150
  boss-bar-color: YELLOW
```

A bar on top of the screen while the KOTH runs (for the players in `audience.boss-bar`), with the holder, the progress and the time left. The bar fills with the progress of the holder (or the best side when nobody holds it).

Colors: `PINK`, `BLUE`, `RED`, `GREEN`, `YELLOW`, `PURPLE`, `WHITE`. It turns **red** while the KOTH is contested (not with `contested: holder`, where the holder keeps gaining).

Texts (`bossbar` in the language file): `waiting` (nobody holds it), `capturing`, `score`, `contested`, `draining`, `defending` and `defending-score` (`contested: holder`: "Castle » Alex 45% (defending against 2)") and `overtime`. With `per-player-language: true`, each player sees it in their own language.

`draining` is the tug of war of `capture.on-leave: pause` or `drain`: a side that walks in first brings down the progress another side left, and the bar says so (`Castle » Rex pushes back Steve 30% | 8:12`) instead of showing the newcomer at 0%.

## Action bar inside the area

`config.yml` → `display.action-bar: true`

While a player stands in a running KOTH, the text above the hotbar shows:

| Situation                                          | Text (`hud` in the language file)                                 |
| -------------------------------------------------- | ----------------------------------------------------------------- |
| Your side is capturing                             | `⚑ Capturing ■■■■□□ 45% • 66s left • 8:12` (`you-capture`)        |
| Your side holds it in score mode                   | `⚑ +1 point/s ...` (`you-score`)                                  |
| Another side holds it                              | `⚔ Steve is holding the KOTH ... push them out!` (`enemy`)        |
| Contested                                          | `⚔ CONTESTED ⚔ • nobody gains` (`contested`)                      |
| Your side is bringing down another side's progress | `⬇ Bringing down Alex's progress 30%...` (`draining`)             |
| You do not count                                   | The reason: AFK, game mode, invisible, just died (`not-counting`) |

<figure><img src="https://348500357-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSlVHklG0EMAOmvfqcizu%2Fuploads%2FGZdazNJx8HSNRik2Q1EN%2Frnkoth-en-holding.png?alt=media" alt="Inside the area: progress in the action bar and the boss bar, sidebar on the right"><figcaption><p>Inside the area: progress in the action bar and the boss bar, sidebar on the right</p></figcaption></figure>

### Progress style

How progress looks wherever a text uses the `{meter}` placeholder. By default that is the action bar inside the area and the hologram:

```yaml
display:
  progress-style: both    # bar, percent or both
  progress-bar:
    length: 10            # 1 to 40 symbols
    symbol: '■'
    filled: '<green>'
    empty: '<dark_gray>'
```

| Style            | Capture mode     | Score mode           |
| ---------------- | ---------------- | -------------------- |
| `bar`            | `■■■■□□□□□□`     | `■■■■□□□□□□`         |
| `percent`        | `45%`            | `120/300`            |
| `both` (default) | `■■■■□□□□□□ 45%` | `■■■■□□□□□□ 120/300` |

`{bar}` is always the bar alone, and `{percent}` the percent alone, whatever the style.

## Locator

```yaml
# config.yml
display:
  locator: true
  locator-radius: 0
```

Players **outside** a running KOTH see its name, an arrow pointing to it, the distance and who holds it in the action bar:

```
Spawn ⬈ 85m | Steve 45% | 8:12
```

Like the boss bar, it says when nobody holds it (`Spawn ⬈ 85m | Free KOTH | 8:12`, `hud.locator-free`), when it is contested (`CONTESTED`, `hud.locator-contested`), during a tug of war (`Rex pushes back Steve 30%`, `hud.locator-draining`) and while the holder defends it (`(defending against 2)`, `hud.locator-defending`).

* The arrow turns as the player turns.
* It shows the nearest running KOTH whose `display.audience.locator` includes the player, in the same world.
* `display.locator: false` in `config.yml` turns it off for every KOTH.
* `locator-radius` is only used by KOTH files without `audience.locator` (older files): only players this close see it (`0` = everyone in the same world).
* Players can turn it off for themselves with `/koth hud`.

Inside the area, the action bar shows the progress instead.

## Sidebar

```yaml
# config.yml
display:
  sidebar: true
  sidebar-radius: 120
```

A scoreboard on the right side for the players in the KOTH's `display.audience.sidebar` (60 blocks in a new KOTH). `sidebar-radius` is only used by KOTH files without it (older files; `0` = everyone in the world), and `sidebar: false` turns it off for every KOTH. Capture KOTHs show the holder, progress, time left and players inside; score KOTHs show the top 3. Both show the player's own time and kills. Up to 15 lines (`sidebar` in the language file).

Each player gets their own scoreboard while they are in the sidebar audience, and their previous scoreboard back at once when they leave it (walk away, change world, teleport) or the event ends. Players can turn it off with `/koth hud`.

{% hint style="warning" %}
**Using another scoreboard plugin** (TAB, AnimatedScoreboard, FeatherBoard...)? Two plugins fighting for the sidebar make it flicker or disappear. Hide yours while `%rnkoth_near%` is `yes` (see [With TAB or another scoreboard plugin](#with-tab-or-another-scoreboard-plugin)), or set `display.sidebar: false` and show the KOTH in your own scoreboard with the [placeholders](/rnsetups/rnkoth/reference/placeholders.md), for example `%rnkoth_current_name%`, `%rnkoth_current_holder%`, `%rnkoth_current_progress%` and `%rnkoth_current_time_left%`.
{% endhint %}

{% hint style="info" %}
On **Folia** there is no sidebar (Folia does not support scoreboards yet). Use the placeholders in a scoreboard plugin that works on Folia.
{% endhint %}

## Hologram

```yaml
display:
  hologram: true
  hologram-height: 3.5
```

A floating text above the middle of the area, `hologram-height` blocks over the floor. No other plugin is needed. It shows:

* **Waiting**: the name and when the next event starts (`hologram.idle`).
* **Countdown**: `Opens in 8s` (`hologram.starting`).
* **Running**: the holder, the progress and the time left (`hologram.running`).
* **Tug of war** (`on-leave: pause` / `drain`): who brings down whose progress (`hologram.draining`).
* **Defending** (`contested: holder`): the holder and how many players of other sides are inside (`hologram.defending`).

The hologram is not saved with the world, so a crash never leaves copies behind. It appears when the chunk is loaded. A disabled KOTH has no hologram while it is not running. With several areas, the hologram is on the area where the next event starts while waiting, and follows the KOTH while it runs.

<figure><img src="https://348500357-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSlVHklG0EMAOmvfqcizu%2Fuploads%2F0Q7QnsyPyGvJ0h5km8BL%2Frnkoth-en-idle.png?alt=media" alt="A waiting KOTH: the hologram shows when the next event starts"><figcaption><p>A waiting KOTH: the hologram shows when the next event starts</p></figcaption></figure>

## Border particles

`display.border-particles: true` draws the edge of the area on the floor while the KOTH runs, for players up to 48 blocks away. Each player sees the color that matters to them:

| Color  | Meaning                                                                        |
| ------ | ------------------------------------------------------------------------------ |
| White  | Nobody holds it                                                                |
| Green  | Your side holds it                                                             |
| Orange | Another side holds it                                                          |
| Red    | Contested (with `contested: holder` the holder colours stay: green and orange) |

## Glowing holders

`display.glow-holder: true`: players of the side holding the KOTH glow, so everyone sees who to push out. The glow is removed when they stop holding it, and also on join if the server crashed while they were glowing.

## Titles

`config.yml` → `display.titles: true` (off = no titles in any KOTH). Who sees them: `display.audience.titles` of each KOTH.

* When a KOTH opens: `KING OF THE HILL` and the location (`event.started-title`, `event.started-subtitle`).
* When someone wins: the winners see `VICTORY!` (`event.you-won-title`), everyone else sees who conquered it (`event.won-title`).

The default winner rewards have no `[title]` line, so winners see one title. If you add your own `[title]` reward, set `display.titles: false` or they see two.

`events.winner-fireworks: true` launches a firework show over the KOTH when someone wins. The fireworks never hurt anyone.

<figure><img src="https://348500357-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSlVHklG0EMAOmvfqcizu%2Fuploads%2FtGtIwXTTcR6lA5MVGgTX%2Frnkoth-en-victory.png?alt=media" alt="The VICTORY! title and the fireworks over the KOTH"><figcaption><p>The VICTORY! title and the fireworks over the KOTH</p></figcaption></figure>

## Sounds

```yaml
# config.yml
display:
  sounds:
    start: 'block.bell.use'
    countdown: 'block.note_block.hat'
    capture-start: 'block.beacon.activate'
    capture-lost: 'block.beacon.deactivate'
    contested: 'block.note_block.bass'
    win: 'ui.toast.challenge_complete'
    moved: 'entity.enderman.teleport'
```

| Sound           | When                                      |
| --------------- | ----------------------------------------- |
| `start`         | The KOTH opens                            |
| `countdown`     | Each countdown announcement               |
| `capture-start` | A side starts capturing or takes the KOTH |
| `capture-lost`  | The holder leaves and nobody is inside    |
| `contested`     | The KOTH becomes contested                |
| `win`           | Someone wins                              |
| `moved`         | A roaming KOTH moves to another area      |

Use any Minecraft sound key. `''` turns a sound off. Who hears them: `display.audience.sounds` of each KOTH.

## World names

Messages show the world with `{world}`. Show a nicer name instead:

```yaml
# config.yml
world-names:
  world: Spawn
  world_pvp: '/warp pvp'
```

Or for one KOTH only, in its file (or editor → What players see → **World name**):

```yaml
display:
  world-name: 'The Arena'
```

The KOTH's own name wins over `world-names`. `{world_id}` is always the real world name.

## Messages in the chat

Every chat message (start, countdown, capture, contested, moved, overtime, results) is in the language file under `event`, `capture` and `results`. Set any of them to `''` to turn it off. See [Languages and texts](/rnsetups/rnkoth/configuration/languages.md).
