STYGION Dokumentace Hledat v dokumentaci

Keystone ve hře hráče: obrazovky, HUD a motivy

Co klientská část kreslí od 0.3: Keystone Settings, motivy jako malá podmnožina CSS, HUD, upozornění, vzhled herních obrazovek podle modpacku a veřejný ClientToolkit pro doplňky.

Keystone 0.2.8 Aktualizováno 5 min čtení
Na téhle stránce 7 částí
  1. Keystone Settings
  2. Motivy
  3. HUD
  4. Upozornění
  5. Chat
  6. Vzhled herních obrazovek podle modpacku
  7. Pro doplňky: ClientToolkit

Keystone ve hře hráče: obrazovky, HUD a motivy

Od 0.3 klientská část – týž jar v mods/ hráče, co si klient a server říkají, viz klientská část – kreslí skutečné obrazovky a HUD. Modul client na serveru je ve výchozím stavu vypnutý. Hráč bez klientské části nic nepřijde: každá obrazovka má svou verzi v chatu nebo v truhle. Nic tu nezávisí na STYGIONu.

Keystone Settings

#

Otevře se klávesou K (dá se změnit), příkazem /keystone settings nebo tlačítkem Config v seznamu modů. Záložky Chat, HUD, Ultimine, Upozornění a Motiv, každá s živým náhledem. Všechno se ukládá jen na počítači hráče (config/keystone-client.json) a nikam se neposílá; co server zamkl, je vidět jako zamčené.

Motivy

#

Motiv jsou data, nikdy kód: malá podmnožina CSS, kterou klient kreslí sám – žádný prohlížeč, žádný skript – takže sdílený motiv umí změnit barvy a nic jiného.

