# Všechna nastavení

> Všech 151 nastavení, po modulech: co to je, co to čeká, jaká je výchozí hodnota a co to dělá.

Source: https://stygion.eu/cs/docs/keystone/settings-reference
Updated: 2026-10-10

Tenhle seznam **není psaný z hlavy**. Každý modul deklaruje svoje nastavení i s tím, co znamená, mod ten seznam vydá na `GET /v1/settings`, a tahle stránka je z něj vytažená příkazem `scripts/reference.sh` v repozitáři modu.

Platí pro **0.1.1**. Nastavení je **151**.

## Jak se to mění

```
/keystone set <celé jméno> <hodnota>     # z konzole i ze hry
/keystone set <celé jméno>               # co v tom stojí teď
/keystone set                            # všechno, co existuje
```

**Jméno je vždycky celá cesta** — `bench.share-live`, ne `share-live`. Když se spleteš, konzole vypíše nejbližší, co existuje. Totéž jde z editoru (`/keystone panel` → Settings), ze souboru `config/keystone/<modul>.toml` a přes [rozhraní](/docs/keystone/api-reference).

Uložení platí hned, nikoho to nevyhodí, a každá změna je zapsaná i se starou hodnotou:

```
keystone set history
keystone set undo <číslo>
```

**Pozor na jednu past:** změněná výchozí hodnota se nepropíše na server, který už má tu starou uloženou v souboru.

---

## `keystone.toml` — samotný mod

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `keystone.debug` | true nebo false | `false` | Víc detailu v logu. Užitečné jednou, pak už jen hlučné. |
| `keystone.mask-commands` | seznam oddělený čárkami | *(prázdné)* | Další příkazy, jejichž argumenty se nikdy neobjeví v logu, v konzoli ani v auditu. Svoje vlastní a obvyklé přihlašovací Keystone maskuje sám; tohle je pro cizí mod. |
| `keystone.api.enabled` | true nebo false | `true` | Lokální HTTP API. Všechno, co mod umí, pro programy, za klíči se scopy. |
| `keystone.api.port` | celé číslo | `25586` | Na kterém portu API poslouchá. |
| `keystone.api.address` | text | `127.0.0.1` | **Na čem poslouchat.** Loopback, dokud nemyslíš vážně něco jiného — cokoliv jiného je dostupné každému, kdo dosáhne na tenhle stroj. |
| `keystone.api.reachable-at` | text | *(prázdné)* | **Adresa, kterou má lidem dát, když to není ta, na které poslouchá.** `0.0.0.0` je dobrá věc k navázání a nepoužitelná k napsání: odkaz `http://0.0.0.0:25586` se neotevře nikde. Prázdné a poslouchající na skutečné adrese → použije ji; prázdné a poslouchající na všem → vezme vlastní adresu stroje v síti. Vyplň, když se k tomu chodí jinudy — za routerem, tunelem, nebo pod jménem, které jsi tomu dal. Holé jméno nebo adresa = `http://jméno:port`; **celá adresa se schématem** (`https://keystone.example.com`, od 0.2.3) se použije tak, jak je, bez portu. |

**Příklad — jen z téhle mašiny (výchozí a bezpečné):** nic neměň.

**Příklad — z domácí sítě:**
```
/keystone set keystone.api.address 0.0.0.0
/keystone set keystone.api.reachable-at 192.168.1.100
```
a v `ufw` pusť port **jen z LAN**: `sudo ufw allow from 192.168.1.0/24 to any port 25586 proto tcp`.

**Příklad — zvenčí:** nech `api.address` na loopbacku, postav před to reverzní proxy s TLS a nastav `reachable-at` na celou adresu, třeba `https://keystone.example.com`. Ven stačí pustit `/panel` a ty cesty `/v1`, které editor volá — editor posílá klíč hlavičkou `Authorization`, žádné cookies. Podrobně na stránce [Rozhraní](/docs/keystone/api-reference).

---

