RE:NODE

EssentialsX: kity, warpy, homy a spawn - kompletní nastavení

Text: Tým RE:NODE
15 min čtení


Kity v EssentialsX jsou uložené v plugins/Essentials/kits.yml, každý má seznam předmětů a delay v sekundách a hráč si ho může vyzvednout, jen když má oprávnění essentials.kits.<name>. Warpy se vytvářejí příkazem /setwarp a dají se zamykat jednotlivě, jakmile zapneš per-warp-permission. Limity homů pocházejí z tabulky sethome-multiple v config.yml a páruje se na ně s oprávněními essentials.sethome.multiple.<tier>. /spawn v hlavním jaru vůbec není - potřebuješ k tomu samostatný modul EssentialsX Spawn. Těmito čtyřmi fakty se dá vysvětlit skoro každá hláška „kit nefunguje“ na čerstvém serveru s Paperem a zbytek tohoto návodu jsou podrobnosti k nim.

Zůstatky, /pay, worth.yml a obchody najdeš v návodu k ekonomice EssentialsX a Vault. Tenhle článek je o té polovině pluginu, která se stará o pohyb a startovní vybavení, a právě tam survival servery tráví většinu času u konfigurace.

Kde EssentialsX ukládá kity, warpy, homy a spawny#

EssentialsX je několik jarů. Hlavní jar EssentialsX obsahuje kity, warpy, homy, žádosti o teleport a ekonomiku. EssentialsXSpawn je samostatné stažení, které přidává /spawn, /setspawn, obsluhu prvního připojení a pravidla respawnu. Nainstaluj hlavní jar a jen ty moduly, které opravdu používáš - každý z nich přidává event listenery na server, jehož hlavní vlákno sdílí všechno ostatní.

Každá funkce ukládá data na jiné místo a vědět, který soubor co drží, ti ušetří spoustu hádání, když něco zmizí:

code
plugins/Essentials/  config.yml        settings for everything, including sethome-multiple  kits.yml          kit definitions and delays  spawn.yml         spawn points, written by /setspawn (Spawn module)  warps/    mine.yml        one file per warp    shop.yml  userdata/    <uuid>.yml      each player's homes and kit cooldown timestamps

Z toho plynou tři důsledky. Homy patří do souboru hráče, takže smazáním jeho souboru v userdata zmizí společně se zůstatkem i homy a cooldowny kitů. Warpy jsou malé samostatné soubory, takže warp z testovacího serveru přeneseš zkopírováním jeho souboru. A kity jsou jen definice - kdo si co vyzvedl a kdy, se zaznamenává u každého hráče zvlášť, ne v kits.yml.

Starší verze EssentialsX držely kity v sekci kits: uvnitř config.yml. Současné buildy čtou kits.yml a při aktualizaci starou sekci tam přesunou. Pokud se řídíš starým návodem, který říká, že kity upravuješ v config.yml, je to důvod, proč se nic nemění.

Psaní kitů v kits.yml#

Kit je název, zpoždění a seznam předmětů. Výchozí soubor obsahuje jeden kit s názvem tools, který je dobrou šablonou:

plugins/Essentials/kits.yml
kits:  tools:    delay: 10    items:      - stone_pickaxe 1      - stone_shovel 1      - stone_axe 1  starter:    delay: -1    items:      - iron_sword 1 sharpness:2 name:&bStarter_Sword lore:Given_on_day_one      - bread 16      - torch 32      - leather_chestplate 1 color:139,69,19      - $250      - /broadcast {player} has started their journey

Každý řádek s předmětem používá stejnou syntaxi jako /give v EssentialsX: název materiálu, počet a pak volitelná metadata.

  • Enchanty jsou dvojice enchantment:level, například sharpness:2 nebo efficiency:4. Na současných verzích používej moderní názvy enchantů.
  • `name:` nastavuje zobrazované jméno. Mezery se píšou jako podtržítka a fungují barevné kódy s &.
  • `lore:` nastavuje řádky popisu. Podtržítka se změní na mezery a | začíná nový řádek.
  • `color:` bere trojici RGB pro kožené brnění.
  • Řádek začínající `$` dává peníze přes ekonomiku, takže $250 vyplatí hráči při vyzvednutí 250. K tomu potřebuješ funkční ekonomiku, kterou poskytuje hlavní jar.
  • Řádek začínající `/` se při vyzvednutí kitu spustí jako příkaz z konzole. {player} se nahradí jménem hráče. Takhle dáš předměty z jiných pluginů, přidělíš oprávnění nebo něco oznámíš.

