Lodehost logoLodehost

Wydajność i naprawy

Dostrój bukkit.yml, spigot.yml i config Papera, nie psując farm

Gdy spark pokazał, że tick zjada sam świat, następnym przystankiem jest kilka plików YAML, których większość właścicieli nigdy nie otwiera. Garść kluczy decyduje, ile mobów istnieje, jak często myślą odległe byty, jak często leje sprawdzają przedmioty i jak aktualizuje się pył redstone. Każdy z nich wymienia pracę na zmianę w rozgrywce, więc oto każda wartość domyślna, co robi nowa wartość i kto to odczuje.

8 min czytania

Trzy ułożone pliki konfiguracji z suwakami obok licznika ticku
Małe zmiany w trzech plikach decydują, ile pracy mieści się w każdym ticku o długości 50 milisekund.

Który plik zawiera co

Paper, i zbudowany na nim Purpur, rozkłada ustawienia na kilka plików. Nazwy poniżej to te, których używa Paper 26.2. Żadnego z tych kluczy nie ma w zakładce „Ustawienia”, która obejmuje tylko server.properties, więc edytujesz je w zakładce „Pliki”.

PlikCo zawiera na potrzeby tego poradnika
bukkit.ymlLimity spawnu, odstępy prób spawnu i interwał zapisu
spigot.ymlEntity activation range, merge radius i czasy lejów, pod world-settings
config/paper-world-defaults.ymlSpawny na gracza, zasięgi despawnu, kolizje, zapis chunków, opcje lejów i redstone
world/dimensions/minecraft/the_nether/paper-world.ymlNadpisania dla jednego wymiaru, tu Netheru
config/paper-global.ymlOpcje Papera dla całego serwera; żaden z kluczy poniżej tu nie leży

paper-world.yml potrzebuje tylko kluczy, które mają się różnić; reszta pochodzi z paper-world-defaults.yml.

Ważne są dwa powiązania między plikami. spawn-limits i ticks-per-spawn w configu świata Papera mają -1, co znaczy, że obowiązują liczby z bukkit.yml. W spigot.yml sekcja nazwana kluczem świata, na przykład minecraft:the_nether, nadpisuje world-settings.default dla tego wymiaru.

Zrób pomiar bazowy, zanim cokolwiek ruszysz

Wartość pomaga tylko wtedy, gdy potrafisz pokazać różnicę. Paper ma spark w zestawie od 1.21. Wybierz ruchliwy moment, który da się powtórzyć, na przykład wieczorny szczyt z graczami przy głównej farmie, i zapisz go:

Zakładka Konsola, bez ukośnika na początku

spark health
spark profiler start --timeout 300
spark tickmonitor --threshold-tick 50

Zanotuj medianę i maksimum czasu ticku i zachowaj link do profilera. tickmonitor zgłasza każdy tick powyżej 50 milisekund, więc widzisz, czy kłopot jest stały, czy przychodzi skokami. Poradnik o spark wyjaśnia raport; tutaj ważne jest, czy drzewo prowadzą byty, bloki z danymi czy zapis chunków.

W zakładce „Pliki” najpierw naciśnij „Pobierz” przy bukkit.yml, spigot.yml i plikach w config. Wysłanie starego pliku dokładnie cofa złą zmianę.

Plik spigot.yml otwarty w edytorze plików panelu Lodehost
Pliki YAML otwierają się w edytorze w zakładce „Pliki”. Wcięcia mają znaczenie, więc zmieniaj wartości, a nie odstępy.

Entity activation range w spigot.yml

W zasięgu symulacji każdy mob jest wczytany, ale nie musi myśleć z pełną prędkością. Activation range to odległość w blokach wokół gracza, w której byty tickują normalnie. Dalej tickują rzadziej, co jakiś czas budzone na krótką serię. Vanilla nie ma takiego zasięgu, zapisywanego jako 0.

Klucz pod entity-activation-rangeDomyślnieObejmuje
animals32Krowy, owce, kurczaki i inne pasywne moby
monsters32Wrogie moby na ziemi
raiders64Pillagerzy i reszta najazdu
misc16Upuszczone przedmioty i inne małe byty
water16Ryby, kałamarnice i inne moby wodne
villagers32Wieśniacy
flying-monsters32Phantomy, ghasty i inne latające

