ViaVersion + ViaBackwards: wsparcie wielu wersji na jednym serwerze Minecraft

ViaVersion + ViaBackwards: wsparcie wielu wersji na jednym serwerze Minecraft

Minecraft wydaje nowe wersje co pół roku, a baza graczy jest rozmyta po całym zakresie od 1.8 do najnowszej odsłony. Jedni siedzą na 1.12 z powodu serwerów pirackich, inni utknęli na 1.16.5 przez modpack, jeszcze inni czekają na optymalizacje w najnowszej wersji. Jeśli twój serwer wymusza konkretną wersję, połowa potencjalnych graczy nie wejdzie.

Via Project rozwiązuje ten problem. Trzy pluginy (ViaVersion, ViaBackwards, ViaRewind) pozwalają trzymać serwer na aktualnej 1.21 i przyjmować klientów od 1.8. To branżowy standard: Hypixel, Mineplex i praktycznie każdy duży projekt ma Via domyślnie zainstalowane.

W tym przewodniku omówimy, jak działa kompatybilność protokołowa, instalację na Paper/Velocity/BungeeCord, macierz wsparcia wersji, wpływ na wydajność i typowe błędy.

Problem różnych wersji

Protokół Minecrafta zmienia się przy każdej głównej wersji. Między 1.8 a 1.21 zmieniło się:

  • format chunków (legacy chunk format do palette format od 1.13)
  • system przedmiotów (numeryczne ID do namespaced strings)
  • struktury NBT dla encji i tile entity
  • pakiety protokołu sieciowego (nowe ID, nowe pola, usunięte pakiety)
  • mechanika walki (1.8 bez cooldownu, 1.9+ z attack cooldownem)
  • rejestr wymiarów (dynamiczny od 1.16+, stały w 1.12)
  • sekwencja logowania (nowa faza konfiguracyjna od 1.20.2+)

Bez kompatybilności klient 1.21 podłączający się do serwera 1.20 dostaje "Outdated server" i odłączenie. W drugą stronę to samo.

Co to jest Via Project

Via Project to trzy powiązane pluginy:

PluginCo robiKiedy potrzebny
ViaVersionrdzeń, stary serwer przyjmuje nowych klientówprawie zawsze
ViaBackwardsnowy serwer przyjmuje starych klientówgdy serwer nowszy niż klient
ViaRewindwsparcie bardzo starych klientów 1.7 do 1.9osobno

Wszystkie trzy współpracują. ViaBackwards wymaga ViaVersion, ViaRewind wymaga obu do pełnego zakresu.

Jak działa remap protokołu

ViaVersion przechwytuje pakiety sieciowe między klientem a serwerem i przepisuje je w locie.

Wyobraźmy sobie klienta 1.21 i serwer 1.20.4. Klient wysyła handshake z protocol_version=767 (1.21). Serwer oczekuje 765 (1.20.4). Bez ViaVersion serwer odpowiada "Outdated client".

Z ViaVersion na serwerze:

  1. Klient wysyła handshake 1.21
  2. ViaVersion przechwytuje, zapamiętuje rzeczywistą wersję klienta
  3. Podmienia handshake na 1.20.4 przed przekazaniem do serwera
  4. Serwer akceptuje klienta jako 1.20.4
  5. Dalej każdy przychodzący i wychodzący pakiet ViaVersion przepisuje między formatami 1.21 i 1.20.4

Dla każdej pary wersji Via trzyma w kodzie zestaw "protokołów": co zostało przemianowane, co usunięte, jak konwertowane jest każde pole. Przy podłączeniu 1.21 do 1.20.4 do 1.19.4 do 1.18.2 do 1.17.1 do 1.16.5 łańcuch transformacji buduje się automatycznie.

ViaVersion: kompatybilność w przód

ViaVersion pozwala nowym klientom grać na starym serwerze. Przykład: serwer Paper 1.16.5 (przypięty przez duży modpack, który nie może być zaktualizowany), klienci na 1.21.