Názvy materiálů musí odpovídat verzi serveru. Kit napsaný pro 1.20, který uvádí předmět přejmenovaný nebo přidaný později, ten řádek nenačte a konzole to ohlásí při startu nebo při vyzvednutí. Samotný kit se přesto načte, jen bez vadného řádku, a proto hráči někdy hlásí „v kitu chybí meč“ místo „kit je rozbitý“.

Úpravy kits.yml se projeví po /essentials reload nebo po restartu. Pro kity je reload v pořádku, ale není to univerzální nástroj pro jiné pluginy.

Tvorba kitů ve hře přes /createkit

Ručně psát předměty plné NBT je únavné, a tak EssentialsX umí místo toho zachytit tvůj inventář. Naplň inventář přesně tím, co má kit obsahovat, a pak spusť:

bash
/createkit starter -1/createkit daily 86400

První argument je název kitu, druhý zpoždění v sekundách. Příkaz vyžaduje essentials.createkit. S pastebin-createkit: false v config.yml (výchozí na současných buildech) se kit zapíše rovnou do kits.yml; když je nastaveno na true, plugin kit nahraje na paste službu a dá ti odkaz ke zkopírování, což popisují starší návody.

/createkit zachovává enchanty, jména, lore a většinu dat předmětu. Novější buildy na Paperu umějí ukládat předměty kitu i v serializované podobě, která zachová všechno, co předmět nese, včetně dat z jiných pluginů; zda to dělá ten tvůj, závisí na verzi EssentialsX a na volbě v config.yml, takže se podívej do vlastního souboru a nespoléhej na návod. Tak či tak po vytvoření kitu otevři kits.yml a přečti si, co se zapsalo. Je to jediný způsob, jak si být jistý, že vlastní předmět tu cestu přežil.

Ostatní příkazy pro kity:

PříkazOprávněníCo dělá
/kit nebo /kitsessentials.kitVypíše kity, které hráč smí použít
/kit <name>essentials.kits.<name>Vyzvedne kit
/kit <name> <player>essentials.kit.othersDá kit někomu jinému
/showkit <name>essentials.showkitUkáže obsah bez vyzvednutí
/delkit <name>essentials.delkitSmaže definici kitu
/kitreset <name> [player]essentials.kitresetVynuluje cooldown (novější buildy)

Zpoždění kitů, jednorázové kity a ceny#

delay se měří v sekundách od posledního vyzvednutí. Několik hodnot se objevuje neustále:

delayVýznam
0Žádný cooldown
3600Jednou za hodinu
86400Jednou za den
604800Jednou za týden
-1Jednou provždy

Cooldown se ukládá do souboru hráče v userdata pod timestamps, podle názvu kitu. To má dva praktické důsledky. Přejmenování kitu vynuluje cooldown všem hráčům, protože starý časový údaj už nic neodpovídá. A jednorázový kit je jednorázový, jen dokud soubor hráče existuje; smazání userdata rozdá všechny startovní kity znovu.

Hráči s essentials.kit.exemptdelay zpoždění úplně ignorují. Dej to staffu, který kity testuje, a nikdy omylem donorskému ranku přes dědičnost - neomezený denní kit je duplikátor předmětů s oprávněním místo zámku.

Chceš-li si za kit účtovat, použij command-costs v config.yml. Klíč je kit- následovaný názvem kitu:

plugins/Essentials/config.yml
command-costs:  kit-tools: 0  kit-daily: 500  warp: 10  home: 25

Cena se strhává přes ekonomiku při každém použití a hráč, který na ni nemá, je odmítnut. Malý poplatek za opakovatelný kit je nenápadný způsob, jak z něj neudělat farmu, a stejná sekce ceňuje i teleporty, k čemuž se ještě vrátíme.

Oprávnění ke kitům a kit pro první připojení#

Přístup ke kitu tvoří dvě oprávnění a většina rozbitých konfigurací má jen jedno z nich:

  • essentials.kit povoluje samotný příkaz /kit.
  • essentials.kits.<name> povoluje konkrétní kit. essentials.kits.* povoluje všechny.

Hráč s essentials.kit, ale bez oprávnění ke kitům vidí prázdný seznam. Hráč s essentials.kits.starter, ale bez essentials.kit příkaz spustit nemůže. V LuckPerms vypadá rozumné rozdělení takto:

bash
/lp group default permission set essentials.kit true/lp group default permission set essentials.kits.starter true/lp group default permission set essentials.kits.tools true/lp group vip permission set essentials.kits.vip true/lp group admin permission set essentials.kit.exemptdelay true

Pokud vip dědí z default, dostanou VIP i kity starter a tools, což obvykle chceš. Návod k LuckPerms vysvětluje dědičnost a proč se oprávnění nastavovaná skupinám místo jednotlivým hráčům dají lépe auditovat.

