# Odznaky

> Vlastní odznaky serveru: za pravidlo nad čímkoli, co Keystone počítá, po dobu členství ve skupině, příkazem nebo z tvého vlastního zdroje, ukázané v chatu a v tab listu. Novinka v 0.3, ve výchozím stavu vypnuto.

Source: https://stygion.eu/cs/docs/keystone/badges
Updated: 2026-10-25

Novinka v 0.3, modul `badges`, ve výchozím stavu vypnutý. Server si píše vlastní odznaky; nic tu nezávisí na odznacích STYGIONu, které jsou jen jeden z možných zdrojů.

## Jak napsat odznak (`badges.badges`)

Jeden řádek na odznak, části oddělené ` | `:

```
id=builder | name=Stavitel | icon=⚒ | colour=#ffca36 | description=24 hodin odehráno | rule=played>=24h
```

`rule` říká, kdy ho hráč má; víc pravidel se spojí `&`:

| Pravidlo | Hráč ho má |
|---|---|
| `manual` | když ho dostane příkazem `/keystone badge give` |
| `group:<id>` | dokud je ve skupině |
| `tag:<entity tag>` | dokud nosí tag (odměna z questu nebo datapacku) |
| `<stat>>=<počet>` | jakmile počítadlo Keystone dosáhne hodnoty: `played`, `active`, `walked`, `mined`, `mined:<blok>`, `killed:<mob>`, `placed`, `deaths` …, časy jako `24h` |
| `source` | dokud to říká `source.url` |

`hidden=true` odznak vynechá z `{badges}`. Pravidla se pro hráče online kontrolují každých `check-every` (1 minuta). Odznak za počítadlo zůstává; odznak za skupinu, tag nebo zdroj zmizí, když zmizí ony.

## Kde jsou vidět

- `{badges}` ve formátech chatu a tab listu vypíše nejnovější ikony (`shown`, výchozí 3).
- `/badges [hráč]` je vypíše (`keystone.badges`, ve výchozím stavu má každý).
- `announce` (zapnuto) řekne všem, když někdo odznak získá.
- S klientskou částí: upozornění při získání a hodnota HUD `badges`.

## Vlastní zdroj

`source.url`: https adresa, která vrátí id odznaků hráče jako JSON seznam (nebo `{"badges": [...]}`); doplní se `{uuid}` a `{name}`, `source.key` jde jako Bearer token. Ptá se při připojení a každých 10 minut. Prázdné: na nic se neptá a nic neopouští server.

## Tým a API

`/keystone badge give|take <hráč> <odznak>` (`keystone.badges.give`). `GET /v1/badges` (scope `players.read`) a `POST /v1/badges/give` (`perks.write`). Doplňky slyší `BadgeChanged`.
