Vanilla Minecraft nemá žádné nastavení, které by skrylo nebo změnilo žluté řádky „joined the game“ a „left the game“. Neexistuje na ně gamerule, klíč v server.properties ani háček pro datapack. Chceš-li je změnit, potřebuješ plugin a na serveru s Paperem je obvyklou odpovědí EssentialsX: custom-join-message a custom-quit-message v jeho config.yml, kde "none" ponechá vanilla zprávu a "" ji úplně skryje. Členové staffu, kteří se mají připojit bez ohlášení, dostanou allow-silent-join-quit: true a oprávnění essentials.silentjoin a essentials.silentquit. Jediný požadavek, který žádný konfigurační soubor nepokryje, je „ukaž zprávu všem kromě hráče, který se připojil“ - na to stačí pár řádků v Skriptu nebo malý plugin, obojí najdeš níže.
Proč na to vanilla nemá přepínač#
Zpráva o připojení není text, který server napíše sám. Když se hráč přihlásí, server pošle všem připojeným klientům překládatelnou komponentu - klíč multiplayer.player.joined s jménem hráče jako argumentem - a každý klient ji vykreslí ve svém jazyce. Odchod používá multiplayer.player.left a hráč, který si od poslední návštěvy změnil jméno, dostane multiplayer.player.joined.renamed, tedy řádek „(formerly known as ...)“. Zpráva jde všem online, včetně hráče, který právě dorazil, a vypíše se také do konzole serveru.
Mojang za ta léta přidal gamerule pro mnoho hlášení - zprávy o smrti, oznámení o advancementech, výstupy příkazů - ale nikdy ne pro připojení a odchody. To je celý důvod, proč se na to lidé pořád ptají: projdou seznam gamerules, najdou showDeathMessages a announceAdvancements a předpokládají, že musí existovat i varianta pro připojení. Neexistuje. Novější verze navíc gamerules přejmenovávají (1.21.11 je přesunula na názvy malými písmeny s podtržítky, například show_death_messages), takže když hledáš přepínač pro smrt nebo advancementy, doplň si /gamerule tabulátorem na své vlastní verzi a nespoléhej na starý seznam.
Co vanilla má, pro úplnost:
- Resource pack serveru může přepsat překlad. Nastavením
multiplayer.player.joinedna prázdný řetězec v jazykovém souboru packu se změní, co klienti zobrazují, ale funguje to jen u hráčů, kteří pack přijmou, na některých verzích to nechá v chatu prázdný řádek a po dobu, kdy je pack načtený, to mění text i v singleplayeru. Je to kuriozita, ne řešení. Jak se pack serveru doručuje, popisuje článek MOTD, ikona a resource packy. - Nic na straně konzole. Ani řádek v logu konzole nejde bez pluginu potlačit.
Na vanilla nebo Fabric serveru je tedy upřímná odpověď „přejdi na Paper, nebo najdi mod, který zprávu upraví“. Zbytek tohoto návodu počítá s Paperem nebo jeho forkem, což je to, co provozuje většina serverů s pluginy.
Co Paper a Spigot umí a neumí změnit#
Paper ani Spigot nevystavují zprávu o připojení ve svých vlastních konfiguračních souborech. spigot.yml má blok messages:, ale ten pokrývá kick kvůli whitelistu, neznámý příkaz, plný server, zastaralého klienta a server a texty restartu - ne připojení. Paperův config/paper-global.yml má sekci messages: s jedním souvisejícím klíčem:
messages: use-display-name-in-quit-message: falseS hodnotou true používá zpráva o odchodu zobrazované jméno hráče (které mohl změnit plugin pro přezdívky nebo prefixy) místo uživatelského jména. Zprávu to neskryje a pro připojení žádný odpovídající klíč není.
Co Paper dává, je API. Každé připojení vyvolá PlayerJoinEvent, jehož zprávu může libovolný plugin nahradit nebo vymazat, a každý odchod stejně tak PlayerQuitEvent. Paper pro ně používá komponenty Adventure, takže plugin může nastavit plně formátovanou zprávu s hex barvami, textem při najetí myší a akcemi po kliknutí. Tak to dělá EssentialsX, vanish pluginy i chatové pluginy - a proto se také dva nainstalované současně mohou o stejnou zprávu přetahovat, což je rozebráno v řešení potíží níže.
| Kde | Kontrola připojení a odchodu | Poznámky |
|---|---|---|
| Vanilla, Fabric | Žádná | Jen mody nebo trik s resource packem |
spigot.yml | Žádná | Jen jiné kick a chybové texty |
paper-global.yml | Jen jméno u odchodu | use-display-name-in-quit-message |
| Pluginy | Plná | Přes eventy připojení a odchodu |
EssentialsX custom-join-message a custom-quit-message#
Pokud už EssentialsX na serveru běží, pro běžné případy nepotřebuješ nic dalšího. Klíče jsou v plugins/Essentials/config.yml v hlavním jaru, takže není potřeba žádný modul. Výchozí hodnoty:
custom-join-message: "none"custom-quit-message: "none"custom-new-username-message: "none"hide-join-quit-messages-above: -1Ty dvě hodnoty, na kterých záleží, se snadno zamění a spousta odpovědí na fórech je má obráceně:
"none"znamená, že Essentials zprávu nechá být - hráči uvidí normální vanilla řádek „joined the game“.""(prázdný řetězec) znamená, že zpráva se úplně skryje.
Skrytí obou zpráv pro všechny tedy vypadá takto:
custom-join-message: ""custom-quit-message: ""Pak spusť /essentials reload (z konzole essentials reload bez lomítka) a vyzkoušej to přihlášením z druhého účtu. Obecná mechanika souboru - pravidla YAML, co vyžaduje restart, které sekce závisí na jarech modulů - je v průvodci config.yml pro EssentialsX, takže se tu neopakuje.
Chceš-li zprávu místo skrytí nahradit, napiš vlastní text s barevnými kódy & a zástupnými výrazy, které Essentials nabízí:
| Zástupný výraz | Změní se na |
|---|---|
{PLAYER} | Zobrazované jméno (přezdívka, prefix) |
{USERNAME} | Jméno účtu |
{PREFIX} / {SUFFIX} | Prefix a suffix z pluginu pro oprávnění |
{ONLINE} | Aktuálně online hráči |
{UNIQUE} | Unikátní hráči, kteří se kdy připojili |
{UPTIME} | Jak dlouho server běží |
custom-join-message: "&8[&a+&8] &7{USERNAME}"custom-quit-message: "&8[&c-&8] &7{USERNAME}"Tento kompaktní styl [+] jméno / [-] jméno je na vytížených serverech oblíbený, protože přenese informaci na čtvrtině místa. Přívětivější verze pro malý server může být "&e{PLAYER} &7has arrived - {ONLINE} online".
Pár detailů, které stojí za to znát, než si vybereš formát:
- `{PLAYER}` oproti `{USERNAME}`.
{PLAYER}obsahuje všechno, co si zobrazované jméno nabralo -/nick, prefix ranku z LuckPerms přes Vault. Pokud tvůj formát chatu už ranky ukazuje, může být řádek o připojení s{PLAYER}dlouhý a hlučný.{USERNAME}je vždy čisté jméno účtu. - Prefixy potřebují Vault.
{PREFIX}a{SUFFIX}pocházejí z tvého pluginu pro oprávnění přes Vault. S LuckPerms bez Vaultu vyjdou prázdné. Průvodce LuckPerms popisuje nastavení prefixů po skupinách. - Hodnotu dej do uvozovek. Zpráva začínající znakem
&nebo obsahující dvojtečku musí být v uvozovkách, jinak se YAML nenačte a Essentials tiše ponechá starou hodnotu.
Přejmenovaní hráči
custom-new-username-message se použije místo custom-join-message, když se vracející se hráč od poslední návštěvy přejmenoval v Mojangu. S výchozí hodnotou "none" Essentials použije i pro něj tvoji běžnou vlastní zprávu o připojení. Chceš-li přejmenování zdůraznit, klíč přijímá také {OLDUSERNAME}. Pokud nastavíš vlastní zprávu o připojení, zkontroluj i tento klíč, jinak dostanou přejmenovaní hráči zprávu v jiném stylu než všichni ostatní.
Skrytí zpráv jen při vytíženém serveru
hide-join-quit-messages-above je nastavení, které chtějí velké servery a malé ne. S hodnotou -1 (výchozí) se zprávy zobrazují vždy. Nastav číslo a zprávy o připojení a odchodu se přestanou zobrazovat, jakmile je online tolik hráčů:
hide-join-quit-messages-above: 40Na serveru se šedesáti lidmi a neustálým příchodem a odchodem spam o připojeních vytlačuje skutečnou konverzaci z obrazovky, kdežto na serveru s osmi kamarády je řádek o připojení způsob, jak poznáš, že je někdo online. Tento klíč umožní, aby stejná konfigurace sloužila oběma fázím života serveru.
Skrytí vlastní zprávy o připojení před samotným hráčem#
Téma, které sem přivádí mnoho lidí, je užší: všichni ostatní mají vidět „Alex joined the game“, ale Alex ne, protože to ví, a na serveru s uvítací zprávou nebo MOTD v chatu je to jen další řádek, který odsouvá užitečný text.
Žádný klíč v EssentialsX to neumí. Event připojení má jednu zprávu, která se rozešle všem; nemá seznam příjemců. Cesta okolo je vymazat zprávu eventu a poslat vlastní kopii každému hráči kromě toho, kdo se připojil. Ve Skriptu, pokud ho už provozuješ:
on join: set join message to "" loop all players: loop-player is not player send "&e%player% joined the game" to loop-playerŘádek loop-player is not player je podmínka, která připojujícího se hráče přeskočí. Skript je ale na tohle samotné těžký plugin. Pokud ty nebo někdo z tvého týmu píše v Javě, je totéž tucet řádků v listeneru Paper pluginu:
@EventHandlerpublic void onJoin(PlayerJoinEvent event) { Component message = event.joinMessage(); event.joinMessage(null); if (message == null) return; Player joined = event.getPlayer(); for (Player p : Bukkit.getOnlinePlayers()) { if (!p.equals(joined)) p.sendMessage(message); } Bukkit.getConsoleSender().sendMessage(message);}Dvě věci v tomto úryvku jsou záměrné. Nejdřív přečíst joinMessage() a znovu ji odeslat znamená, že zůstane zachováno, cokoli už nastavil EssentialsX nebo jiný plugin - tvůj listener mění jen to, kdo ji dostane. A řádek pro konzoli vrací připojení do logu serveru, protože vymazání zprávy eventu ji odstraní i z konzole, což později ztěžuje moderaci. Listener zaregistruj s pozdní prioritou (@EventHandler(priority = EventPriority.HIGHEST)), aby běžel až po pluginech, které zprávu formátují.
Nekombinuj to s custom-join-message: "" v Essentials. Pokud Essentials zprávu vymaže jako první, tvůj listener nemá co přeposlat a připojení neuvidí vůbec nikdo.
Tiché připojení pro staff#
Staff se často chce přihlásit bez ohlášení - aby sledoval podezřelého cheatera, něco zkontroloval ve 3 ráno, nebo prostě proto, že připojení moderátora mění chování chatu. EssentialsX to řeší jedním konfiguračním klíčem a třemi oprávněními:
allow-silent-join-quit: true| Oprávnění | Efekt |
|---|---|
essentials.silentjoin | Žádná zpráva o připojení pro tohoto hráče |
essentials.silentquit | Žádná zpráva o odchodu pro tohoto hráče |
essentials.silentjoin.vanish | Při příchodu je navíc ve vanishi |
Žádné z těchto oprávnění nic nedělá, dokud je allow-silent-join-quit nastaven na false, což je výchozí hodnota, takže zapnutí klíče je krok, který lidé přehlížejí. Oprávnění přiděluj skupině, ne jednotlivcům:
$ lp group moderator permission set essentials.silentjoin true$ lp group moderator permission set essentials.silentquit true$ lp group moderator permission set essentials.silentjoin.vanish trueRozmysli si, jestli chceš i vanish oprávnění. Tiché připojení bez vanishe pořád dá hráče do tab listu, do výpisu /list i do počtu spících hráčů, takže každý, kdo dává pozor, ho za pár sekund uvidí přijít. Tiché připojení odstraní jen řádek v chatu. Pozor na jednu past u skupin s wildcardem: skupina s essentials.* drží všechna tři oprávnění, takže admini, kteří čekali, že budou ohlášeni normálně, ohlášeni nebudou. Pokud chceš wildcard, ale ne ticho, nastav na této skupině oprávnění výslovně na false.
Vanish pluginy a falešné zprávy o připojení a odchodu#
Vanish je druhá polovina problému se staffem. EssentialsX má /vanish (oprávnění essentials.vanish), který hráče skryje v tab listu a ve výhledu ostatních. Související klíče:
hide-displayname-in-vanish: true- drží zobrazované jméno hráče ve vanishi mimo místa, která by ho prozradila.sleep-ignores-vanished-player: true- admin ve vanishi neblokuje přeskočení noci.last-message-reply-vanished: false- hráči nemohou odpovědět přes/replyhráči ve vanishi, kterého nevidí, což by ho jinak prozradilo.
Essentials /vanish nevypíše falešný řádek „left the game“, když někdo zmizí, takže moderátor, který zmizí uprostřed rozhovoru, prostě zmizí z tab listu bez vysvětlení. Právě tady si své místo získávají specializované vanish pluginy. SuperVanish (zdarma) a PremiumVanish (placený, od stejného autora) umějí při zmizení hráče poslat falešnou zprávu o odchodu a při jeho znovuobjevení falešnou zprávu o připojení, skrýt skutečné zprávy o připojení a odchodu u hráčů, kteří se přihlásí ve vanishi, a spolupracují s dalšími pluginy, aby se skrytý staff neobjevoval třeba na webových mapách nebo v propojení s Discordem. Jejich volby jsou ve vlastních konfiguračních souborech; po prvním startu si přečti vygenerovaný config.yml a nekopíruj klíče ze starého příspěvku na fóru, protože se rozložení mezi verzemi změnilo.
Používej jeden vanish systém, ne dva. Provoz SuperVanish vedle Essentials /vanish dává dvě různé představy o tom, kdo je skrytý, a ostatní pluginy uvěří tomu, kterého se zrovna zeptají.
Zprávy při prvním připojení a uvítání#
Když se hráč připojí úplně poprvé, mohou se objevit dvě zprávy: normální zpráva o připojení (vanilla nebo tvoje vlastní) a oznámení o novém hráči od Essentials z modulu Spawn.
newbies: announce-format: '&dWelcome {DISPLAYNAME}&d to the server!' spawnpoint: newbies kit: toolsannounce-format se rozešle všem, jen při úplně prvním připojení hráče a jen pokud je nainstalováno jar EssentialsX Spawn - bez něj se sekce newbies: vůbec nečte. Nastavením na '' uvítání vypneš. Všimni si, že zástupný výraz je tady {DISPLAYNAME}, ne {PLAYER}; obě sekce používají pro totéž jiné názvy a zkopírování jednoho do druhé vypíše doslovný text. Řádky kit a spawnpoint ve stejném bloku jsou popsány v článku EssentialsX kity, warpy a homes.
Dobrý vzor na komunitním serveru je tiché běžné připojení ([+] jméno) plus hlasitější uvítání při prvním připojení, aby si stálí hráči nováčka všimli a pozdravili ho, aniž by byl chat celý večer plný žlutých řádků. Pokud chceš soukromý pozdrav, který uvidí jen nový hráč - pravidla, odkaz na Discord - jde o message of the day, ne o zprávu o připojení. EssentialsX zobrazuje soubor motd.txt ve své složce každému hráči při přihlášení, a to jen jemu.
Barvy, hex a MiniMessage#
custom-join-message a custom-quit-message berou klasické kódy &: &a až &f a &0 až &9 pro barvy, &l tučně, &o kurzíva, &r reset. To pokryje většinu potřeb.
MiniMessage je formát založený na značkách z knihovny Adventure, kterou Paper používá - <green>, <gradient:#ff0000:#0000ff>, <hover:show_text:'...'>. Moderní pluginy ho čím dál víc očekávají a je to jediný praktický způsob, jak dát na řádek o připojení text při najetí myší nebo akci po kliknutí. EssentialsX přesunul vlastní jazykové soubory na značky ve stylu MiniMessage ve vydáních 2.21 (odtud pocházejí primární a sekundární barvy message-colors v config.yml), ale klíče pro připojení a odchod v config.yml pořád dokumentují kódy & a zástupné výrazy. Pokud chceš gradient nebo klikací zprávu o připojení, nastav zprávu z pluginu, který MiniMessage podporuje, nebo z vlastního listeneru přes MiniMessage.miniMessage().deserialize(...), a klíče Essentials nech na "none", aby se nesrazily.
Ať použiješ cokoli, drž řádky o připojení krátké. Objevují se desítkykrát denně a dvouřádkový gradientní banner přestane být okouzlující už druhý večer.
Sítě, Discord a další místa, kde se připojení objeví#
Skrytí řádku ve hře neskryje připojení všude.
- Proxy sítě. Za Velocity nebo BungeeCordem vyvolává každý backend server vlastní eventy připojení a odchodu. Hráč, který přejde z lobby do survivalu, z lobby „odejde“ a do survivalu se „připojí“, takže to oznámí oba servery a hráči vidí spam o připojeních pokaždé, když někdo změní server. Obvyklé řešení je skrýt zprávy o připojení a odchodu na každém backendu (
custom-join-message: ""na každém) a pro zprávy o připojení a odchodu v celé síti použít plugin na straně proxy. Uspořádání popisuje síť s proxy Velocity. - Propojení s Discordem. DiscordSRV posílá do propojeného kanálu vlastní zprávy o připojení a odchodu, nastavené ve svých souborech. Jejich skrytí ve hře tam nic nezmění - viz DiscordSRV a integrace s Discordem a pokud se staff připojuje potichu, zkontroluj jeho integraci s vanishem.
- Tab list a `/list`. Skrytá zpráva o připojení nechá hráče viditelného v obou, pokud není ve vanishi.
- Konzole. Vymazání zprávy v eventu ji odstraní i z logu. Pokud moderace závisí na logu, pošli ji znovu do konzole jako v listeneru výše.
Řešení potíží#
`custom-join-message: "none"` pořád zobrazuje zprávu. To je správné chování - "none" znamená vanilla. Na skrytí použij "".
Po reloadu se nic nezmění. YAML se nenačetlo (obvyklou příčinou je neuvozené & na začátku hodnoty), nebo jsi upravil kopii souboru. Sleduj konzoli při /essentials reload; chyba parsování pojmenuje řádek.
Objeví se dvě zprávy o připojení. Zprávu nastavují dva pluginy - Essentials a chatový plugin nebo plugin pro zprávy o připojení, případně Essentials a SuperVanish. Jeden z nich nech na výchozím nastavení. Pokud je jednou z těch dvou announce-format pro první připojení, je to očekávané, ale jen při prvním připojení.
Staff s tichým připojením je pořád ohlášen. allow-silent-join-quit je pořád false, nebo je oprávnění nastaveno na skupině, kterou hráč nedědí. lp user <name> permission check essentials.silentjoin ukáže, co Essentials vidí.
Admini se připojují potichu, i když by neměli. Wildcard jako essentials.* zahrnuje i tichá oprávnění. Nastav je na této skupině na false.
Zprávy po instalaci pluginu úplně zmizely. Něco vymazalo zprávu eventu s vyšší prioritou. Odebírej pluginy po jednom, nebo spusť /plugins a hledej cokoli se slovem „join“ nebo „chat“ v názvu. Proč právě tohle způsobují dva pluginy, které dělají jednu práci, vysvětluje článek Pluginy, které stojí za instalaci.
FAQ#
Existuje gamerule na vypnutí zpráv o připojení?
Ne. Gamerules existují pro zprávy o smrti a oznámení o advancementech, ale zprávy o připojení a odchodu je v Java Edition nikdy neměly. Potřebuješ plugin nebo mod.
Skryje "none" zprávu o připojení v EssentialsX?
Ne, dělá pravý opak: "none" říká Essentials, aby vanilla zprávu nechal být. Prázdný řetězec "" ji skryje.
Můžu skrýt zprávu o připojení jen pro hráče, který se připojil?
Konfigurací ne. Zpráva o připojení je jedno hlášení pro všechny. Vymaž ji a pošli znovu každému hráči kromě toho, kdo se připojil, pomocí Skriptu nebo malého listeneru.
Mohou se hráči s rankem připojit bez ohlášení?
Ano. Nastav v Essentials allow-silent-join-quit: true a jejich skupině přiděl essentials.silentjoin a essentials.silentquit. Přidej essentials.silentjoin.vanish, pokud mají být při příchodu navíc neviditelní.
Zastaví skrytí zpráv o připojení zobrazování připojení na Discordu?
Ne. Propojení s Discordem jako DiscordSRV posílají vlastní oznámení o připojení a odchodu, nastavená odděleně v souborech propojení.


