// Minecraft

server.properties w Minecraft: ustawienia, które naprawdę liczą

server.properties w Minecraft: ustawienia, które naprawdę liczą

server.properties to plik konfiguracyjny w głównym katalogu twojego serwera Minecraft: każda linia to jedno ustawienie w formacie klucz=wartość. Dwie linie o zdecydowanie największym wpływie na wydajność to view-distance i simulation-distance, obie domyślnie ustawione na 10. Prawie każda zmiana zaczyna działać dopiero po pełnym restarcie, a garstka pól takich jak level-seed i level-type robi cokolwiek wyłącznie w chwili, gdy świat jest generowany po raz pierwszy.

Gdzie leży server.properties i jak bezpiecznie go edytować?

Plik znajdziesz obok jara serwera w głównym katalogu, a w panelu Pterodactyl w menedżerze plików. Powstaje dopiero wtedy, gdy serwer raz w pełni wystartuje, więc jeśli po świeżej instalacji go nie widzisz, uruchom serwer chociaż raz.

  1. Zatrzymaj serwer całkowicie. Działający serwer przy zamykaniu zapisuje server.properties od nowa i nadpisuje to, co przed chwilą wpisałeś.
  2. Otwórz plik w menedżerze plików swojego panelu albo przez SFTP.
  3. Zmieniaj tylko wartość po znaku równości. Bez spacji dookoła, bez cudzysłowów, a true i false małymi literami.
  4. Zapisz i uruchom serwer.
  5. Przeczytaj pierwsze linie konsoli. Nieprawidłowa wartość zostaje po cichu przywrócona do domyślnej.

Zwróć uwagę na dwie rzeczy. Linie zaczynające się od kratki to komentarz, więc przypadkowe zakomentowanie ustawienia oznacza powrót do wartości domyślnej. A server-port, server-ip i query.port są zarządzane przez panel; ręczna zmiana zwykle sprawia, że serwer staje się nieosiągalny.

Czym różni się view-distance od simulation-distance?

view-distance określa jako promień, ile chunków, czyli fragmentów świata, serwer wysyła do każdego klienta do wyrysowania. simulation-distance wyznacza promień, w którym świat naprawdę żyje: moby się spawnują i poruszają, rośliny rosną, redstone działa, leje przenoszą przedmioty. Oba domyślnie stoją na 10.

Kosztują co innego. View-distance zjada przede wszystkim pamięć i łącze, bo każdy wczytany chunk siedzi w RAM i leci po sieci do gracza. Przy view-distance 10 mówimy o 21 na 21 chunków na gracza, czyli 441 sztukach; przy 6 to 13 na 13, czyli 169 chunków, o ponad sześćdziesiąt procent mniej. Simulation-distance kosztuje czas procesora w każdym ticku, czyli w każdym cyklu obliczeń serwera, i to właśnie ciągnie twój TPS w dół. Serwer, który utknął na 14 TPS, prawie zawsze ma za dużo do symulowania, a nie za dużo do rysowania.

W praktyce: na serwerze survival z kilkudziesięcioma graczami view-distance=7 z simulation-distance=5 sprawdza się niemal zawsze lepiej niż oba na 10. Na serwerze dla piątki znajomych view-distance spokojnie może zostać na 10. Przy ciężkich modpackach takich jak All the Mods 10, który wymaga minimum 10 GB RAM, zaczynaj nisko i podnoś dopiero wtedy, gdy TPS trzyma się stabilnie. Ustawianie simulation-distance wyżej niż view-distance nie ma większego sensu. Nasz artykuł o optymalizacji serwera Minecraft omawia także ustawienia spoza tego pliku.

Które linie co robią i jaka wartość jest rozsądna?