Wrzucamy ViaVersion do plugins/. Koniec. Po restarcie klienci 1.17, 1.18, 1.19, 1.20, 1.21 mogą połączyć się z serwerem 1.16.5.

Co działa:

  • ruch, ataki, interakcja ze światem
  • czat i komendy
  • większość bloków i przedmiotów
  • encje i spawn mobów

Co NIE działa automatycznie:

  • nowe bloki (copper, sculk) wyświetlają się jako bloki zastępcze na kliencie (zwykły kamień na przykład)
  • nowe przedmioty (mace, trial key) pokazują się jako bedrock lub air
  • nowe encje (warden, breeze) nie renderują się poprawnie
  • nowe mechaniki (trial spawner, crafter) nie działają, serwer o nich nic nie wie

ViaVersion jest użyteczny, gdy serwer z jakiegoś powodu nie może być zaktualizowany, a gracze nie chcą zejść ze starego klienta.

ViaBackwards: kompatybilność wstecz

Odwrotny przypadek. Serwer 1.21, klienci przychodzą z 1.17, 1.18, 1.19, 1.20. Trzeba, żeby grali.

Instalujemy ViaVersion plus ViaBackwards. ViaBackwards dodaje odwrotny remap: serwer wysyła pakiety 1.21, ViaBackwards konwertuje je na format klienta.

Najciekawsza część ViaBackwards to item remapping. Na serwerze 1.21 gracz ma w ekwipunku mace. Klient 1.20.6 nie wie o mace. ViaBackwards wizualnie zamienia go na coś podobnego (iron_sword) i dodaje w lore linijkę [1.21 item: mace]. Psucie klienta nie wchodzi w grę, więc Via zawsze zastępuje nieznane przedmioty najbliższym odpowiednikiem.

Podobnie z blokami: copper_bulb staje się redstone_lamp, trial_spawner staje się mob_spawner, vault staje się beczką z etykietą i tak dalej.

ViaRewind: klienci legacy

ViaBackwards wspiera średnio 4-5 głównych wersji wstecz (obecnie 1.17+). Dla 1.8 i 1.9 potrzebny jest osobny plugin, ViaRewind.

ViaRewind to cięższa proteza. Między 1.8 a 1.9 Mojang przebudował mechanikę walki (attack cooldown, dual-wielding, tarcze). Między 1.12 a 1.13 zmienił się format ekwipunku (numeryczne item ID do namespaced strings, "flattening"). Każda taka zmiana wymaga skomplikowanej logiki po stronie Via, aby emulować nowe mechaniki dla starego klienta.

ViaRewind pokrywa:

  • 1.7.10 (przez ViaLegacy, osobny plugin dla bardzo starych klientów)
  • 1.8.x
  • 1.9.x
  • częściowo 1.10, 1.11, 1.12

Na kliencie 1.8 PvP działa jak w 1.8: bez cooldownu, bez tarcz, stary hitbox. To ważne: projekty ze społecznością PvP 1.8 celowo trzymają serwer 1.21 z Via, żeby gracze 1.8 dostali znajomy gameplay, a gracze 1.21 nowoczesny.

Macierz wsparcia

Stan na 2026. Przed produkcyjnym deployem sprawdź na viaversion.com.

ViaVersion

Wersja serweraWspierani klienci
1.8.x1.8 do 1.21.x (przez Via)
1.12.21.12.2 do 1.21.x
1.16.51.16.5 do 1.21.x
1.18.21.18.2 do 1.21.x
1.19.41.19.4 do 1.21.x
1.20.41.20.4 do 1.21.x
1.21.x1.21.x do 1.21.x (tylko ta sama wersja)

ViaBackwards

Wersja serweraWspierani starsi klienci
1.21.x1.17 do 1.21
1.20.x1.16 do 1.20
1.19.x1.15 do 1.19
1.18.x1.14 do 1.18

