// Minecraft

ViaVersion: wpuść graczy z różnych wersji Minecrafta

ViaVersion: wpuść graczy z różnych wersji Minecrafta

ViaVersion to plugin do serwerów Paper i Purpur, dzięki któremu gracze z nowszym klientem Minecrafta mogą połączyć się z serwerem działającym na starszej wersji. Uzupełniający go ViaBackwards robi dokładnie odwrotnie: wpuszcza klienty ze starszych wersji na nowszy serwer. Razem sprawiają, że twój serwer pozostaje dostępny dla każdego, a od 2026 roku jest to ważniejsze niż kiedykolwiek: Minecraft Java przeszedł na numerację wersji opartą na roku, z 26.1 "Tiny Takeover" w marcu 2026 i 26.2 "Chaos Cubed" w czerwcu 2026, podczas gdy 1.21 "Tricky Trials" wciąż jest najczęściej graną wersją na holenderskich serwerach.

Jak właściwie działa tłumaczenie protokołu?

Klient i serwer Minecrafta rozmawiają ze sobą przez ustalony protokół: numerowane pakiety, które mówią rzeczy w stylu "gracz przemieszcza się na te współrzędne", "postaw ten blok" albo "pokaż ten ekran". Każda wersja Minecrafta ma własny numer protokołu i własny układ tych pakietów.

Przy łączeniu twój klient wysyła ten numer jako pierwszą rzecz. Jeśli nie zgadza się on z tym, czego oczekuje serwer, dostajesz znany komunikat, że twój klient jest przestarzały albo wręcz za nowy, a połączenie od razu się zamyka. Nikt tu nie próbuje się dogadać.

ViaVersion staje dokładnie w tym miejscu, między klientem a serwerem. Plugin rozpoznaje numer protokołu wchodzącego gracza i w locie przerabia każdy pakiet na postać, którą rozumie serwer, a wszystko, co wraca, na postać zrozumiałą dla klienta. Dla serwera wygląda to tak, jakby łączył się klient w jego własnej wersji, a dla gracza tak, jakby serwer działał na jego wersji. Nie ma więc serwera, który mówi "wszystkimi wersjami"; pośrodku stoi tłumacz.

Czym różnią się ViaVersion, ViaBackwards i ViaRewind?

Te trzy pluginy pochodzą z jednej rodziny i robią tę samą sztuczkę w różnych kierunkach. Instalujesz je obok siebie, a one nadbudowują się nawzajem.

PluginKierunekKiedy go potrzebujesz
ViaVersionNowszy klient na starszy serwerTwój serwer świadomie zostaje na starszej wersji, ale gracze, którzy już się zaktualizowali, muszą móc na niego wejść. To podstawa; pozostałe dwa bez niego nie działają.
ViaBackwardsStarszy klient na nowszy serwerTwój serwer działa na najnowszej wersji, a ty nie chcesz odcinać graczy, którzy jeszcze się nie przesiedli.
ViaRewindUzupełnienie do ViaBackwardsChcesz wpuścić też bardzo stare klienty sprzed dużej przebudowy walki, czyli takie wersje, jakie wciąż żyją na klasycznych serwerach PvP.

Większość publicznych serwerów uruchamia ViaVersion i ViaBackwards razem, dzięki czemu powstaje okno wersji, w którym każdy może się połączyć. ViaRewind dokładasz tylko wtedy, gdy twoi gracze o to proszą: im dalej wstecz tłumaczysz, tym więcej gubi się po drodze.