Kód
:root { --accent: #e8913a; }
panel { background: #0f0d0b / 88%; border: 1px solid #5c2e14; radius: 3px; shadow: 2px 2px 0 #000000; }
tab:selected { background: var(--accent); color: #24110a; }
badge[legend] { background: linear-gradient(90deg, #a8204a, #ffca36); }

Selektor je slovo s volitelným .část, [klíč] a :stav; vlastnost se hledá od nejkonkrétnějšího selektoru k samotnému slovu a pak k výchozí hodnotě motivu. Čemu klient nerozumí, přeskočí, nikdy to není chyba; soubor se čte do 16 KB.

  • Čtyři jsou v jaru: Night (výchozí), STYGION, Mist a High contrast. Server přidá vlastní jako config/keystone/themes/<jméno>.kcss.
  • theme.default je vzhled, se kterým nový hráč začíná; theme.offered motivy, ze kterých si hráč smí vybrat.
  • theme.own (zapnuto) dovolí hráči upravit si vlastní motiv a sdílet ho jako kód začínající KS1:, který jiný hráč vloží v Settings.

HUD

#

Malý panel, který nic nezakryje. Ve výchozím stavu jsou vidět jen questy, vpravo nahoře: hlavička třeba DNES · 2 / 3 s časem do resetu, nejvýš tři questy (hud.quests.rows), počet vpravo a jeden tenký pruh pod prvním nedokončeným. Quest, který dokončíš během hraní, na pár vteřin zezelená s nápisem hotovo a zabalí se. Panel není nikdy širší než hud.width procent obrazovky (výchozí 22); dlouhý název se zalomí na druhý řádek, nikdy se neusekne. Při velkém měřítku GUI zůstává HUD stejně malý jako při měřítku 2.

Ostatní prvky jsou vypnuté, dokud si je hráč nezapne (Settings → HUD, klávesa K): pozice (souřadnice, biom, směr, čas, svět, čí je claim), server (ping, TPS, hráči, příští restart, dnešní hlas a série), hráč (mince, klíče, rank a čas do dalšího, odznaky), seznamy (připnuté seznamy) a panely (vlastní panely majitele, menu). Co server nezamkl, si hráč přetáhne, zvětší nebo skryje (Settings → HUD → Move panels).

Uhýbá tomu, co už na obrazovce je. Každý panel si vezme první volné místo: začne ve svém rohu, posune se podél okraje, pak zkusí další rohy, a přeskládá se, když se něco objeví — ikony efektů, bossbary, tooltip Jade, chat (otevřený zabere víc), scoreboard, hotbar, panel ultiminu a minimapy JourneyMap a FTB Chunks tam, kam je dají jejich vlastní nastavení (čte je z jejich configů; ani jeden mod není potřeba). Pro jakýkoli jiný mod je hud.avoid: roh a velikost v pixelech GUI nebo v procentech výšky obrazovky, případně odsazené od rohu — top-right 120x90, top-right 120x90+0+20, top-left 30%x35%. Stejné řádky může dát i pack do svého souboru (níž). Panel, který hráč přetáhl, zůstane přesně tam, kam ho dal.

client.toml: hud.enabled, hud.every (2 s; hodnoty se posílají jen při změně), hud.elements (co existuje), hud.shown (co vidí nový hráč; quests), hud.locked (co se nesmí posunout ani skrýt), hud.anchor.<prvek>, hud.quests.rows (3), hud.width (22), hud.avoid, hud.position.claim, hud.position.biome. Hodnoty a jejich klíče: hodnoty HUD.

Upozornění

#

Krátká upozornění vyjedou v rohu: odznak, splněný quest, zmínka, týmový seznam, zakázka, restart nebo hlas. toasts.kinds říká, které druhy server vůbec posílá; každý hráč si vybere, které chce vidět.

Chat

#

chat.images (zapnuto): obrázky a GIFy z Discordu se ukážou v chatu ve hře; stahuje je server jen z vlastních adres Discordu, nikdy hráči. chat.heads (zapnuto): řádky chatu ukazují hlavu toho, kdo píše.

Vzhled herních obrazovek podle modpacku

#

config/keystone-pack.json patří packu, ne hráči, a když chybí, nic nemění:

Kód
{"hud": {
  "background": "#E61A0C06", "border": "#FF5C2E14", "title": "#FFFFCA36", "text": "#FFF8E9CC",
  "muted": "#FFB9A184", "bar": "#FFE8913A", "track": "#FF2F170A", "done": "#FFA9C25A",
  "avoid": ["top-left 120x60"]
 },
 "gui": {
  "container-label-color": "#F8E9CC",
  "container-label-screens": ["com.example.SomeScreen"],
  "tooltip": {"background": "#F01A0C06", "border-top": "#FFFFCA36", "border-bottom": "#FFA8204A"}
}}

Barvy se píšou jako ve hře: #AARRGGBB (alfa první) nebo #RRGGBB. hud nastaví barvy HUD přes motiv hráče (každý klíč je nepovinný) a přidá místa, kterým se HUD vyhne; gui obarví popisky obrazovek kontejnerů (všech herních a vyjmenovaných tříd) a tooltipy.

Barva popisků platí pro kontejnerové obrazovky samotné hry a pro vyjmenované třídy obrazovek, takže obrazovka modu se světlými texturami si nechá tmavé popisky. Barvy tooltipů platí na Minecraftu 1.21.x; 26.x kreslí tooltipy ze spritů, které místo toho přebarví resource pack. Obrazovky jiných modů se nikdy nepřebarvují.

Pro doplňky: ClientToolkit

#

ModuleContext.client() dá modulu nebo doplňku klientskou část jako data, nikdy kód:

  • send(hráč, téma, data) – data pod tématem (malá slova s tečkami), nejvýš 512 KiB.
  • open(hráč, obrazovka, data) – jedna z obrazovek klienta (quests, market, crate, changelog, menu, lists, jobs, settings, vote); pro hráče bez klientské části vrátí false, ať volající odpoví do chatu.
  • notify(hráč, druh, titulek, text, ikona) – upozornění.
  • onAction(téma, handler) – co klientské části posílají zpátky, už s omezenou velikostí (8 KiB) a přečtené; každou hodnotu je potřeba kontrolovat jako argument příkazu.
  • hud(klíč, hodnota) – hodnota HUD, ptá se jí při každém obnovení na vlákně serveru; musí to být levný pohled do paměti.

Pro hráče bez klientské části nedělá žádné volání nic. Player.runCommand spustí příkaz za hráče s jeho vlastními oprávněními. GET /v1/client/hud (scope players.read) vypíše klíče HUD a rozložení, které server navrhuje.

Pomohla vám tahle stránka?

Otevře panel zpětné vazby s touhle stránkou v příloze. Přistane do jedné fronty se vším ostatním.