## `discord.toml` — most na Discord

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `discord.enabled` | true nebo false | `true` | Na false se tenhle modul vůbec nepostaví — žádná paměť, žádné CPU, žádné tabulky. |
| `discord.token` | token, uloží se a nikdy se neukáže | *(prázdné)* | **Token bota** z discord.com/developers. Nic jiného na serveru ho nepřečte, nikdy se nedostane do logu ani do odpovědi API. Prázdné = celý most vypnutý. Bot k tomu potřebuje zapnuté Message Content a Server Members, jinak se připojí a neslyší nic. |
| `discord.server` | text | *(prázdné)* | **ID tvého Discord serveru.** Pravým na jeho jméno se zapnutým Developer Mode. |
| `discord.chat-channel` | text | *(prázdné)* | Kanál, ve kterém se objevuje herní chat a z něhož zprávy chodí do hry. |
| `discord.events-channel` | text | *(prázdné)* | Kam jdou příchody a odchody, když je nechceš v chatovém kanálu. Prázdné = do chatového. |
| `discord.game-to-discord` | true nebo false | `true` | Jestli se to, co padne ve hře, objeví na Discordu. |
| `discord.discord-to-game` | true nebo false | `true` | A obráceně. |
| `discord.speak-as-players` | true nebo false | `true` | **Každý hráč mluví pod svým jménem a obličejem** přes webhook, místo aby všechno chodilo od bota. Bot si na to vyrobí vlastní webhook — chce to Manage Webhooks v tom kanálu; bez toho most funguje dál a všechno chodí od bota. |
| `discord.joins-and-leaves` | true nebo false | `true` | Jestli se hlásí příchody a odchody. |
| `discord.avatar` | text | `https://mc-heads.net/avatar/{name}/64` | **Obličej vedle jména na Discordu.** Doplňuje se `{name}` a `{uuid}`. Musí to být obrázek, na který Discord dosáhne — proto služba, ne skin, který server zná. Prázdné nechá webhook bez obličeje. |
| `discord.webhook-name` | text | `Keystone` | Jak se ten webhook jmenuje v nastavení kanálu, aby bylo poznat, co ho vyrobilo. |
| `discord.topic` | true nebo false | `true` | Držet v popisku kanálu, kdo je online a jak dlouho server běží. |
| `discord.topic-every` | délka času | `5m` | Jak často se popisek přepisuje. Discord povolí dvě změny za deset minut na kanál a zbytek potichu zahodí, takže kratší nic nekoupí. |
| `discord.roles.follow` | seznam oddělený čárkami | *(prázdné)* | **Která hodnost nese kterou roli**, jako `skupina=idrole`. Funguje oběma směry a nesymetricky: hodnost daná nebo ukončená ve hře roli nasadí nebo sundá; role přidaná na Discordu se zapíše do stejného seznamu jako každá jiná, se zdrojem Discord, a odejde s ní. **Hodnost, kterou už někdo drží z obchodu nebo questu, se nikdy nepřepíše.** |
| `discord.alerts.channel` | text | *(prázdné)* | **Kam server řekne, že se trápí** — a kde řekne, že už je dobře. Co je málo a jak dlouho to musí trvat, je v `operations.toml`. |
| `discord.alerts.ping-role` | text | *(prázdné)* | ID role, kterou upozornit, když je něco špatně — ne když se to spraví. Stojí za nastavení: kanál, o kterém nikdo neví, ve tři ráno nikdo nečte. |
| `discord.alerts.runs-channel` | text | *(prázdné)* | **Kam padá hotový zátěžový test**, když se ho někdo rozhodne sdílet. Schválně ne do alertů: alert se čte teď, měření je něco, k čemu se tým vrací. |
| `discord.console.channel` | text | *(prázdné)* | **Konzole serveru v discordovém kanálu.** Na hlídání stroje, u kterého nesedíš. **Dej ji tam, kam vidí jen tvůj tým** — konzole říká, co je nainstalované, co se pokazilo a kde. |
| `discord.console.levels` | seznam oddělený čárkami | `INFO, WARN, ERROR` | Které řádky jdou. Zahoď INFO na vytíženém serveru a zůstane jen to, co chce člověka. |
| `discord.console.ignoring` | seznam oddělený čárkami | *(prázdné)* | Jména loggerů, která vynechat, kvůli jednomu modu, co nepřestane mluvit. |
| `discord.console.every` | délka času | `5s` | Jak často jde dávka. Řádka na zprávu je padesát zpráv za vteřinu na startujícím serveru, a odpovědí Discordu je rate limit, který se změní v ban celého bota. |
| `discord.console.most-lines` | celé číslo | `200` | Kolik řádek čeká na další dávku, než se nejstarší zahodí. |
| `discord.ban.game-to-discord` | true nebo false | `false` | **Zabanovaný ve hře je zabanovaný i na Discordu**, pokud má propojený účet. Vypnuté, protože je to skutečné rozhodnutí. |
| `discord.ban.discord-to-game` | true nebo false | `false` | **A obráceně.** Zapni obojí a ban je ban na obou stranách, ať začal kdekoliv. |
| `discord.ban.who-may` | seznam oddělený čárkami | *(prázdné)* | **ID discordových rolí, jejichž držitelé smí u bota použít `/ban` a `/unban`.** Prázdné = bot žádný ban příkaz nemá. |
| `discord.link.required-to-join` | true nebo false | `false` | **Nikdo se nedostane dovnitř, dokud nemá propojený Discord.** Na offline serveru je to rozdíl mezi „kdokoliv vejde v cizím jméně" a serverem, kde je každý hráč člověk, kterého najdeš. |
| `discord.screens.not-linked` | text | `This server needs your Discord account linked…` | Co si přečte ten, koho to nepustí. K dispozici `{code}`, `{left}`, `{player}`, `{invite}`. **Nech tam `{code}`** — jinde ho neuvidí. |
| `discord.link.invite` | text | *(prázdné)* | Tvoje pozvánka na Discord, doplní se do `{invite}`. Server, který řekne „propoj se na Discordu" a neřekne na kterém, poslal člověka hádat. |
| `discord.link.accounts-per-user` | celé číslo | `1` | Kolik herních účtů smí jeden Discord uživatel propojit. Víc než jeden je pro rodiny a druhé účty — a taky pro to, kolikrát se může vrátit jeden zabanovaný. |
| `discord.link.rename-nickname` | true nebo false | `false` | Přejmenovat člověka na Discordu na jeho herní jméno. Chce Manage Nicknames a nesáhne na nikoho s vyšší rolí než má bot. |
| `discord.link.code-lasts` | délka času | `10m` | Jak dlouho kód platí. Krátce schválně: je to klíč k něčímu účtu a ten, kdo ho drží, se na něj právě dívá. |
| `discord.ask.fallback-channel` | text | *(prázdné)* | Kam jde otázka, když má ten člověk zavřené soukromé zprávy. Nic soukromého se do kanálu nenapíše a tlačítko zmáčkne jen ten, koho se to týká. |
| `discord.tickets.category` | text | *(prázdné)* | **Kde se dělá kanál ticketu.** Vidí do něj jen jeho tým a ten, kdo ho otevřel; při zavření kanál zmizí a konverzace zůstane v modu. |
| `discord.tickets.roles` | seznam oddělený čárkami | *(prázdné)* | **Kdo vidí který druh ticketu**, řádka `druh -> id role`. Druh bez řádky dostane kanál, který vidí jen zakladatel. |
| `discord.queue` | celé číslo | `500` | Kolik zpráv čeká na Discord, než se nejstarší začnou zahazovat. Hru to nikdy nezdrží. |