Obniżenie animals i monsters o kilka bloków zmniejsza koszt dużych zagród i jaskiń pełnych mobów, przy których nikogo nie ma. Obniżenie misc ma haczyk, który dokumentacja Papera wprost opisuje: poza tym zasięgiem przedmioty płynące strumieniem wody mogą się zacinać, cofać albo wyglądać, jakby płynęły do tyłu. Pierwsze pokazują to długie linie transportu przedmiotów daleko od graczy.

  • Gracze z farmami zauważą, że moby poza zasięgiem miejsca AFK działają seriami, a nie równomiernie.
  • Farmy najazdów trzymają najeźdźców w pełni aktywnych do 64 bloków; mniejsza liczba spowalnia większą część najazdu.
  • `tick-inactive-villagers` jest na true, więc wieśniacy tickują także poza swoim zasięgiem. false oszczędza pracę w dużych halach handlowych, ale odlegli wieśniacy tickują wtedy tylko podczas krótkich serii przebudzeń.

Łączenie przedmiotów i doświadczenia

UstawieniePlikDomyślniePodniesienie albo włączenie
merge-radius.itemspigot.yml0.5Upuszczone przedmioty łączą się na większą odległość, więc sterta staje się mniejszą liczbą bytów
merge-radius.expspigot.yml-1 (wył.)Kule łączą się przy pojawieniu; vanilla tego nie robi
experience-merge-max-valuepaper-world-defaults.yml-1 (bez limitu)Limit nie pozwala kulom złączyć się w jedną ogromną kulę
only-merge-items-horizontallypaper-world-defaults.ymlfalsePrzedmioty na różnych wysokościach przestają się łączyć, jak w vanilli

Łączenie opłaca się przy farmach przedmiotów, które zrzucają setki przedmiotów w jedno miejsce, bo każdy osobny przedmiot to byt do przesunięcia i sprawdzenia. Podnoś zasięg przedmiotów małymi krokami: im jest większy, tym dalej stacki wędrują, żeby się połączyć, a gracze przy punkcie zbiórki widzą, jak dropy skaczą po podłodze.

chunks.entity-per-chunk-save-limit w configu świata Papera ogranicza, ile bytów jednego typu chunk zapisuje i wczytuje. Ma -1, bez limitu, dla kul doświadczenia, śnieżek, pereł endu, strzał, kul ognia i małych kul ognia, a dodać można każdy typ bytu. Limit na strzały sprawia, że podłoga farmy szkieletów nie wczytuje ponownie każdej zabłąkanej strzały; to, co ponad limit, znika po następnym wczytaniu.

Limity spawnu, odstępy spawnu i spawny na gracza

bukkit.yml, wartości domyślne

spawn-limits:
    monsters: 70
    animals: 10
    water-animals: 5
    water-ambient: 20
    water-underground-creature: 5
    axolotls: 5
    ambient: 15
ticks-per:
    animal-spawns: 400
    monster-spawns: 1
    water-spawns: 1
    water-ambient-spawns: 1
    water-underground-creature-spawns: 1
    axolotl-spawns: 1
    ambient-spawns: 1
    autosave: 6000

Limit spawnu to mob cap dla danej grupy, skalowany liczbą wczytanych chunków wokół graczy podzieloną przez 289, czyli kwadrat 17 na 17 wokół jednego gracza. ticks-per liczy ticki między próbami spawnu: 1 próbuje co tick, zwierzęta tylko co 400 ticków, czyli 20 sekund.

per-player-mob-spawns w configu świata Papera jest na true, inaczej niż w vanilli. Cap jest liczony na gracza, więc ciemne jaskinie jednej osoby nie zużyją potworów wszystkich, a mniej więcej ta sama suma rozkłada się sprawiedliwiej.

ZmianaCo oszczędzaKto zauważy
monsters z 70 na 50Mniej wrogich mobów wczytanych narazWłaściciele farm mobów: mniej dropów na godzinę
monster-spawns z 1 na 2O połowę mniej prób spawnuFarmy mobów zapełniają się wolniej; jaskinie wydają się pustsze
ambient z 15 na 5Mniej nietoperzyPrawie nikt
water-ambient z 20 na 10Mniej ryb w oceanachGracze z farmami ryb
animal-spawns powyżej 400Bardzo mało, już czeka 20 sekundZwykle nie warto