UstawienieDomyślnieRozsądna wartośćCo robi
view-distance106 do 8 przy tłumachPromień w chunkach wysyłany do każdego klienta
simulation-distance104 do 6Promień, w którym tykają moby i redstone
max-players20Tyle, ile uciągnie sprzętMaksymalna liczba graczy naraz
online-modetruetrueSprawdza każde logowanie u Mojanga
difficultyeasynormalpeaceful, easy, normal albo hard
gamemodesurvivalsurvivalTryb, w którym wchodzą nowi gracze
pvptruefalse na serwerze budowlanymCzy gracze mogą zadawać sobie obrażenia
spawn-protection160 z pluginem do regionówBloki wokół spawnu, gdzie budują tylko operatorzy
white-listfalsetrue na etapie budowyWejdą tylko nicki z whitelist.json
enable-command-blockfalsefalseZezwala na command blocki
max-tick-time60000zostaw 60000Milisekundy, zanim zareaguje watchdog
level-seedpusteJednorazowo albo pusteSeed, tylko przy tworzeniu świata
level-typeminecraft:normalminecraft:normalTyp generacji, tylko przy tworzeniu
motdA Minecraft ServerJedna krótka własna liniaTekst na liście serwerów
network-compression-threshold256256 lub więcej za proxyBajty, od których pakiety są kompresowane

max-players to limit, a nie rezerwacja: ustawienie go na 200 nie spowolni serwera, ale też nic nie da, jeśli faktycznie przyjdzie 200 osób. Przy difficulty sensownym wyborem dla serwerów survival jest normal; peaceful całkowicie usuwa wrogie moby i psuje każdą farmę mobów.

Dlaczego nigdy nie ustawiasz online-mode na false ot tak?

Przy online-mode=true serwer przy każdym logowaniu sprawdza, czy konto naprawdę istnieje i czy gracz jest tym, za kogo się podaje. Na false serwer przyjmuje każdą nazwę, jaką ktoś wpisze. Przypadkowy odwiedzający może wtedy dosłownie wpisać nick twojego głównego administratora i wejść z pełnymi uprawnieniami. Bany też są nic niewarte, bo zbanowany gracz po prostu zmienia sobie nazwę.

Jest jeden uzasadniony powód, żeby go wyłączyć: backend za proxy takim jak BungeeCord czy Velocity, gdzie uwierzytelnianiem zajmuje się proxy. Taki backend musi być nieosiągalny z internetu i korzystać z nowoczesnego forwardingu (Velocity) albo z BungeeGuard. Inaczej port twojego backendu jest otwartymi drzwiami. W hostingu Minecraft od MC-Node takie proxy zaczyna się od 2,16 zł za 512 MB.

Dla graczy Bedrock na twoim serwerze Java nie musisz zresztą wyłączać online-mode: Geyser z Floodgate załatwia to, gdy online-mode zostaje na true. Uważaj też, jeśli mimo wszystko się przełączysz, bo konta offline i online dostają różne UUID. Gracze po przełączeniu tracą ekwipunek, pozycję i claimy.

Które pola działają tylko przy tworzeniu świata?

level-seed, level-type i generate-structures są czytane wyłącznie wtedy, gdy serwer generuje świat, który jeszcze nie istnieje. Jeśli zmienisz je później, wszystko, co już zostało wygenerowane, zostanie dokładnie takie, jakie było. Przy level-type zobaczysz nawet widoczny szew w terenie, bo nowe chunki powstają inaczej niż stare.

Jeśli naprawdę chcesz zastosować te pola, potrzebujesz nowego świata. Kasowanie nie jest najbezpieczniejszą drogą, zmiana nazwy już tak: zrób kopię zapasową, ustaw level-name na nową nazwę, na przykład swiat2, i uruchom ponownie. Serwer wygeneruje świeży świat, a stary folder zostaje na miejscu, więc możesz wrócić, jeśli efekt cię rozczaruje.

motd nie należy do tej grupy, ale często bywa źle rozumiane: ta linia jest czysto kosmetyczna, pojawia się na liście serwerów i nie kosztuje wydajności.

Jak zabezpieczyć serwer przez spawn-protection, white-list i command blocki?

spawn-protection to promień domyślnie 16 bloków wokół punktu spawnu, w którym budować i niszczyć mogą wyłącznie operatorzy. Stąd biorą się zgłoszenia, że nowi gracze nie mogą niczego postawić przy spawnie. Jeśli używasz pluginu do regionów takiego jak WorldGuard, ustaw go na 0 i pozwól, żeby ochroną zajął się w całości plugin. Przegląd takich pluginów znajdziesz w naszym artykule o najlepszych pluginach do Minecrafta.