ViaRewind

Wersja serweraWspierani klienci legacy
1.21.x + Via1.8.x do 1.12.x
1.20.x + Via1.8.x do 1.12.x
1.19.x + Via1.8.x do 1.12.x

Kombinacja ViaVersion + ViaBackwards + ViaRewind na Paper 1.21 daje pełny zakres 1.8 do 1.21. To maksimum bez własnej inżynierii.

Instalacja na Paper / Spigot / Purpur

Najprostszy przypadek. Standalone serwer.

  1. Pobieramy najnowsze wersje wszystkich trzech pluginów z Modrinth
  2. Wrzucamy jary do plugins/:
plugins/
  ViaVersion-5.x.x.jar
  ViaBackwards-5.x.x.jar
  ViaRewind-4.x.x.jar
  1. Restartujemy serwer
  2. W konsoli powinno być:
[ViaVersion] Loaded 1.8 -> 1.21 protocols
[ViaBackwards] Loaded 1.17 -> 1.21 backward protocols
[ViaRewind] Loaded 1.7 -> 1.12 rewind protocols
  1. Weryfikacja poleceniem:
/viaversion list

Pokaże podłączonych graczy i ich rzeczywiste wersje.

Instalacja na Velocity

Velocity to nowoczesne proxy dla sieci serwerów. Via zachowuje się tam inaczej: siedzi na proxy, a każdy serwer backendowy nie potrzebuje własnego Via.

Proxy plugins/:

plugins/
  ViaVersion-5.x.x.jar
  ViaBackwards-5.x.x.jar
  ViaRewind-4.x.x.jar

Proxy plugins/viaversion/config.yml:

# Velocity-specific
velocity-ping-interval: 60
velocity-ping-save: true

# Protokoly, ktore proxy akceptuje
check-for-updates: false

# Nie ruszac serwerow backendowych
# Via sama zajmuje sie kazdym z osobna

Zalety Via na Velocity:

  • jedna konfiguracja dla całej sieci
  • mniejsze obciążenie CPU: remap dzieje się na proxy, backendy dostają natywne pakiety
  • łatwiejsze zarządzanie wersjami

Wady:

  • ruch Via przechodzi przez proxy, trochę większy narzut sieciowy
  • jeśli backend ma inną wersję niż proxy, i tam potrzebna jest Via

Rekomendacja dla sieci

Dla małej sieci (2-3 serwery tej samej wersji) wrzucamy Via tylko na proxy. Dla sieci mieszanej (jedno lobby 1.21, arena PvP 1.8) Via na każdym serwerze z niedopasowaną wersją.

Instalacja na BungeeCord

BungeeCord jest wspierany, ale Velocity jest dużo lepszy pod kątem wydajności. Jeśli nie ma konkretnego powodu do pozostania na BungeeCord, przechodź na Velocity.

Dla BungeeCord:

plugins/
  ViaVersion-5.x.x.jar
  ViaBackwards-5.x.x.jar
  ViaRewind-4.x.x.jar

Konfig plugins/ViaVersion/config.yml:

bungee-ping-interval: 60
bungee-ping-save: true

Na backendach Via nie jest potrzebna, jeśli dzielą wersję protokołu z proxy.

Kluczowe ustawienia config.yml

Plik plugins/ViaVersion/config.yml ma dziesiątki opcji. Oto te, które są najważniejsze.

fix-non-full-blocks

# Poprawia hitboxy niepelnych blokow dla nowych klientow na starym serwerze
fix-non-full-blocks: true

Potrzebne przy podłączaniu nowych klientów do starego serwera. Na przykład klient 1.13+ z flattened blokami na serwerze 1.12.2. Bez tej opcji hitboxy niektórych bloków (płotki, murki) będą obliczone niepoprawnie.

auto-team

# Automatycznie tworzy zespoly, aby tagi nad glowami wyswietlaly sie poprawnie
auto-team: true

