Corestone

Konfiguracja

Wszystkie ustawienia są w plugins/CoreStatus/config.yml, z komentarzami po angielsku i po polsku. Po każdej zmianie wpisz /corestatus reload: wczytuje wszystko, także język i interwały.

Kolory zapisuj w cudzysłowie jako "#rrggbb". Bez cudzysłowu YAML uznaje # za komentarz.

Wartość, której nie da się użyć, zostaje zastąpiona domyślną, a konsola (i /corestatus reload) mówi jednym zdaniem, który klucz i co poprawić. Zdania te są po angielsku. Plik, który nie jest poprawnym YAML-em, daje ustawienia domyślne dla wszystkiego. Żaden z tych błędów nie zatrzymuje pluginu, a komunikaty nigdy nie cytują pliku, więc token webhooka nie trafia do konsoli.

Na proxy pierwsze uruchomienie zapisuje inny plik, zobacz Tryb sieci.

Poziom główny

Klucz Domyślnie Dozwolone Co robi
language en en, pl Język wiadomości na Discordzie i odpowiedzi komend. Inna wartość daje en.
footer true true, false Dopisek „Status by Corestone • corestone.dev” pod każdą wiadomością. false go ukrywa.

Wiadomość ze statusem: status

Jedna wiadomość, wysyłana za pierwszym razem, potem edytowana w miejscu. Po restarcie nadal edytowana jest ta sama wiadomość. Jeśli wiadomość usunięto na Discordzie, plugin wysyła nową.