---

## `operations.toml` — všechno, co jede na hodiny

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `operations.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `operations.timezone` | časové pásmo, nebo prázdné | *(prázdné)* | Podle kterých hodin se čtou časy níž. Prázdné = hodiny toho stroje. |
| `operations.restart.when` | `"06:00, 18:00"`, `"every 6h"`, `"90m after start"`, `"off"` | `off` | Kdy zvažovat restart. Vypnuté, protože mod, který začne restartovat server, o který ho nikdo neprosil, se podruhé neinstaluje. |
| `operations.restart.warn-at` | délky času, největší první | `15m, 5m, 1m, 30s, 10s` | Jak dlouho předem to lidem říct. |
| `operations.restart.after-uptime` | délka času | `12h` | Restartuj až potom, co server běží takhle dlouho. `0` to ignoruje. |
| `operations.restart.above-memory-percent` | celé číslo | `85` | Restartuj, když paměť přeleze tohle. `0` ignoruje. Tohle obvykle rozhoduje. |
| `operations.restart.below-tps` | celé číslo | `0` | Restartuj, když TPS spadne pod tohle. Opatrně — server, co restartuje, protože se trápí, se vrátí a trápí se dál. |
| `operations.restart.wait-for-empty` | true nebo false | `true` | Když je restart na řadě a někdo hraje, počkej, až bude prázdno. |
| `operations.restart.wait-at-most` | délka času | `2h` | Jak dlouho se čeká. Potom se odpočítá a zbytek odpojí. `0` čeká věčně, což znamená, že vytížený server nerestartuje nikdy. |
| `operations.restart.supervised` | text | `auto` | Jestli server po zastavení něco zvenku nastartuje zpátky. `auto` hledá systemd a hostingové panely; `yes` když si ho vracíš vlastní smyčkou; `no` znamená, že si ho mod nastartuje sám. |
| `operations.backup.when` | rozvrh | `off` | Kdy zálohovat. Vypnuté, protože kam ty zálohy patří, může rozhodnout jen člověk. |
| `operations.backup.warn-at` | délky času | `1m` | Jak dlouho předem to říct. Ukládání se na dobu kopie pozastaví. |
| `operations.backup.directory` | složka | `backups` | Kam jdou. **Dej to na jiný disk, když nějaký máš** — záloha na stejném disku jako svět přežije přesně ty poruchy, na kterých nezáleží. |
| `operations.backup.keep-everything-for` | délka času | `1d` | Do tohohle stáří se drží každá záloha. |
| `operations.backup.keep-one-a-day-for` | délka času | `7d` | Pak jedna denně, do tohohle stáří. |
| `operations.backup.keep-one-a-week-for` | délka času | `90d` | Pak jedna týdně, do tohohle stáří. Pevný počet záloh by u hodinového rozvrhu znamenal sedm hodin historie — a co chceš vrátit, se stalo včera. |
| `operations.backup.keep-free-megabytes` | celé číslo | `2048` | Radši zálohu vynechat, než pod sebou zaplnit disk. |
| `operations.announce.when` | rozvrh | `off` | Jak často něco říct. Obvyklá odpověď je `every 30m`. |
| `operations.announce.notices` | seznam oddělený čárkami | *(prázdné)* | Co říkat. Prostá řádka jde všem do chatu; `publikum \| kam \| text` to zúží — třeba `no-rank \| chat \| /vote pomáhá serveru`. Kam je `chat`, `actionbar` nebo `title`. |
| `operations.metrics.keep-for` | délka času | `7d` | Kolik historie čísel držet. Řádka za minutu, takže týden je asi deset tisíc řádků. |
| `operations.alerts.tps-below` | číslo | `15.0` | Řekni něco, když TPS spadne pod tohle. |
| `operations.alerts.memory-above-percent` | celé číslo | `90` | Řekni něco, když je zabráno tolik paměti. |
| `operations.alerts.must-last` | délka času | `1m` | Jak dlouho musí být hodnota špatně, než se to někomu řekne. Jeden špatný tick je načítající se chunk, ne problém. |
| `operations.alerts.quiet-for` | délka času | `15m` | Jak dlouho než smí přijít ten samý alert znovu. |
| `operations.screens.appeal` | text | *(prázdné)* | Kam se dá napsat, že byl trest špatně. Doplní se do každé obrazovky, která má `{appeal}`. **Ban, ze kterého se nedá nikam odvolat, je ban, o kterém se nikdy nedozvíš, že byl omyl.** |
| `operations.screens.maintenance` | text | `The server is closed for maintenance.…` | Co si přečte, kdo přijde během údržby. K dispozici `{reason}`, `{by}`, `{until}`, `{left}`, `{player}`, `{appeal}`. |
| `operations.screens.full` | text | `The server is full.…` | Co si přečte, kdo přijde na plný server. |
| `operations.screens.full-reserved` | text | `The server is full.…` | Totéž, když jsou poslední místa držená pro podporovatele. |
| `operations.join.reserved-places` | celé číslo | `0` | Kolik míst držet pro ty, kdo mají `keystone.join.reserved`. |
| `operations.clean.when` | rozvrh | `every 1m` | Jak často se kouknout, kolik je načteno. Tohle nic nestojí a nic neříká — je to kontrola, ne úklid. `off` vypne celý úklid. |
| `operations.clean.over-entities` | celé číslo | `1200` | Nad tímhle počtem entit to začne zajímat. Nejdřív se slévá, což to obvykle ukončí. |
| `operations.clean.below-tps` | celé číslo | `0` | A taky když TPS spadne pod tohle. `0` ignoruje. |
| `operations.clean.merge-radius` | číslo | `3.0` | Jak blízko musí být dvě hromádky téhož, aby se staly jednou. **Tohle nikoho nestojí nic** — věci zůstanou na zemi, na jedné hromadě. |
| `operations.clean.warn-at` | délky času | `30s, 10s, 5s` | Kolik předem varovat, když slévání nestačilo. |
| `operations.clean.older-than` | délka času | `30s` | Nesahej na nic, co spadlo později než tohle. |
| `operations.clean.items` | true nebo false | `true` | Uklízet volně ležící věci. |
| `operations.clean.experience` | true nebo false | `true` | Uklízet koule zkušeností. |
| `operations.clean.arrows` | true nebo false | `true` | Uklízet šípy na zemi. Letícího se to nedotkne nikdy. |
| `operations.clean.hostile-mobs` | true nebo false | `false` | Uklízet příšery. Vypnuté — a rozmysli si to, mobí farma je něčí odpoledne. |
| `operations.clean.passive-mobs` | true nebo false | `false` | Uklízet zvířata. Vypnuté, o to víc. |
| `operations.clean.named` | true nebo false | `false` | Uklízet to, co někdo pojmenoval cedulkou. Vypnuté. |
| `operations.clean.tamed` | true nebo false | `false` | Uklízet ochočená zvířata. Vypnuté. |
| `operations.clean.keep-entities` | id ze hry | `minecraft:villager, minecraft:item_frame, minecraft:armor_stand, minecraft:boat` | Entity, které se nesmažou nikdy, ať je zapnuté cokoliv. |
| `operations.clean.keep-items` | id ze hry | `minecraft:netherite_ingot, minecraft:netherite_block, minecraft:elytra` | Věci, které se nesmažou nikdy. Netherit na zemi není smetí. |

**Příklad — restart ve tři ráno, ale jen když je proč, a nikoho nepřeruší:**
```
/keystone set operations.restart.when 03:00
/keystone set operations.restart.after-uptime 12h
/keystone set operations.restart.wait-for-empty true
/keystone set operations.restart.wait-at-most 2h
```

**Příklad — denní záloha na jiný disk:**
```
/keystone set operations.backup.directory /mnt/zalohy/mc
/keystone set operations.backup.when 04:00
```

---

## `moderation.toml` — bany a kicky

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `moderation.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `moderation.take-over-vanilla` | true nebo false | `true` | **`/ban`, `/pardon` a `/kick` dělají to, co Keystone.** Vypnuté jsou zase příkazy hry — ban napsaný jako `/ban` je pro `/keystone bans` neviditelný, nikdy nevyprší a ukáže „You are banned from this server." **Nechat to vypnuté je rozhodnutí mít dva seznamy banů.** |
| `moderation.screens.appeal` | text | *(prázdné)* | Kam se odvolat. Doplní se do `{appeal}`. |
| `moderation.screens.banned` | text | `You are banned from this server.…` | Ban bez konce. K dispozici `{reason}`, `{by}`, `{until}`, `{left}`, `{player}`, `{appeal}`. |
| `moderation.screens.banned-until` | text | `You are banned … until {until}.…` | Ban s datem. |
| `moderation.screens.kicked` | text | `You were removed from the server.…` | Vyhození. |