Ważne dla klientów 1.8. W 1.8 zespoły używano do ukrywania tagów nad głową (niewidzialność). Bez auto-team pluginy typu NPCs lub vanish źle działają dla klientów 1.8.

remap-pings

remap-pings: true

Poprawia ping listy serwerów dla klientów wszystkich wersji. Bez tego niektórzy starsi klienci w ogóle nie widzą serwera na liście.

1-13-team-colour-change

1-13-team-colour-change: true

Poprawia kolory zespołów dla klientów sprzed 1.13. Użyteczne na serwerach PvP z kolorowymi tagami zespołów.

chunk-border-fix

chunk-border-fix: true

Poprawia artefakty na granicach chunków dla starych klientów na nowym serwerze.

fix-infested-block-breaking

fix-infested-block-breaking: true

Drobny, ale irytujący fix. Bez niego infested bloki łamią się zbyt wolno dla klientów 1.14+.

Wydajność

Remap protokołu nie jest darmowy. Każdy pakiet idący od klienta do serwera (i w drugą stronę) przechodzi przez łańcuch konwerterów.

Narzut zależy od różnicy wersji:

RóżnicaNarzut CPU na gracza
brak (klient = serwer)~0%
1 wersja (klient 1.21 na 1.20.4)3-5%
3 wersje (klient 1.21 na 1.19.4)8-12%
5-8 wersji (klient 1.21 na 1.16.5)15-25%
maksimum (serwer 1.21, klient 1.8 przez Rewind)25-40%

Liczby są przybliżone i zależą od obciążenia serwera. Najdroższy remap to dane chunków (szczególnie flattening 1.13: stare numeryczne ID konwertowane na palette format).

Optymalizacja

Jeśli serwer 1.21 ma 70% graczy na 1.21 i 30% na starszych wersjach, nie potrzeba specjalnej optymalizacji, nowoczesny CPU sobie poradzi.

Dla serwerów trzymających 300+ graczy jednocześnie na różnych wersjach warto:

  1. Zwiększyć pulę wątków dla Via:
# config.yml
velocity-pinger-thread-count: 4
chunk-border-fix: true
  1. Wyłączyć fix-non-full-blocks, jeśli większość klientów jest na jednej wersji
  2. Używać ViaVersion na proxy Velocity zamiast Paper, odciążamy backend

Flattening pre-1.13

Osobny ból. Gdy klient 1.12 łączy się z serwerem 1.13+, ViaRewind konwertuje każdy blok i przedmiot między dwoma systemami identyfikacji (numeryczne ID do namespaced). Na chunku z tysiącami bloków to wyczuwalny koszt.

Dla serwerów z dużym ruchem starszych klientów lepiej trzymać osobną instancję 1.12.2, niż przepuszczać wszystko przez Rewind.

Ograniczenia

Via nie jest magią. Czego nie potrafi:

Nowe bloki i przedmioty

Copper bulb, trial spawner, mace, breeze rod, vault, wszystko nowe w 1.21. Dla klienta 1.20 Via podmienia je wizualnie, ale funkcjonalność nie działa. Gracz z klienta 1.20 nie może interagować z crafterem (nowy blok w 1.21), ponieważ klient nie zna polecenia.

Nowe wymiary i biomy

Jeśli serwer generuje świat w nowym biomie (cherry grove z 1.20), dla klienta 1.19 biom będzie wyglądał jak plains, niepoprawna tekstura, niepoprawne cząstki.

Nowe animacje i funkcje

Armadillo (nowa encja z 1.21) na kliencie 1.20 może nie renderować się wcale lub pokazywać jako świnia. Nowe animacje smite wolf, specyficzne ataki nie grają się na starych klientach.

Resource packi

Resource packi są powiązane z konkretną wersją. Pack zrobiony pod 1.21 nie działa na kliencie 1.17. Dla serwerów cross-version potrzeba kilku packów lub jednego minimalnego, kompatybilnego ze wszystkimi.