Farmy są budowane pod liczby z vanilli

Poradniki o farmach podają wydajność dla vanillowego capu. Powiedz budowniczym, co obniżyłeś, bo inaczej pierwszą skargą będzie to, że sprawdzony projekt jest zepsuty.

Zasięgi despawnu w configu świata Papera

Vanilla usuwa moba od razu, gdy jest dalej niż 128 bloków od każdego gracza, a powyżej 32 bloków może zniknąć losowo. Ryby i inne wodne moby ambient znikają przy 64 zamiast 128. Paper ustawia obie liczby dla każdej kategorii mobów pod entities.spawning.despawn-ranges: hard to odległość natychmiastowa, soft losowa, a obie mają default, dopóki ich nie zmienisz.

config/paper-world-defaults.yml

entities:
  spawning:
    despawn-ranges:
      monster:
        hard: 96
        soft: 32

Niższy zasięg hard szybciej usuwa wrogie moby, gdy gracze odejdą, więc cap nie jest zajęty przez moby, których nikt nie spotka. despawn-range-shape zostaje na ELLIPSOID, kształcie z vanilli; CYLINDER sprawdza wysokość osobno od okrągłego zasięgu poziomego.

Farmy w niebie i farmy z wykopanym obwodem

Naturalny spawn nadal sięga 128 bloków od gracza. Farma z miejscem AFK wysoko nad podłogą spawnu albo obok wykopanego obwodu potrzebuje mobów, które przetrwają na tej odległości. Zmierz odległość od miejsca AFK do najdalszych platform, zanim zejdziesz poniżej 128.

Schemat gracza z pierścieniami activation range, soft despawn i hard despawn
W promieniu 32 bloków moby zostają; za zasięgiem hard znikają od razu. Activation range leży wewnątrz obu.

Leje i redstone

UstawieniePlikDomyślnieSkutek zmiany
ticks-per.hopper-transferspigot.yml8Ticki między przeniesieniami przedmiotów; wyższa wartość spowalnia każdy lej
ticks-per.hopper-checkspigot.yml1Ticki między sprawdzeniami przedmiotów do pobrania
hopper-amountspigot.yml1Przedmioty przenoszone na raz, do jednego stacka
hopper.cooldown-when-fullpaper-world-defaults.ymltruePełny lej czeka, zamiast próbować co tick
hopper.disable-move-eventpaper-world-defaults.ymlfalseDużo szybsze leje, ale pluginy ochrony przestają widzieć ruchy lejów
hopper.ignore-occluding-blockspaper-world-defaults.ymlfalseLeje pomijają pojemniki ukryte w pełnych blokach

Przy 8 tickach lej przenosi 2,5 przedmiotu na sekundę, a pod tę vanillową prędkość zgrane są sortery, zegary na lejach i systemy magazynowe. Przy 16 leje przenoszą przedmioty o połowę rzadziej, a każdy sorter działa z połową prędkości albo się zapycha. Podniesienie przy tym hopper-amount zachowuje przepustowość, ale przenosi przedmioty porcjami, których filtry na pojedyncze przedmioty się nie spodziewają. Gracze od redstone zauważą każdą z tych zmian przy pierwszym teście.

Na każdym serwerze z claimami albo loggerem bloków trzymaj disable-move-event wyłączone, bo te pluginy używają tego zdarzenia, żeby leje nie opróżniały chronionych skrzyń.

misc.redstone-implementation ma VANILLA. ALTERNATE_CURRENT i EIGENCRAFT liczą pył redstone z dużo mniejszą liczbą aktualizacji bloków, co pomaga, gdy w profilu pojawiają się długie linie pyłu. Obie zmieniają zachowanie pyłu. Alternate Current sprawia, że kolejność aktualizacji nie zależy od położenia przewodu, a w vanilli zależy. Stara się pozostać blisko vanilli, ale konstrukcje zgrane z vanillową kolejnością aktualizacji mogą działać inaczej.

Kolizje i zapis chunków

collisions.max-entity-collisions wynosi 8, a vanilla nie ma praktycznego limitu. Powyżej tej liczby serwer przestaje przetwarzać kolejne kolizje danego bytu, co ma znaczenie w zatłoczonych zagrodach i komorach mobów. Niższa liczba oszczędza więcej, ale stłoczone moby słabiej się popychają, więc farmy, które polegają na mobach wpychających się nawzajem do strumienia wody, mogą zwolnić. Stare max-entity-collisions w spigot.yml Paper przejmuje.