---

## `accounts.toml` — kdo jsi na offline serveru

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `accounts.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `accounts.require` | true nebo false | `false` | **Nikdo nehraje, dokud neřekne, kdo je.** Pro server v offline režimu, kde kdo napíše jméno, ten ho dostane — včetně tvého. Na serveru, který se ptá Mojangu, nedělá nic. |
| `accounts.ask-on-discord` | true nebo false | `true` | **Ptát se na Discordu místo na heslo.** Kdo má propojený účet, dostane zprávu v okamžiku, kdy se pod jeho jménem někdo připojuje — kdo, odkud a dvě tlačítka. Pokus, který neudělal, se k němu dostane jako varování, ne jako tichá krádež. |
| `accounts.protect-bought-names` | true nebo false | `false` | **Jméno, které patří někomu, kdo si hru koupil, tu nesmí nosit nikdo jiný.** Když Mojang není k dosažení, neodmítne se nikdo — a `/keystone accounts allow <jméno>` pustí skutečného majitele. |
| `accounts.hold-name-for` | délka času | `15m` | Jak dlouho je jméno zavřené potom, co jeho majitel zmáčkne **Ne, to nejsem já**. Je to podržení, ne ban — pokus přijde stejně často ze školy nebo ze sdíleného bytu. |
| `accounts.least-length` | celé číslo | `8` | Nejkratší heslo, které server bere. Délka je jediné pravidlo, které stojí za to; velké písmeno a číslovka vyrobí `Heslo1` na každém serveru, který o ně kdy požádal. |
| `accounts.remember-for` | délka času | `1d` | Jak dlouho se **ze stejného místa** pustí bez ptaní. Nula se ptá pokaždé. Místo je jednosměrný otisk pod klíčem, který drží jen tenhle server — **Keystone si IP adresu nikdy nezapisuje**. |
| `accounts.must-prove-within` | délka času | `2m` | Kolik času má někdo na to se prokázat, než ho to odpojí. |
| `accounts.most-tries` | celé číslo | `5` | Kolik špatných hesel, než ho to odpojí. Připojit se může znovu — je to proti hádání, ne trest. |
| `accounts.iterations` | celé číslo | `210000` | Kolik práce stojí zahašování hesla. Zvyšuj, jak se hýbe hardware — ukládá se u každého hesla, takže tím nikomu nic nezneplatníš. |
| `accounts.screens.appeal` | text | *(prázdné)* | Kam se odvolat. |
| `accounts.screens.name-held` | text | `That name is closed at the moment.…` | Co si přečte ten, kdo přijde na zavřené jméno. |
| `accounts.screens.name-not-yours` | text | `The name {player} belongs to a Minecraft account.…` | Co si přečte ten, kdo si vzal koupené jméno. |

---

## `progress.toml` — hodnosti za hraní

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `progress.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `progress.promotions` | seznam oddělený čárkami | *(prázdné)* | **Hodnosti, které si lidi odehrají.** Řádka na každou, ve tvaru `hodnost -> co to chce`. Čárka znamená **a**; pro *nebo* napiš dvě řádky na tutéž hodnost. `played` a `active` jsou délky času, ostatní čísla. Počítadla jsou rodiny — `killed`, `mined`, `placed`, `visited` — a každé počítá rodinu i konkrétní věc. Modované id funguje jak je. Řádka, která nedává smysl, se při startu pojmenuje v logu a přeskočí. |
| `progress.count-idle-time` | true nebo false | `true` | **Jestli se stání počítá jako hraní.** Vypnuté a hodiny se po `idle-after` zastaví — to je to, co brání tomu, aby se hodnost Veterán vysedla na zapnutém notebooku. Obě čísla se drží tak jako tak. |
| `progress.idle-after` | délka času | `5m` | Jak dlouho se nesmí hnout ani rozhlédnout, než se počítá jako stojící. Nikoho to nevyhazuje a nikomu se to neříká. |
| `progress.announce` | true nebo false | `true` | Říct to serveru, když si někdo hodnost odehraje. Odměna, kterou nikdo nevidí, je většina důvodu, proč si nikdo hodností nevšimne. *(Do 0.1.0 se to nastavení jmenovalo špatně a nešlo nastavit.)* |
| `progress.check-every` | délka času | `1m` | Jak často se hráč porovná s povyšováním. |
| `progress.write-every` | délka času | `30s` | Jak často napočítané dojde do databáze. Tohle je to, co by pád serveru stál — třicet vteřin. |