white-list=true wpuszcza tylko graczy z whitelist.json i dla serwera dla znajomych albo na etapie budowy jest najprostszą ochroną, jaka istnieje. Dołóż do tego enforce-whitelist=true, bo inaczej gracze, którzy już byli online, grają dalej po tym, jak usuniesz ich z listy. Czego whitelist nie robi, to ochrona przed atakami na twoje łącze: te docierają, zanim w ogóle dojdzie do logowania. Do tego potrzebujesz ochrony przed atakami DDoS na poziomie sieci.

enable-command-block stoi domyślnie na false i to świadomy wybór. Command blocki mogą stawiać tylko operatorzy, ale są też ryzykiem dla wydajności: źle ustawiony zegar, który w każdym ticku odpala komendę z dużym obszarem selektora, kosztuje więcej TPS niż cała grupa graczy razem wzięta. Ustaw go na true tylko wtedy, gdy budujesz mapy przygodowe albo minigry.

Kiedy zmieniać max-tick-time i network-compression-threshold?

max-tick-time stoi na 60000 milisekund. Jeśli jeden tick trwa dłużej niż minutę, watchdog zakłada, że serwer się zawiesił, i go ubija, wypisując thread dump w konsoli. To przydatne, bo ten zrzut zwykle mówi, który mod albo plugin się zaciął. Na ciężkich modpackach potrafi zadziałać niesłusznie przy generowaniu świata na wolnym nośniku: All the Mods 10 ładuje się na HDD ponad dziesięć minut, a na SSD dwie do trzech minut. Rozwiązaniem jest wtedy szybszy nośnik, a nie wyłączanie watchdoga. Ustawienie -1 może posłużyć tymczasowo przy debugowaniu, ale potem zawieszony serwer wisi w ciszy.

network-compression-threshold to 256 bajtów: wszystko, co jest większe, zostaje skompresowane. Dla pojedynczego publicznego serwera zostaw tę wartość tak, jak jest. Jeśli twoje backendy i proxy działają w tej samej sieci, możesz ją podnieść albo ustawić na -1 i wymienić łącze, którego i tak masz w nadmiarze, na mniej pracy procesora. Nigdy nie rób tego na serwerze dostępnym bezpośrednio z internetu.

Najczęściej zadawane pytania

Czy po każdej zmianie w server.properties trzeba restartować? Tak, praktycznie zawsze. Serwer czyta ten plik tylko przy starcie. Komendy takie jak /whitelist on i /difficulty działają od razu w grze, ale przy następnym starcie to plik znowu decyduje o wartości.

Jaki view-distance jest dobry dla 20 graczy? Zacznij od view-distance=7 z simulation-distance=5 i sprawdź, czy TPS trzyma się na 20. View-distance 10 oznacza 441 chunków na gracza wobec 169 przy view-distance 6, a tę różnicę od razu widać w zużyciu pamięci.

Czy mogę jeszcze zmienić seed istniejącego świata? Nie, level-seed jest używany tylko przy generowaniu nowego świata. Ustaw level-name na nową nazwę i uruchom ponownie, wtedy dostaniesz świeży świat, a stary folder zostanie zachowany.

Dlaczego nikt nie może budować wokół spawnu? To spawn-protection, domyślnie promień 16 bloków, w którym cokolwiek zmieniać mogą tylko operatorzy. Ustaw go na 0, jeśli ochronę zostawiasz pluginowi takiemu jak WorldGuard.

Czy online-mode musi być wyłączony dla graczy Bedrock? Nie. Z Geyserem i Floodgate gracze Bedrock wchodzą, gdy online-mode=true zostaje włączone. Wyłączenie oznacza, że każdy może użyć dowolnej nazwy, łącznie z nickami twoich administratorów.

Warto przeczytać

// WYPRÓBUJ SAM
Twój serwer online w 60 sekund
MC-Node →