Jak zainstalować ViaVersion na serwerze Paper?

  1. Sprawdź swoje oprogramowanie serwera. Dla większości serwerów Paper to wybór domyślny, a Purpur sprawdzi się tak samo dobrze, bo jest forkiem Paper z tą samą zgodnością pluginów. Na Folii, eksperymentalnym wielowątkowym Paper, większość istniejących pluginów się wykłada.
  2. Pobierz pliki jar ViaVersion i ViaBackwards pasujące do twojej wersji serwera, oba z tej samej serii wydań. Czyli żadnego świeżutkiego ViaBackwards do starego ViaVersion.
  3. Wrzuć pliki do folderu plugins. W panelu Pterodactyl zrobisz to przez menedżer plików; wystarczy przeciągnąć i upuścić.
  4. Zrestartuj serwer w całości. Nie używaj /reload: Via wpina się głęboko w warstwę sieciową i musi zostać wczytany przy starcie.
  5. Przejrzyj konsolę. Zobaczysz w niej, które wersje protokołu zostały wczytane. Komunikat o brakujących mappingach oznacza, że jary nie pasują do siebie albo do twojej wersji serwera.
  6. Przetestuj na co najmniej dwóch wersjach klienta: przejdź się po mapie i sprawdź, czy stawianie bloków, otwieranie skrzyń i czat działają.
  7. W plugins/ViaVersion/config.yml ustaw ewentualnie dolną albo górną granicę, jeśli części wersji nie chcesz wpuszczać.

Co się tłumaczy, a co nie?

Rdzeń gry tłumaczy się dobrze. Ruch, stawianie i niszczenie bloków, walka, czat, ekwipunek, skrzynie, handel z wieśniakami: mechaniki, które od lat działają praktycznie tak samo i przekładają się bez zgrzytów. Dla serwera survival albo SMP to zdecydowana większość rozgrywki.

Sypie się tam, gdzie coś istnieje w jednej wersji, a w drugiej nie. To twarda granica, a nie kwestia lepszego tłumaczenia. Blok dodany dopiero w nowszej wersji zwyczajnie nie siedzi w plikach starszego klienta: ten nie potrafi go narysować, bo nie wie, jak on wygląda. Via podstawia wtedy w jego miejsce istniejący blok, który go trochę przypomina, albo powietrze. Gracz na starym kliencie widzi więc coś innego, niż faktycznie stoi, albo nie widzi nic i wpada na ścianę, która dla niego jest niewidzialna. To serwer decyduje, gdzie stoją bloki, a nie klient.

To samo dotyczy nowych mobów, itemów, dźwięków i efektów cząsteczkowych. Nowe ekrany, jak interfejsy, które przyszły z Trial Chambers i Vaults w 1.21, pojawiają się niekompletnie albo wcale. Resource packi też są przypisane do konkretnej wersji i odbiegające od niej klienty często je odrzucają. Uważaj poza tym na pluginy liczące na dokładną kolejność pakietów, na przykład anticheat: potrafią zacząć dziwaczyć, gdy tylko wejdzie między nie warstwa tłumacząca. Przetestuj to najpierw osobno.

Dlaczego to wygodne dla publicznego serwera?

Bo nikt nie musi się przesiadać. Brzmi drobno, ale o to właśnie chodzi. Przy 26.1 w marcu, 26.2 w czerwcu i 26.3 już w snapshotach, między innymi z nowym biomem "dappled forest", twoi gracze nigdy nie siedzą wszyscy na tej samej wersji. Część zostaje na 1.21, bo na niej działają ich mody, shadery albo ustawienia wydajności, a część aktualizuje od razu. Jeśli wybierzesz wersję bez Via, automatycznie odcinasz jedną z tych grup.

Dla serwera, który dzielisz ze znajomymi albo promujesz przez Discorda, oszczędza to sporo zamieszania: podajesz jeden adres IP i wszyscy wchodzą, bez tłumaczenia, jak działają profile w launcherze, i bez obowiązkowej aktualizacji w połowie sezonu. Jeśli chcesz wpuścić też graczy z Bedrock, odpowiednikiem po tamtej stronie jest Geyser z Floodgate. Via i Geyser nie gryzą się i często działają obok siebie, razem z podstawowymi pluginami z naszego zestawienia najważniejszych pluginów do Minecrafta.

Dlaczego akurat na serwerze z modami nie powinieneś tego robić

Przy modach ten numer nie przechodzi. Pluginy działają wyłącznie po stronie serwera, na w pełni vanillowych mechanikach; mody ładuje modloader i dokładają one naprawdę nowe bloki, itemy, moby i wymiary, a te muszą być identyczne na serwerze i na kliencie. All the Mods 10 działa na NeoForge z Minecraft 1.21.1 i 400 do 500 modami, RLCraft na Forge z 1.12.2. Nie ma tam czego tłumaczyć: po drugiej stronie ta zawartość w ogóle nie istnieje.