**Příklad — žebřík za odehrané hodiny:**
```
/keystone set progress.promotions "wanderer -> played >= 5h, builder -> played >= 24h, veteran -> played >= 168h"
/keystone set progress.count-idle-time false
```

---

## `votes.toml` — hlasování

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `votes.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `votes.address` | text | *(prázdné)* | **Kde se hlasy přijímají.** Prázdné = nic neposlouchá, a tak to začíná: je to jediný port, který Keystone otevírá do světa, takže se otevře, protože se tak někdo rozhodl. `0.0.0.0` bere odkudkoliv, což je to, co hlasovací weby potřebují. Potom pusť `/keystone votes keys` a dej webu, co si řekne. |
| `votes.port` | celé číslo | `8192` | Port, na kterém hlasy chodí. 8192 je to, co weby čekají. |
| `votes.rewards` | seznam oddělený čárkami | *(prázdné)* | **Co hlas znamená.** Prostá řádka je příkaz spuštěný jako konzole, s doplněným `{player}` — tím pokryješ cokoliv, co umí kterýkoliv mod. `perk` a `rank` jdou místo toho do stejného seznamu jako koupená hodnost, takže `for 7d` skončí samo. |
| `votes.sites` | seznam oddělený čárkami | *(prázdné)* | **Kde se dá hlasovat**, jak to vypíše `/vote` — řádka na web, jméno a odkaz. |
| `votes.streaks` | seznam oddělený čárkami | *(prázdné)* | **Hlasování několik dní po sobě**, `<dnů> -> <odměna>`. Vynechaný den začne počítat znovu. |
| `votes.party-goal` | celé číslo | `0` | **Cíl, na který hlasuje celý server.** Když v okně přijde tolik hlasů, dostanou všichni online odměny a počítá se znovu. `0` je vypnuto. |
| `votes.party-window` | délka času | `1d` | Jak dlouho má server na to cíl dosáhnout. |
| `votes.party-rewards` | seznam oddělený čárkami | *(prázdné)* | Co dostanou všichni online, když se cíle dosáhne. |
| `votes.announce` | true nebo false | `true` | Říct serveru, že někdo hlasoval. Série se říká s tím — to je ta půlka, kvůli které jdou hlasovat ostatní. |
| `votes.announce-cooldown` | délka času | `5m` | Za jak dlouho smí být ten samý člověk ohlášený znovu. Osm webů u snídaně je jedna novina, ne osm. |
| `votes.time-zone` | časové pásmo | *(prázdné)* | Kterou půlnocí končí hlasovací den. Rozhoduje jen o sériích. |

**Příklad — začít hlasování:**
```
/keystone set votes.address 0.0.0.0
/keystone set votes.rewards "give {player} minecraft:diamond 3, rank vip for 1d"
/keystone votes keys
```
a v `ufw` pusť `8192` do světa: `sudo ufw allow 8192/tcp`.

---

## `tickets.toml` — tickety

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `tickets.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `tickets.kinds` | seznam oddělený čárkami | `help -> , bug -> , report -> ` | **Co může kdo otevřít a kdo to řeší**, řádka `druh -> skupina`. Skupina je jedna ze skupin oprávnění tohohle serveru a ticket dostane ten z ní, kdo jich nese nejmíň. Bez skupiny ticket čeká ve frontě, až si ho někdo vezme. |
| `tickets.limit-per-person` | celé číslo | `3` | Kolik jich smí mít jeden člověk otevřených naráz. |
| `tickets.cooldown` | délka času | `30s` | Za jak dlouho smí ten samý člověk otevřít další. Spíš proti dvojímu zmáčknutí enteru než proti někomu, kdo to zkouší. |

