Optimalizace je užitečná nejenom pro servery, které mají problémy při připojení více hráčů, ale i pro servery s menším počtem hráčů. Po správné optimalizaci se serveru výrazně sníží využití CPU a RAM a umožní tak na serveru hrát více hráčům současně bez záseků.
Jádro serveru
Před tím, než se vrhneme na samotnou optimalizaci a úpravu nastavení serverů je potřeba server přeinstalovat na PaperSpigot, pokud jej již využíváte, zkontrolujte, zda se jedná o nejnovější verzi.
V Administraci je možné povolit automatické aktualizace jádra serveru, které během spouštění serveru automaticky aktualizují server.jar. Nejnovější verze Paperu je také možné stáhnout z oficiálních stránek .
Java flagy
Flagy upravují chování javy a její správy paměti. Bez aktivace flagů se může paměť RAM zaplnit častěji a tak způsobovat záseky při jejím čištění. Paper poskytuje možnost zobrazení statistik během čištění paměti pomocí příkazu timings paste
po zadání příkazu se vygeneruje odkaz po jehož rozkliknutí uvidíme co nejvíce server zatěžuje.
Pokud máme u spodního čísla vyšší hodnotu než nula i po aktivaci java flagů znamená to, že serveru dochází paměť a nestíhá ji promazávat za běhu serveru bez dopadu na jeho výkon.
Render distance
Jednou z nejvíce zatěžujících funkcí v novějších verzích je načítání a aktualizace chunků. Paper poskytuje možnost snížit počet chunků, které jsou každý tick serveru zpracovávany díky funkci no-tick-view-distance.
Díky této funkci můžeme snížit render distance v nastavení serveru (server.properties) na hodnotu 4-6, v této oblasti budou růst stromy, obilí, atd… Následně v souboru paper.yml najdeme položku no-tick-view-distance, která je ve výchozím nastavení nastavena na -1 a je tedy deaktivována, zde nastavíme hodnotu mezi 6-10 tato oblast bude zasílána hráčům a bude tedy viditelná, stejně jako kdybychom měli nastavenou stejnou hodnotu v server.properties, takže hráči rozdíl nepoznají.
Ve výchozím nastavení je render distance 10 chunků na každou stranu, jeden hráč tedy načítá až 441 chunků, po snížení render distance na 4 se počet načtených chunků sníží na 81 což je pouze ±19%
Je potřeba, aby byla hodnota standardní view-distance menší než no-tick-view-distance jinak tato funkce nebude mít žádný vliv.

Žlutá oblast znázorňuje chunky, ve kterých budou růst stromy, obilí, atd… Modrá oblast jsou chunky, které jsou pouze načteny, ale nic se v nich neděje tj. nerostou stromy, mobové se nehýbou,…
Optimalizace souborů spigot.yml, bukkit.yml
Pokud se i po snížení render distance server stále chová nestabilně nebo se seká bude nejspíše problém v počtu entit(mobové, itemy na zemi, …) na serveru, tento problém se nejjednodušeji detekuje pomocí timings, kde se veškeré entity počítají do kategorie entityTick.
Na Spigot fóru existuje návod popisující jednotlivé nastavení v těchto souborech a jejich vliv na chod serveru. Nastavení ovlivňující entity jsou primárně entity-activation-range v souboru spigot.yml
Předgenerace mapy
Pokud spouštíme nový server bez objevené mapy bude se při pohybu do neobjevených chunků mapa postupně generovat, při menším počtu hráčů < 10 generace chunků není tolik znatelná ovšem při větším počtu hráčů, kteří chodí po mapě a generují nové oblasti se může server začít sekat.
Bude-li na serveru hrát více hráčů současně je doporučeno mapu předgenerovat pomocí pluginu WorldBorder nebo Chunky v tomto návodu budeme používat plugin WorldBorder jelikož umožňuje i nastavení oblasti za kterou hráči nesmí a zamezí tak generování dalších částí mapy mimo oblast, která byla předgenerována.
Po přidání pluginu a připojení na server si stoupneme na místo, které bude středem mapy a spustíme příkaz wb set {RADIUS}
radius nahradíme počtem bloků na každou stranu, který bude předgenerován. Pro menší servery by měl být plně dostačující radius 5000 bloků, pro větší servery je samozřejmně potřeba radius navýšit, aby měli hráči větší plochu, po které se mohou pohybovat. Při výběru radiusu však pamatujte, že čím větší bude, tím více času zabere předgenerace mapy a také bude zabráno více úložiště! Jakmile je nastaven radius mapy můžeme spustit generaci příkazem wb fill
a následně wb fill confirm
. Generace zabere nějaký čas, její postup je zobrazován v konzoli.

Datapacky
Pokud na serveru používáte datapacky a i po optimalizaci z předchozích sekci je využití CPU vysoké nebo se server seká je dosti pravděpodobné, že jeden z datapacků je neoptimalizovaný a zbytečně server zatěžuje. Nejjednodušší způsob jak zjistit, co nejvíce vytěžuje server jsou timings (přikaz /timings paste
). Datapacky spadají do sekce Command Functions.
Podle toho, která z funkcí je nejvíce náročná lze určit, jaký datapack má zátěž na svědomí, v tomto konkrétním případu se jednalo o datapack, který vytvářel neviditelné item framy.
Spigot/PaperSpigot/TacoSpigot… forks
Místo PaperSpigotu, což je fork Spigotu lze také používat jiné forky. Tyto forky dokáží více stabilizovat Váš server,
a pod. Jedná se o forky s experimentalnima funkcema a můžou obsahovat chyby/bugy. Používejte na vlastní riziko.
Příklady forků:
YatopiaMC (Nejnovější verze Minecraftu, boost performance) - Stažení nejnovější verze zde
Tuinity (Nejnovější verze Minecraftu, boost performance) - Stažení nejnovější verze zde
Purpur (Nejnovější verze Minecraftu, unique gameplay) - Stažení nejnovější verze zde
Jsou zde i placené forky, který dokáží Váš server natolik zoptimalizovat, že dokáží běžet i s více jak 200 hráčů. Příklady forků:
ImanitySpigot (1.8.8, compatibility s 1.7-Nejnovější verze) boost performance,pvp
A další..
Po stažení daného forku, server zálohujte. Následně stačí jít do Správce souborů v administraci a vymazat starý server.jar a nahradit ho s tím, že přejmenujete soubor na server.jar.