Do tego Via jest pluginem Bukkit. Czysty serwer Forge albo NeoForge nie wczytuje pluginów, więc nawet go tam nie wepchniesz. Hybrydowe oprogramowanie serwerowe łączące mody i pluginy istnieje, ale jest kruche i spóźnia się z wersjami. Przy modpacku właściwe podejście jest po prostu takie, że wszyscy instalują ten sam pack w tej samej wersji. Jak to zrobić, opisujemy w naszym poradniku o instalowaniu modpacków.

Ile to kosztuje w wydajności?

Tłumaczenie to praca, i to wykonywana dla każdego gracza i każdego pakietu z osobna. Przy starcie Via wczytuje dodatkowo do pamięci tabele mappingów dla każdej obsługiwanej wersji. Na serwerze z garstką graczy niewiele z tego poczujesz. Jeśli masz duże liczby graczy rozrzuconych po wielu wersjach protokołu, zrobi się to mierzalne w TPS, czyli w liczbie ticków na sekundę, która pokazuje płynność serwera. Zmierz to pluginem spark, zanim zaczniesz zgadywać, skąd biorą się lagi; w naszym artykule o optymalizacji serwera Minecraft opisujemy, jak czytać taki profil.

Jeśli prowadzisz sieć kilku serwerów za proxy, możesz postawić Via również tam, zamiast na każdym serwerze backendowym z osobna. W MC-Node takie proxy zaczyna się od 2,16 zł za 512 MB pod BungeeCord, a zwykłe serwery w linii budżetowej kosztują równe 4,75 zł za GB RAM miesięcznie, czyli 4 GB wychodzi na 19,01 zł; co jeszcze dostajesz w pakiecie, zobaczysz w ofercie hostingu Minecraft w MC-Node.

Licz na koniec na trochę więcej pracy w supporcie. Im szersze okno wersji, tym częściej zgłoszony bug okazuje się w rzeczywistości problemem z tłumaczeniem. Granica ustawiona na wersjach, które naprawdę chcesz obsługiwać, daje więcej spokoju niż wpuszczanie wszystkiego.

Najczęściej zadawane pytania

Czy gracze muszą sami coś instalować dla ViaVersion? Nie. ViaVersion działa w całości po stronie serwera, tak samo jak EssentialsX czy LuckPerms. Gracze łączą się normalnie po adresie IP i w ogóle nie zauważają warstwy tłumaczącej. Tym różni się to od modpacka pokroju All the Mods 10, gdzie każdy musi zainstalować tę samą listę modów NeoForge na Minecraft 1.21.1.

Czy ViaVersion działa na serwerze Forge albo NeoForge? Nie. Via to plugin do oprogramowania w stylu Bukkit, jak Paper i Purpur, a czysty serwer Forge albo NeoForge nie wczytuje pluginów. I tak by to nie pomogło: mody dodają prawdziwe bloki i itemy, których w innej wersji nie ma, więc nie da się ich przetłumaczyć.

Czy mogę działać na 26.2 i mimo to wpuszczać graczy na 1.21? Tak, instalujesz do tego ViaVersion i ViaBackwards razem. ViaBackwards tłumaczy nowsze dane serwera z powrotem na to, co rozumie starszy klient. Zawartość dodana dopiero w 26.1 albo 26.2 pojawi się u tych graczy jako zastępczy blok lub item, albo wcale.

Czy to działa razem z Geyserem dla graczy Bedrock? Tak. Geyser z Floodgate tłumaczy protokół Bedrock na Java, a ViaVersion i ViaBackwards tłumaczą między samymi wersjami Java. Nie wchodzą sobie w drogę i na wielu serwerach działają obok siebie na tej samej instalacji Paper.

Czy ViaVersion kosztuje wydajność? Tak, ale w ograniczonym stopniu. Każdy tłumaczony gracz kosztuje trochę CPU, a tabele mappingów zajmują pamięć przy starcie. Przy garstce graczy nic nie poczujesz; przy setkach graczy rozrzuconych po wielu wersjach robi się to mierzalne. Zmierz to pluginem spark.

Warto przeczytać

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