---

## `tablist.toml` — seznam hráčů

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `tablist.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `tablist.header` | seznam oddělený čárkami | *(prázdné)* | **Co je napsané nad seznamem**, řádka po řádce. Doplňuje se `{online}`, `{max}`, `{tps}`, `{player}`, `{rank}`, `{prefix}`, `{suffix}`, `{world}`. Barvy obyčejně — `&b` — a `&&` je ampersand, který jsi myslel vážně. |
| `tablist.footer` | seznam oddělený čárkami | *(prázdné)* | **Co je napsané pod ním.** Sem patří adresa serveru, jeho Discord nebo co se tenhle týden hraje. |
| `tablist.name` | text | `{prefix}{name}{suffix}` | **Jak se čte řádka jednoho člověka.** Prázdné nechá holé jméno. |
| `tablist.order-by-rank` | true nebo false | `true` | **Řadit podle hodnosti místo abecedy**, nejtěžší první. Od Minecraftu 1.21.2; na starších verzích na to není poctivá cesta, takže se tam nechá obvyklé pořadí. |
| `tablist.refresh` | délka času | `3s` | Jak často se překresluje. Posílá se jen to, co se změnilo. |

---

## `skins.toml` — skiny

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `skins.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `skins.restore-on-join` | true nebo false | `true` | Zeptat se Mojangu na jméno připojujícího se hráče a nasadit mu jeho skin. **Na offline serveru je to rozdíl mezi serverem Steveů a serverem, co vypadá normálně.** |
| `skins.allow-own-picture` | true nebo false | `true` | Jestli funguje `/skin <odkaz>`. Obrázek musí být podepsaný něčím, čemu Mojang věří, což znamená poslat ho službě níž. |
| `skins.signing-service` | text | `https://api.mineskin.org/generate/url` | **Čí služba podepisuje vlastní obrázek.** Odchází tam ten obrázek a nic jiného — žádné jméno, žádná adresa, žádné id. Prázdné vypne `/skin <odkaz>` úplně. |