Aby se kit rozdal automaticky při prvním připojení hráče, použij sekci newbies v config.yml. Patří k EssentialsX Spawn, takže nedělá nic, dokud není ten modul nainstalovaný:

plugins/Essentials/config.yml
newbies:  announce-format: '&dWelcome {DISPLAYNAME}&d to the server!'  spawnpoint: newbies  kit: starter

kit určuje kit, který se dá při prvním připojení, bez ohledu na hráčova oprávnění ke kitům. Nastav prázdný řetězec, pokud nemá dostat nic. spawnpoint pojmenovává spawn nastavený příkazem /setspawn newbies, takže noví hráči mohou přijít do výukové oblasti, zatímco všichni ostatní se respawnují na hlavním spawnu. Pokud startovní kit dáváš tímto způsobem, nastav tomu samému kitu delay: -1 a nech jeho oprávnění mimo výchozí skupinu, jinak si ho noví hráči vyzvednou podruhé přes /kit.

Warpy: /setwarp a oprávnění pro jednotlivé warpy#

Warp je pojmenované místo, kam se může teleportovat každý s oprávněním. Postav se tam, kam má warp dopadnout, natoč se tak, jak mají hráči při příchodu koukat, a spusť /setwarp <name>. Pozice včetně pitch a yaw se uloží do warps/<name>.yml.

PříkazOprávněníCo dělá
/setwarp <name>essentials.setwarpVytvoří nebo přesune warp
/warpessentials.warp.listVypíše warpy po stránkách
/warp <name>essentials.warpTeleportuje na warp
/warp <name> <player>essentials.warp.othersPošle někoho jiného
/delwarp <name>essentials.delwarpOdstraní warp

Ve výchozím stavu může každý s essentials.warp použít všechny warpy. Pro server s shop, mine a portálem end je to v pořádku, ale ve chvíli, kdy máš oblast pro staff nebo donorský ostrov, je to špatně. Přístup po jednotlivých warpech zapneš v config.yml:

plugins/Essentials/config.yml
per-warp-permission: true

Od té chvíle každý warp potřebuje vlastní oprávnění essentials.warps.<name> a essentials.warps.* povolí všechny. Seznam warpů ukazuje jen ty, které hráč může použít, což je hlavní důvod to zapnout, i když jsou všechny warpy veřejné: můžeš přidat skrytý staffroom, aniž by se objevil v seznamu všem.

bash
/lp group default permission set essentials.warps.spawn true/lp group default permission set essentials.warps.shop true/lp group default permission set essentials.warps.mine true/lp group vip permission set essentials.warps.vipisland true/lp group mod permission set essentials.warps.* true

/setwarp na existující název warp tiše přesune. Nech essentials.setwarp lidem, kteří server staví, a essentials.delwarp ještě užšímu okruhu. Warp, který míří do světa, jenž už není načtený - časté po odebrání světa z Multiverse - selže s chybou o světě, ne o warpu, a to je užitečná nápověda; provoz více světů přes Multiverse popisuje, jak světy čistě načítat a vyřazovat.

Homy a limity sethome-multiple#

/sethome uloží pojmenované místo do souboru hráče a /home se tam vrátí. S jedním homem je název volitelný a výchozí je home. S více homy je hráči pojmenovávají: /sethome base, /sethome farm, /home farm. Spuštění /home s několika homy a bez názvu je vypíše.

Limit řídí tato tabulka v config.yml, zde s výchozími hodnotami:

plugins/Essentials/config.yml
sethome-multiple:  default: 3  vip: 5  staff: 10

Klíče jsou libovolné názvy, ne názvy skupin. Každý z nich odpovídá jednomu oprávnění:

  • essentials.sethome.multiple - nutné, aby hráč mohl mít víc než jeden home.
  • essentials.sethome.multiple.<key> - přidělí počet dané úrovně, takže essentials.sethome.multiple.vip povolí 5.
  • essentials.sethome.multiple.unlimited - bez limitu.

Hráč s několika oprávněními úrovní dostane nejvyšší z nich, takže dědičnost nezpůsobí, že by VIP spadl zpátky na 3. Hráč bez essentials.sethome.multiple dostane jeden home, ať tabulka říká cokoli. Právě to jedno chybějící oprávnění stojí za většinou tiketů „můj rank by měl mít pět homů“. Vlastní úrovně si klidně přidej - stačí legend: 15 spolu s essentials.sethome.multiple.legend na správné skupině.