PvP: 1.8 versus nowoczesne

Duży temat dla serwerów ze społecznością PvP.

1.8 PvP: spam klików, bez cooldownu, długi hitbox, krytyczne uderzenia w skoku. Walka jest bardzo szybka, decyduje refleks i aim.

1.9+ PvP: attack cooldown (wskaźnik ładowania miecza), tarcze blokują obrażenia, dual-wielding. Walka jest wolniejsza, decyduje timing.

Jeśli trzymasz serwer 1.8 przez ViaVersion i przyjmujesz klientów 1.21, gracze 1.21 dostaną mechanikę 1.8 (serwer 1.8 = zasady 1.8). To typowy setup PvP w stylu Hypixela.

Jeśli trzymasz serwer 1.21 z ViaBackwards i ViaRewind i przyjmujesz klientów 1.8, gracze 1.8 dostaną mechanikę 1.21. Wielu graczy 1.8 tego nie chce, przychodzą po stare PvP.

Wniosek: dla serwera PvP określ docelową mechanikę i trzymaj odpowiednią podstawę.

Rozwiązywanie problemów

"Outdated server" / "Outdated client"

Najczęstszy problem. Możliwe przyczyny:

  1. Klient jest nowszy niż maksymalna wersja wspierana przez ViaVersion. Zaktualizuj ViaVersion.
  2. ViaVersion nie załadował się. Sprawdź konsolę.
  3. Cache ViaVersion uszkodzony. Usuń plugins/ViaVersion/cache/ i uruchom ponownie.

Invalid packet / client disconnected

Zwykle oznacza zatrzymanie remapu z powodu niewspieranego pakietu. Zwykle to mod na kliencie, który wysyła własne pakiety. Rozwiązanie:

  1. Sprawdź, czy klient nie ma niekompatybilnych modów (stary Schematica, stary BetterFPS).
  2. Zaktualizuj ViaVersion do najnowszej wersji.
  3. Ustaw debug: true w config.yml i sprawdź, który pakiet dokładnie się łamie.

Uszkodzenie NBT przy przenoszeniu przedmiotów między wersjami

Klient 1.20 trzyma mace z serwera 1.21 w ekwipunku. Przy zapisie struktura NBT może ulec uszkodzeniu, ponieważ klient nie zna nowych pól. Via zwykle radzi sobie z tym poprawnie, ale jeśli gracz wyrzuci przedmiot i podniesie z powrotem, możliwa jest utrata danych.

Rozwiązanie:

  • włącz handle-invalid-player-data: true w config.yml
  • nie dawaj graczom ze starych wersji nowych przedmiotów bezpośrednio

Chunki nie ładują się

Zwykle z powodu konfliktu z ProtocolLib lub innym pluginem manipulującym pakietami. Upewnij się, że ProtocolLib jest kompatybilny z twoją wersją Paper i Via. Zaktualizuj oba.

"Your protocol is not supported"

Klient jest bardzo stary (1.6.4 lub starszy) lub beta snapshot niewspierany przez Via. Niestety nie wszystkie wersje są wspierane, zwykle porzucone pre-release i snapshoty.

Via + ProtocolLib

ProtocolLib jest używany przez wiele pluginów do przechwytywania pakietów (HolographicDisplays, pluginy NPC, pluginy TAB).

Via i ProtocolLib mogą kolidować, ponieważ oba zmieniają pakiety. Zwykle Via idzie pierwsza w łańcuchu, ProtocolLib druga, lub odwrotnie. Zła kolejność prowadzi do uszkodzonych pakietów.

Rozwiązanie:

  • zaktualizuj oba do najnowszych wersji
  • w config.yml ProtocolLib włącz handshake-hook-mode: LATE
  • testuj dokładnie: każdy plugin używający ProtocolLib z osobna