---

## `bench.toml` — měření výkonu

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `bench.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `bench.share-live` | true nebo false | `true` | **Jednou denně se změří pět minut ticku tohohle serveru a pošle se** — jak dlouho trval tick, kolik lidí bylo, do kterého modu ten čas šel. Nic, co ten server pojmenuje: žádné jméno, žádná adresa, žádný hráč, žádné id. **`false` to vypne úplně.** |
| `bench.send-to` | text | `https://stygion.eu` | **Kam sdílený běh jde.** Vždycky až potom, co k tomu běhu někdo řekl ano. Můžeš to namířit na vlastní sběrač, nebo **vyprázdnit a nikdy neodejde nic**. |
| `bench.radius` | celé číslo | `0` | **Jak daleko od středu stojí testovací hráči**, v blocích. **Nula, výchozí, si to spočítá** — dost daleko, aby dva netikali ten samý kus světa. |
| `bench.baseline-seconds` | celé číslo | `30` | **Jak dlouho se měří server, který nic nedělá**, ještě než vznikne první testovací hráč. Každé číslo v reportu je rozdíl proti tomuhle. |
| `bench.settle-seconds` | celé číslo | `10` | **Jak dlouho se každá skupina drží, než přijde další.** Krátce a změříš krok ve chvíli, kdy se chunky ještě načítají. |
| `bench.step` | celé číslo | `5` | Kolik jich přijde naráz. Po skupinách proto, aby žádost o víc, než ta mašina unese, dala odpověď a ne zabití kvůli paměti. |
| `bench.send-to-discord` | true nebo false | `false` | **Dát hotový běh do discordového kanálu** bez ptaní. |
| `bench.send-to-stygion` | true nebo false | `false` | **Poslat hotový běh do veřejných čísel** bez ptaní. |