Klucz Domyślnie Dozwolone Co robi
status.enabled true true, false Włącza lub wyłącza wiadomość ze statusem. Pozostałe funkcje nadal działają.
status.webhook puste adres webhooka Discorda Dokąd trafia status. Puste: nic nie jest wysyłane, a konsola przypomni o uzupełnieniu. Wartość, która nie jest adresem webhooka Discorda (zaczyna się od https://discord.com/api/webhooks/), jest pomijana z ostrzeżeniem.
status.interval-seconds 60 liczba całkowita, co najmniej 30 Jak często wiadomość jest odświeżana. Poniżej 30 zostaje podniesione do 30, bo Discord ogranicza szybsze edycje.
status.title puste tekst Tytuł wiadomości. Puste: „📊 Status serwera” lub „📊 Server status”, z pliku messages.
status.description puste tekst, do 1000 znaków Własna linia pod tytułem, np. powitanie albo informacja, jak dołączyć. Puste: bez linii. Dłuższy tekst jest przycinany, z ostrzeżeniem w konsoli.
status.color-online "#57F287" "#rrggbb" Kolor wiadomości, gdy serwer jest online.
status.color-offline "#ED4245" "#rrggbb" Kolor, gdy serwer jest offline.
status.icon puste adres https:// obrazka Mały obrazek w rogu wiadomości. Puste: brak. Każda inna wartość jest pomijana, z ostrzeżeniem w konsoli.
status.show.online true true, false Linia „Online” (z czasem działania, jeśli jest włączony). Wiadomość o serwerze offline zawsze mówi „Offline”.
status.show.players true true, false Liczba graczy online jako {players}/{max}.
status.show.player-list 10 liczba całkowita, 0 lub więcej Wypisz do tylu nicków, potem „+N więcej”. 0: bez listy. Nicki trafiają na Discorda zawsze, gdy wartość jest większa niż 0, czyli także przy wartości domyślnej. Bardzo długa lista jest skracana, aby wiadomość zawsze mieściła się w limicie Discorda; „+N więcej” liczy wtedy wszystkie pominięte nicki.
status.show.tps true true, false TPS z jednym miejscem po przecinku, za kolorowym kółkiem.
status.show.mspt true true, false Milisekundy na tick. Mierzą je tylko Paper i Purpur; na Folii i Spigocie linii nie ma.
status.show.uptime true true, false Jak długo działa serwer, w linii online: „Online od 2 d 3 h 14 min”. Wymaga status.show.online.
status.show.version true true, false Oprogramowanie i wersja serwera, np. Paper 1.21.4.
status.show.address puste tekst lub false Adres do skopiowania przez graczy, np. play.example.com. Puste lub false: nie jest pokazywany.

Linie są pogrupowane pod trzema nagłówkami: Gracze (liczba i lista), Wydajność (TPS i MSPT) oraz Serwer (wersja i adres). Nagłówek, którego linie są wszystkie wyłączone w status.show albo których serwer nie potrafi podać (Spigot nie ma MSPT, wersja bywa nieznana), znika razem z nimi. Każda wiadomość ze statusem kończy się linią „Ostatnia aktualizacja” z czasem, który Discord pokazuje w strefie czasowej czytającego. Wartości są pokazywane jako kod, nagłówki pogrubione.

Wiadomość z wszystkim włączonym (i ustawionym status.description) wygląda tak:

📊 Status serwera
Wpadaj! Status odświeża się co minutę.

🟢 Online od 4 h 12 min

👥 Gracze
» Online: 12/100
» Steve, Alex, Notch, Jeb, Dinnerbone +7 więcej

⚙️ Wydajność
» TPS: 🟢 20.0
» MSPT: 1.6 ms

🖥️ Serwer
» Wersja: Paper 1.21.4
» Adres: play.example.com

Ostatnia aktualizacja: minutę temu

Gdy serwer się zatrzymuje, wiadomość robi się czerwona i podaje, od kiedy serwer nie działa, w godzinie widocznej w strefie czasowej czytającego:

📊 Status serwera
🔴 Offline od 14:32
Serwer jest wyłączony. Wiadomość zmieni się sama, gdy wróci.

🖥️ Serwer
» Adres: play.example.com

Ostatnia aktualizacja: 3 minuty temu

Część „Serwer” pojawia się tylko wtedy, gdy ustawiono status.show.address.

Kolory TPS

TPS to średnia z ostatniej minuty, najwyżej 20. Kółko zależy od wartości w takiej postaci, jaka jest pokazana (jedno miejsce po przecinku):

Kółko TPS
zielone 18 lub więcej
żółte 15 lub więcej, ale poniżej 18
czerwone poniżej 15

Na Paperze i Purpurze TPS podaje serwer. Na Spigocie i na Folii (jej globalny region) CoreStatus sam liczy ticki.

Start i stop: start-stop

Krótka wiadomość przy starcie i przy zatrzymaniu serwera. Przy zatrzymaniu najpierw status zmienia się na „Offline”, potem wysyłana jest wiadomość „Serwer zatrzymany”. CoreStatus czeka na Discorda najwyżej 5 sekund, więc wolny Discord nigdy nie zatrzyma wyłączania serwera.

Po awarii CoreStatus nie zdąży się pożegnać. Przy następnym starcie wysyła „Serwer był offline od” z czasem ostatniego śladu życia, jeszcze przed „Serwer uruchomiony”. Dzieje się tak, gdy ostatni ślad życia jest starszy niż dwa interwały statusu. Zwykłe zatrzymanie tego nie wywołuje.

Klucz Domyślnie Dozwolone Co robi
start-stop.enabled true true, false Włącza lub wyłącza.
start-stop.webhook puste adres webhooka Discorda Własny webhook dla tych wiadomości. Puste: ten ze status.webhook.
start-stop.color "#5865F2" "#rrggbb" Kolor wiadomości.

Wejścia i wyjścia: join-leave

Wiadomość, gdy gracz wchodzi lub wychodzi. Domyślnie wyłączona, bo wysyła nicki graczy na Discorda. Gracze w vanish nie są ogłaszani.

Klucz Domyślnie Dozwolone Co robi
join-leave.enabled false true, false Włącza lub wyłącza.
join-leave.webhook puste adres webhooka Discorda Własny webhook dla tych wiadomości. Puste: ten ze status.webhook.
join-leave.max-per-minute 20 liczba całkowita, 1 lub więcej Najwyżej tyle wiadomości na minutę. Reszta jest liczona i wysyłana w jednym podsumowaniu („Pozostałe osoby: N”) na koniec minuty.
join-leave.color-join "#57F287" "#rrggbb" Kolor wiadomości o wejściu.
join-leave.color-leave "#99AAB5" "#rrggbb" Kolor wiadomości o wyjściu i podsumowania.

Niski TPS: low-tps

Jedno ostrzeżenie, gdy TPS przez kilka minut jest poniżej ustawionej wartości. Następne dopiero wtedy, gdy TPS wróci do tej wartości lub powyżej i znów spadnie. Przy ustawieniach domyślnych: poniżej 15 przez 5 minut.

TPS jest sprawdzany przy każdym odświeżeniu statusu, więc ostrzeżenie przychodzi po pierwszym niskim odczycie plus ustawione minuty. Sprawdzanie działa także wtedy, gdy status.enabled ma wartość false.

Klucz Domyślnie Dozwolone Co robi
low-tps.enabled true true, false Włącza lub wyłącza.
low-tps.webhook puste adres webhooka Discorda Własny webhook dla ostrzeżenia. Puste: ten ze status.webhook.
low-tps.threshold 15 liczba większa niż 0 Ostrzegaj, gdy TPS jest poniżej tej wartości...
low-tps.minutes 5 liczba całkowita, 1 lub więcej ...przez tyle minut z rzędu.
low-tps.color "#FEE75C" "#rrggbb" Kolor ostrzeżenia.

Więcej niż jeden webhook

Każda funkcja może pisać na własny kanał przez własny webhook. Pusty webhook oznacza ten ze status.webhook. Jeśli i on jest pusty, funkcja nic nie wysyła.

Kanał publiczny i kanał dla administracji. Status oraz wiadomości o starcie i zatrzymaniu są pisane z myślą o graczach, więc pasuje do nich kanał publiczny. Ostrzeżenie o niskim TPS, a także wejścia i wyjścia, jeśli zostaną włączone, są dla administracji: warto utworzyć drugi webhook na kanale dla administracji i wpisać go w low-tps.webhook (oraz join-leave.webhook). Dopóki te klucze są puste, wiadomości trafiają na kanał statusu, czyli do publiczności. /corestatus test i /corestatus status wypisują każdy ustawiony adres, po jednym razie, niezależnie od tego, czy jego funkcja jest włączona.

Po zmianie adresu statusu CoreStatus wysyła tam nową wiadomość ze statusem. Stara zostaje, gdzie była: trzeba ją usunąć na Discordzie.

Tryb sieci: Velocity i BungeeCord

Na proxy pierwsze uruchomienie zapisuje plugins/CoreStatus/config.yml dla wiadomości o sieci. Są w nim language, status, network i footer. Sekcji start-stop, join-leave i low-tps tam nie ma: każdy serwer za proxy ogłasza własne zdarzenia własnym CoreStatus.

Na proxy działa tylko pięć kluczy status; stylizują one wiadomość o sieci:

Klucz Domyślnie Dozwolone Co robi
status.title puste tekst Tytuł. Puste: „🌐 Status sieci” lub „🌐 Network status”.
status.description puste tekst, do 1000 znaków Własna linia pod tytułem. Puste: bez linii.
status.color-online "#57F287" "#rrggbb" Kolor, gdy każdy wypisany serwer jest online.
status.color-offline "#ED4245" "#rrggbb" Kolor, gdy choć jeden jest offline.
status.icon puste adres https:// obrazka Mały obrazek w rogu.

Sama wiadomość o sieci:

Klucz Domyślnie Dozwolone Co robi
network.enabled false true, false Włącza wiadomość o sieci. Domyślnie wyłączona: najpierw ustaw webhook.
network.webhook puste adres webhooka Discorda Dokąd trafia wiadomość. Puste: nic nie jest wysyłane, a konsola przypomni o uzupełnieniu.
network.interval-seconds 60 liczba całkowita, co najmniej 30 Jak często wiadomość jest odświeżana. Poniżej 30 zostaje podniesione do 30.
network.total true true, false Pokaż liczbę graczy na wypisanych serwerach, które są online.
network.servers dwa przykłady: lobby i survival lista z id i label Serwery do pokazania, w tej kolejności.
network:
  enabled: true
  webhook: "https://discord.com/api/webhooks/123/abc…"
  servers:
    - id: lobby
      label: "Lobby"
    - id: survival
      label: "Survival"
  • id musi być nazwą serwera z configu proxy: nazwą pod [servers] w velocity.toml Velocity albo pod servers w config.yml BungeeCord. Należy ją zapisać dokładnie tak jak tam. Nazwa, której proxy nie zna, jest pomijana w wiadomości, a konsola raz o tym informuje.
  • label to nazwa widoczna na Discordzie. Puste: id.
  • Stan online lub offline wynika z pingu proxy do serwera (proxy czeka najwyżej 10 sekund). Liczba graczy to liczba graczy, których proxy ma połączonych z tym serwerem.

Wiadomość o sieci wygląda tak:

🌐 Status sieci
👥 Gracze w sieci: 19
🟢 Lobby » 12 graczy • TPS 🟢 20.0
🟢 Survival » 7 graczy • TPS —
🔴 Creative » offline

Ostatnia aktualizacja: minutę temu

Serwery offline zostają na swoim miejscu na liście, w kolejności z network.servers.

TPS w sieci

Proxy nie potrafi zmierzyć TPS. Podaje go każdy serwer docelowy:

  • CoreStatus musi być zainstalowany na serwerze docelowym, ten sam jar. Do tego nie potrzebuje webhooka.
  • Serwer wysyła swój TPS raz na status.interval-seconds (własny interwał serwera, domyślnie 60) przez gracza połączonego z tym serwerem. Dlatego na tym serwerze musi być online co najmniej jeden gracz. Bez gracza nic nie może zostać wysłane.
  • Proxy pokazuje TPS dopóki ostatni raport nie jest starszy niż dwa interwały network.interval-seconds. Potem, i dla serwera, który nigdy nic nie zgłosił, pokazuje kreskę (—). Aby kreska nie migała między raportami, interwał serwera docelowego powinien być co najwyżej dwa razy dłuższy niż interwał proxy.

Gdy proxy się zatrzymuje, wiadomość zmienia się tak, że każdy serwer jest offline.

Zmiana tekstów

Każdy tekst, który pisze CoreStatus, pochodzi z messages_en.yml lub messages_pl.yml, zależnie od language. Pliki są w jarze. Aby zmienić tekst:

  1. Utwórz plugins/CoreStatus/messages_pl.yml (albo messages_en.yml).
  2. Wpisz do niego tylko klucze, które mają się zmienić. Pozostałe zachowują wbudowany tekst.
  3. Wpisz /corestatus reload.
status:
  title: "Nasz serwer survival"
event:
  joined: "{player} jest już online"

Zmienne w {nawiasach klamrowych} zostaw bez zmian: wstawia je plugin. Klucz, którego plugin nie zna, jest pomijany.

Klucze Zmienne
status.online-for {uptime}
status.offline-since {time}, znacznik czasu Discorda (godzina) widoczny w strefie czasowej czytającego
status.players {players}, {max}
status.player-list {names}, czyli nicki, zakończone tekstem status.more, gdy graczy jest więcej, niż mieści lista
status.more {count}
status.tps {tps}, wartość z kolorowym kółkiem, już w kodzie
status.mspt {mspt}
status.version {version}
status.address {address}
status.updated {time}, znacznik czasu Discorda widoczny w strefie czytającego
event.joined, event.left {player}
event.was-offline {time}
event.and-more {count}
event.low-tps {tps}, {threshold}, {minutes}
network.total {players}
network.server-online {server}, {players} (liczba z rzeczownikiem, z network.players), {tps} (z kółkiem, już w kodzie)
network.players.one, .few, .many (angielski: .one, .other) {count}
network.server-offline {server}
command.test-ok {name}
command.test-failed {name}, {reason}
command.status-header {version}
command.status-line {name}, {time}, {state}
console.config-warning {warning}

Pozostałe klucze (na przykład footer, status.title, status.online, status.offline, status.offline-note, status.section-players, status.section-performance, status.section-server, event.started, event.stopped, event.test, network.title, network.unknown-tps, command.usage, command.reloaded, command.admincontrol i console.no-webhook) nie mają zmiennych. Raporty o nieudanej wysyłce w konsoli są zawsze po angielsku.

Emoji, znaczniki pogrubienia i grawisy wokół wartości są częścią tekstów, więc można je zmienić lub usunąć. Wartość między grawisami Discord pokazuje jako kod.