Jeśli pojawiają się problemy, tymczasowo wyłącz ProtocolLib i sprawdź, czy Via działa sama.

Via + Geyser

Geyser pozwala klientom Bedrock łączyć się z serwerem Java. To osobne zadanie od Via: Via obsługuje klientów Java, Geyser Bedrock.

Oba są kompatybilne i często stoją razem. Kolejność instalacji:

  1. Geyser w plugins/
  2. ViaVersion + ViaBackwards + (jeśli potrzeba) ViaRewind w plugins/
  3. Floodgate (do uwierzytelniania graczy Bedrock bez konta Microsoft)

Nie ma konfliktów, pluginy działają na różnych poziomach: Geyser tłumaczy protokół Bedrock na protokół Java, Via tłumaczy między wersjami protokołu Java.

Najlepsze praktyki

Duży zakres kontra stabilność

Serwer przyjmujący klientów od 1.8 do 1.21 to bardzo szeroki zakres. Plusy: maksimum potencjalnych graczy. Minusy: narzut CPU, bugi na stykach wersji, trudniejsze utrzymanie.

Rekomendacja: przyjmuj zakres, który rzeczywiście potrzebuje twoja społeczność. Serwer survival z poważnymi nowoczesnymi funkcjami ogranicz do 1.19+. Projekt PvP ze społecznością 1.8 postaw pełny Via + Rewind i bądź gotowy na problemy.

Aktualizuj Via regularnie

Via Project rozwija się aktywnie. Każda główna wersja Minecrafta wymaga aktualizacji Via. Ustaw przypomnienie o aktualizacji (przez plugin typu InsaneAnnouncer lub zwykły wpis w kalendarzu) i czytaj changelog przed deployem.

Unikaj egzotycznych modów na kliencie

Wiele problemów z Via nie jest winą Via, tylko kustomowych modyfikacji klienta (Feather Client, Lunar Client, Badlion). Często łamią packet-flow. Gdy gracz zgłasza problem, pierwsze pytanie: "co masz zainstalowane na kliencie".

Testuj na każdej nowej wersji

Wyszło 1.21.4? Zaktualizuj Via, przeprowadź sesję testową z nowym klientem na starym serwerze. Obejrzyj logi. Problemy często pojawiają się w specyficznych scenariuszach (konkretny przedmiot, konkretny mob).

Zabezpieczenie serwera i DDoS

Serwery cross-version są popularne i częściej stają się celem ataków, więcej graczy oznacza więcej zazdrosnych konkurentów, niezadowolonych adminów innych projektów, zwykłych trolli. Poza standardową ochroną TCP warto zadbać o poprawne działanie Via pod obciążeniem.

MineGuard przepuszcza ruch Minecrafta przez filtr, odsiewając śmieciowe pakiety, zanim dojdą do serwera. Via działa na wierzchu, dla niej nie ma znaczenia, skąd przyszedł pakiet, ważne, że to prawidłowy handshake. Obie warstwy są zgodne i uzupełniają się.

Podsumowanie

Via Project to konieczny komponent dla każdego poważnego serwera Minecraft, który chce przyjmować publiczność szerszą niż jedna wersja. ViaVersion jest praktycznie zawsze potrzebna, ViaBackwards jest konieczna, gdy serwer jest nowszy niż typowy klient, ViaRewind uzupełnia wsparciem legacy społeczności 1.8.

Instalacja jest banalnie prosta: wrzuć jary do plugins/, zrestartuj. Dostrajanie: kilkanaście opcji w config.yml, większość już działa dobrze z domyślnymi.

Główna zasada: rozumiej koszt. Via nie jest darmowa pod kątem CPU, a nowe funkcje serwera nie są dostępne dla starych klientów. Wybieraj zakres pod realną społeczność, nie pod teoretycznie maksymalny.


Chroń swój serwer przed atakami DDoS

Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.

Wypróbuj za darmo


Powiązane artykuły