collisions.only-players-collide ma false. Ustawione na true sprawia, że kolizja jest liczona tylko wtedy, gdy jednym z dwóch uczestników jest gracz, co wszędzie kończy popychanie się mobów, łącznie z farmami i sorterami.

Zapis to praca na dysku wewnątrz ticku. ticks-per.autosave w bukkit.yml wynosi 6000 ticków, pięć minut, a chunks.auto-save-interval idzie za nim, dopóki ma default. chunks.max-auto-save-chunks-per-tick wynosi 24, wobec 200 w vanilli, więc zapis rozkłada się na więcej ticków. Jeśli tickmonitor pokazuje skok co pięć minut, najpierw obniż tę liczbę. Tej zmiany nikt w grze nie zauważy.

Dwa wykresy ticków porównujące zapis zrobiony w kilku tickach z zapisem rozłożonym na wiele
Mniej chunków na tick zamienia jeden wysoki skok zapisu w rząd małych wybrzuszeń.

Ostrożna kolejność zmian

  1. Zacznij od tego, czego gracze nie widzą

    Obniż max-auto-save-chunks-per-tick, jeśli zapisy dają skoki, obniż limit ambient i sprawdź, czy hopper.cooldown-when-full jest nadal na true. Naciśnij „Restart” i powtórz pomiar bazowy.

  2. Potem activation range

    Zmniejszaj animals i monsters o kilka bloków naraz. misc i water zostaw w spokoju tam, gdzie przedmioty płyną wodą.

  3. Potem łączenie i limity zapisu

    Podnieś trochę merge radius i dodaj limity dla typów bytów, które gromadzą się na Twoich farmach.

  4. Limity spawnu i zasięgi despawnu z zapowiedzią

    Te zmieniają wydajność farm. Ogłoś liczby, zmień jedną i zmierz ten sam moment co przy pomiarze bazowym.

  5. Leje, kolizje i redstone na końcu

    Wypróbuj je na kopii serwera z ważnymi konstrukcjami, zanim dostanie je żywy świat.

Zmieniaj jeden plik na restart i zapisuj, co się zmieniło. Zepsute wcięcie YAML może powstrzymać serwer przed startem, więc po każdym zapisie patrz na konsolę. Jeśli ticki dalej są wolne, sprawdź, jak daleko świat tickuje wokół graczy i teren generowany podczas odkrywania.

Napisane i sprawdzone przez zespół Lodehost, ostatnia weryfikacja 14 września 2026.

FAQ

Pytania o ustawienia Paper na lagi

Jakiego entity activation range użyć w spigot.yml?

Nie ma jednej właściwej liczby. Zacznij od 32 dla zwierząt i potworów, obniżaj o kilka bloków, porównując czasy ticków, i przestań, gdy właściciele farm zgłoszą ospałe moby.

Gdzie jest paper.yml w nowych wersjach Paper?

To już nie jeden plik. Paper używa config/paper-global.yml dla opcji całego serwera, config/paper-world-defaults.yml dla opcji świata i paper-world.yml w folderze wymiaru dla nadpisań.

Czy Alternate Current psuje redstone?

Zastępuje zależną od położenia kolejność aktualizacji vanillowego pyłu. Stara się pozostać blisko vanilli, ale mechanizmy zgrane z tamtą kolejnością mogą działać inaczej, więc ważne konstrukcje testuj na kopii.

Czy te ustawienia działają na Purpurze?

Tak. Purpur działa na Paperze i czyta bukkit.yml, spigot.yml oraz pliki configu Papera tak samo, z własnym purpur.yml na wierzchu.

Dlaczego moja farma mobów jest wolniejsza na Paperze niż w trybie jednoosobowym?

Zanim ją przebudujesz, sprawdź cztery klucze: spawny mobów na gracza, limit spawnu potworów, entity activation range i limit kolizji równy 8.

Każdy plik konfiguracji o jedną zakładkę stąd.

Zakładka „Pliki” otwiera spigot.yml, bukkit.yml i config Papera w edytorze, a zakładka „Konsola” uruchamia spark bez ukośnika.

Zobacz funkcje