**Příklad — nic o tomhle serveru nikam nechodí:**
```
/keystone set bench.share-live false
/keystone set bench.send-to ""
```

---

## `assistant.toml` — asistent

| Nastavení | Čeká | Výchozí | Co dělá |
|---|---|---|---|
| `assistant.enabled` | true nebo false | `true` | Na false se modul vůbec nepostaví. |
| `assistant.address` | text | *(prázdné)* | **Kde je model**, až po `/chat/completions`, ne včetně — `https://api.anthropic.com/v1`, `https://api.openai.com/v1`, nebo `http://127.0.0.1:11434/v1` pro model na téhle mašině. Prázdné nechá asistenta vypnutého. Nic neteče přes STYGION a žádný náš klíč neexistuje. |
| `assistant.key` | token, uloží se a nikdy se neukáže | *(prázdné)* | **Klíč k té adrese.** Uloží se sem a nejde nikam jinam. Prázdné je správně pro model, který o klíč nestojí. |
| `assistant.model` | text | *(prázdné)* | **Který model**, přesně tak, jak ho ten poskytovatel píše. |
| `assistant.scopes` | seznam oddělený čárkami | *(prázdné)* | **Na co asistent smí dosáhnout**, jako scopy klíče. Prázdné znamená všechno, co ten server nabízí. Sám nezmění nic tak jako tak — změna se předloží člověku. |

**Příklad — model na téhle mašině přes Ollamu:**
```
/keystone set assistant.address http://127.0.0.1:11434/v1
/keystone set assistant.model llama3.1
/keystone set assistant.scopes "status.read, console.read, settings.read"
```