bash
/lp group default permission set essentials.sethome true/lp group default permission set essentials.home true/lp group default permission set essentials.delhome true/lp group default permission set essentials.sethome.multiple true/lp group vip permission set essentials.sethome.multiple.vip true/lp group mod permission set essentials.home.others true

essentials.home.others umožní staffu navštívit hráčův home příkazem /home <player>:<homename>, což se hodí při vyšetřování hlášení o griefu a nikdo jiný to nepotřebuje.

Několik souvisejících nastavení ve stejném souboru stojí za to rozhodnout vědomě:

  • spawn-if-no-home - když je true, /home bez nastavených homů pošle hráče na spawn místo chyby.
  • update-bed-at-daytime - dovolí hráčům nastavit respawn u postele kliknutím na postel přes den, takže /home bed míří někam rozumně.
  • world-home-permissions - když je true, home v nějakém světě vyžaduje oprávnění pro tento svět. Hodí se, abys držel homy mimo resource svět, který resetuješ.

Homy jsou pohodlí, které mění způsob hraní survivalu. Neomezené homy zdarma proměňují svět v sadu cílů pro teleport a nikdo nestaví cesty. Obvyklý kompromis je nízký počet pro nové hráče, o pár víc pro ranky a malá cena za home v command-costs.

/spawn s EssentialsX Spawn#

Bez modulu Spawn od EssentialsX žádný příkaz /spawn není. Stáhni EssentialsXSpawn ve stejné verzi jako hlavní jar - neshodné verze jsou častou příčinou chyb při startu - a dej oba do plugins/.

Pak se postav na svůj spawn a spusť /setspawn. Tím se poloha zapíše do spawn.yml. /setspawn <group> nastaví samostatný spawn pro jednu skupinu oprávnění, takže VIP skupina může přicházet do vlastního hubu, a /setspawn newbies vytvoří bod prvního připojení, na který odkazuje sekce newbies.

PříkazOprávněníCo dělá
/setspawn [group]essentials.setspawnNastaví výchozí spawn nebo spawn skupiny
/spawnessentials.spawnTeleportuje na tvůj spawn
/spawn <player>essentials.spawn.othersPošle někoho na spawn

Modul také přebírá, kde hráči po smrti a při připojení vzniknou. Nastavení, na kterých záleží:

plugins/Essentials/config.yml
respawn-at-home: falsespawn-on-join: falserespawn-listener-priority: highspawn-join-listener-priority: high

O čem které rozhoduje:

  • respawn-at-home posílá mrtvé hráče do jejich homu místo na spawn. Většina survival serverů to nechává vypnuté a nechává rozhodnout postel.
  • spawn-on-join posílá hráče na spawn při každém přihlášení. Přijímá true, false, nebo název skupiny či seznam skupin, takže na spawn můžeš posílat jen hráče ze default, zatímco ranky se přihlásí tam, kde skončily. Staff s essentials.spawn-on-join.exempt se přeskakuje.
  • Dvě priority listenerů rozhodují, kdo vyhraje, když další plugin také chce hráče přesouvat při respawnu nebo připojení. Pokud ti lobby plugin nebo Multiverse pořád přebíjí spawn, tímhle se to ladí.

Tohle poslední zaskočí mnoho serverů: hráči nemohou rozbíjet bloky na místě, které vypadá jako otevřená krajina, protože neviditelný čtverec ochrany o straně 16 bloků leží kolem původního spawnu světa, ne kolem toho, který používá EssentialsX. Vysvětlení server.properties popisuje spawn-protection a proč se vždy týká jen hráčů bez operátorských práv.

Zpoždění teleportu, cooldowny a bezpečnost#

Každý teleport v EssentialsX - /home, /warp, /spawn, /tpa, /back - prochází stejnými nastaveními, takže je dolaď jednou:

plugins/Essentials/config.yml
teleport-cooldown: 0teleport-delay: 0teleport-invulnerability: 4teleport-safety: true
NastaveníÚčinek
teleport-delaySekundy, po které musí hráč nejdřív stát na místě
teleport-cooldownSekundy, než se smí teleportovat znovu
teleport-invulnerabilitySekundy ochrany po příchodu
teleport-safetyOdmítne nebo upraví nebezpečné cíle

Krátký teleport-delay, tři až pět sekund, je nejúčinnější nastavení proti combat loggingu přes teleport: hráč musí stát na místě, zatímco ho někdo bije, a pohyb teleport zruší. Staff to může obejít s essentials.teleport.timer.bypass a cooldown s essentials.teleport.cooldown.bypass. Nech teleport-safety zapnuté; zabrání tomu, aby home nastavený nad lávou nebo warp, jehož podlahu někdo vytěžil, zabil toho, kdo ho použije.

V kombinaci s command-costs tato nastavení rozhodují, jak moc na serveru záleží na mapě světa. Volné, okamžité a neomezené teleporty dělají vzdálenost bezvýznamnou. Pár sekund zpoždění a malý poplatek zachovají většinu pohodlí a občas z dlouhé cesty pěšky udělají lepší volbu.

Zálohování homů, warpů a kitů#

Všechno v tomto návodu je malé YAML pod plugins/Essentials/ a nic z toho není součástí složky světa. Záloha samotného světa obnoví terén a ztratí každý home, warp a cooldown kitu od posledního uložení dat pluginu; záloha samotného pluginu udělá opak. Zálohuj obojí společně. Zálohování a obnova světa v Minecraftu popisuje, co zahrnout a jak bezpečně vrátit stav zpět.

Na RE:NODE běží Minecraft servery na Paperu se správnou verzí Javy a jary EssentialsX se nahrávají přes správce souborů nebo SFTP jako každý jiný plugin. Správce souborů má editor se zvýrazněním syntaxe pro kits.yml a config.yml, což pomáhá s odsazením v YAML, a sloty záloh u každého herního plánu pokrývají celou složku serveru včetně dat pluginů. Jednu si vytvoř před zapnutím per-warp-permission nebo úpravou sethome-multiple na ostrém serveru.

Řešení problémů#

„You do not have permission to use that kit.“ Hráč má essentials.kit, ale ne essentials.kits.<name>. Zkontroluj přesný název kitu v oprávnění; je to klíč v kits.yml, malými písmeny.

Seznam kitů je prázdný. Stejná příčina z druhé strany: žádná oprávnění essentials.kits.*, nebo se kity nenačetly. Hledej při startu chybu YAML; tabulátor nebo chybějící mezera za dvojtečkou zastaví načítání celého souboru.

Úpravy kitů v `config.yml` nic nedělají. Kity se přesunuly do kits.yml. Uprav ten soubor a spusť /essentials reload.

Při vyzvednutí chybí předmět z kitu. Jeden řádek s předmětem používá název materiálu, který verze serveru nezná. Konzole ten řádek pojmenuje.

Hráči uvízli na jednom homu. Chybí jim essentials.sethome.multiple. Samotné oprávnění úrovně nestačí.

`/spawn` je neznámý příkaz. EssentialsX Spawn není nainstalovaný, nebo se nenačetl, protože jeho verze neodpovídá hlavnímu jaru.

Hráči se respawnují na špatném místě. Respawn obsluhuje jiný plugin s vyšší prioritou, nebo je zapnuté respawn-at-home. Zkontroluj Multiverse a případný lobby plugin a pak uprav respawn-listener-priority.

Warp hlásí, že svět neexistuje. Svět, na který míří, byl přejmenován nebo uvolněn. Vytvoř warp znovu v načteném světě.

FAQ#

Jak udělám kit, který jde vyzvednout jen jednou?

Nastav mu delay: -1, nebo ho vytvoř přes /createkit <name> -1. Vyzvednutí se zaznamenává do souboru hráče v userdata, takže zůstává jednorázové, dokud se ten soubor nesmaže nebo se kit nepřejmenuje.

Můžu dávat kit novým hráčům automaticky?

Ano, s nainstalovaným EssentialsX Spawn: nastav kit: v sekci newbies v config.yml na název kitu. Dá se při prvním připojení bez ohledu na hráčova oprávnění ke kitům.

Jak dám ranku víc homů?

Přidej řádek do sethome-multiple, například vip: 5, a pak dej tomu ranku obě oprávnění, essentials.sethome.multiple i essentials.sethome.multiple.vip. Hráč dostane nejvyšší úroveň, kterou drží.

Můžu některé warpy skrýt v seznamu warpů?

Zapni per-warp-permission. Hráči pak vidí a používají jen warpy, na které mají essentials.warps.<name>, takže staffový warp bez veřejného oprávnění je pro všechny ostatní neviditelný.

Potřebuju EssentialsX Spawn, když používám jiný spawn plugin?

Ne, a provozovat dva pluginy, které obsluhují místa připojení i respawnu, zve ke konfliktům. Vyber si jeden. Pokud EssentialsX Spawn ponecháš, uprav jeho priority listenerů, místo abys bojoval s tím druhým pluginem.

Proč hráči nemohou rozbíjet bloky u spawnu, i když není chráněný?

Vanilla spawn-protection je vystředěná na spawn světa, ne na spawn z EssentialsX. Přesuň spawn světa příkazem /setworldspawn, nebo nastav spawn-protection=0.