ViaVersion + ViaBackwards: поддержка всех версий Minecraft на одном сервере

ViaVersion + ViaBackwards: поддержка всех версий Minecraft на одном сервере

Minecraft выпускает новые версии каждые полгода, а аудитория размазана по всему диапазону от 1.8 до последней. Кто-то играет на пиратках 1.12, кто-то сидит на 1.16.5 из-за модпака, кто-то ждёт оптимизации в новой версии. Если ваш сервер требует строго одну версию, половина игроков просто не зайдёт.

Via Project решает эту проблему. Три плагина (ViaVersion, ViaBackwards, ViaRewind) позволяют держать сервер на актуальной 1.21, принимая клиентов начиная с 1.8. Это стандарт индустрии: у Hypixel, Mineplex, практически всех крупных проектов Via стоит по умолчанию.

В этом гайде разберём как работает протокольная совместимость, установку на Paper/Velocity/BungeeCord, матрицу поддержки версий, производительность и типовые проблемы.

Проблема разных версий

Minecraft-протокол меняется с каждой мажорной версией. Между 1.8 и 1.21 поменялось:

  • формат чанков (legacy chunk format -> palette format начиная с 1.13)
  • система предметов (numeric IDs -> namespaced strings)
  • NBT-структуры entity и tile entity
  • пакеты сетевого протокола (новые IDs, новые поля, удалённые пакеты)
  • механика боя (1.8 без кулдауна -> 1.9+ с атак-кулдауном)
  • дименшн-регистр (в 1.16+ динамический, в 1.12 фиксированный)
  • логин-последовательность (1.20.2+ новая конфигурационная фаза)

Без совместимости клиент 1.21, подключаясь к серверу 1.20, получит "Outdated server" и дисконект. То же в обратную сторону.

Что такое Via Project

Via Project это три связанных плагина:

ПлагинЧто делаетКуда
ViaVersionядро, старый сервер принимает новых клиентовобязательно всегда
ViaBackwardsновый сервер принимает старых клиентовесли сервер новее клиента
ViaRewindподдержка очень старых клиентов 1.7-1.9отдельно

Все три работают вместе. ViaBackwards требует ViaVersion, ViaRewind требует ViaVersion + ViaBackwards для полного диапазона.

Как работает протокольный remap

ViaVersion перехватывает сетевые пакеты между клиентом и сервером и переписывает их на лету.

Представим клиент 1.21 и сервер 1.20.4. Клиент отправляет handshake с protocol_version=767 (1.21). Сервер ожидает 765 (1.20.4). Без ViaVersion сервер ответит "Outdated client".

С ViaVersion на сервере:

  1. Клиент присылает handshake 1.21
  2. ViaVersion перехватывает, запоминает реальную версию клиента
  3. Подменяет handshake на 1.20.4 перед тем, как передать серверу
  4. Сервер принимает клиента как 1.20.4
  5. Дальше каждый входящий и исходящий пакет ViaVersion переписывает между форматами 1.21 и 1.20.4

Для каждой пары версий Via держит набор "протоколов" в коде: что переименовано, что удалено, как конвертируется каждое поле. При подключении 1.21 -> 1.20.4 -> 1.19.4 -> 1.18.2 -> 1.17.1 -> 1.16.5 -> ... цепочка трансформаций выстраивается автоматически.

ViaVersion: forward compatibility

ViaVersion позволяет новым клиентам играть на старом сервере. Пример: сервер Paper 1.16.5 (например, в составе крупного модпака, где обновление недоступно), клиенты играют на 1.21.

Ставим ViaVersion в plugins/. Всё. После рестарта клиенты 1.17, 1.18, 1.19, 1.20, 1.21 могут подключиться к серверу 1.16.5.

Что работает:

  • перемещение, атаки, взаимодействие с миром
  • чат, команды
  • большинство блоков и предметов
  • энтити и моб-спавн

Что НЕ работает автоматически:

  • новые блоки (copper, sculk) будут выглядеть как заглушки у клиента (каменный блок например)
  • новые предметы (mace, trial key) показываются как bedrock или air
  • новые энтити (warden, breeze) не рендерятся корректно
  • новые механики (trial spawner, crafter) не работают, сервер про них ничего не знает

ViaVersion полезен, когда сервер по какой-то причине не обновляется, а игроки не хотят переключаться на старый клиент.

ViaBackwards: backward compatibility

Обратная задача. Сервер 1.21, клиенты приходят с 1.17, 1.18, 1.19, 1.20. Нужно чтобы они играли.

Ставим ViaVersion + ViaBackwards. ViaBackwards добавляет обратный remap: сервер отправляет пакеты 1.21, ViaBackwards конвертирует их в формат клиента.

Самая интересная часть ViaBackwards, это item remapping. На сервере 1.21 у игрока в инвентаре mace. Клиент 1.20.6 про mace не знает. ViaBackwards заменяет его визуально на что-то похожее (iron_sword) и добавляет в lore пометку [1.21 item: mace]. Ломать игру клиента нельзя, поэтому Via всегда подменяет неизвестные предметы на ближайшие эквиваленты.

Аналогично для блоков: copper_bulb -> redstone_lamp, trial_spawner -> mob_spawner, vault -> barrel с подписью и так далее.

ViaRewind: legacy клиенты

ViaBackwards поддерживает в среднем 4-5 мажорных версий назад (сейчас это 1.17+). Для 1.8 и 1.9 нужен отдельный плагин, ViaRewind.

ViaRewind, это костыль посложнее. Между 1.8 и 1.9 Mojang поменял механику боя (attack cooldown, dual-wielding, shields). Между 1.12 и 1.13 поменялся формат инвентаря (numeric item IDs -> namespaced strings, "flattening"). Каждое такое изменение требует сложной логики на стороне Via, чтобы эмулировать новые механики для старого клиента.

ViaRewind держит:

  • 1.7.10 (работает через ViaLegacy, отдельный плагин для совсем древних)
  • 1.8.x
  • 1.9.x
  • частично 1.10, 1.11, 1.12

На 1.8-клиенте PvP работает как в 1.8: нет кулдауна, нет щитов, старый хитбокс. Это важно: проекты с 1.8 PvP-сообществом специально держат такой сервер 1.21 с Via, чтобы 1.8-игроки получили привычный геймплей, а 1.21-игроки, современный.

Матрица поддержки

Актуальная на 2026 год. Проверяйте на viaversion.com перед продакшн-деплоем.

ViaVersion

Серверная версияПоддерживаемые клиенты
1.8.x1.8 - 1.21.x (через Via)
1.12.21.12.2 - 1.21.x
1.16.51.16.5 - 1.21.x
1.18.21.18.2 - 1.21.x
1.19.41.19.4 - 1.21.x
1.20.41.20.4 - 1.21.x
1.21.x1.21.x - 1.21.x (только та же версия)

ViaBackwards

Серверная версияПоддерживаемые старые клиенты
1.21.x1.17 - 1.21
1.20.x1.16 - 1.20
1.19.x1.15 - 1.19
1.18.x1.14 - 1.18

ViaRewind

Серверная версияПоддерживаемые legacy клиенты
1.21.x + Via1.8.x - 1.12.x
1.20.x + Via1.8.x - 1.12.x
1.19.x + Via1.8.x - 1.12.x

Комбинация ViaVersion + ViaBackwards + ViaRewind на Paper 1.21 даёт полный диапазон 1.8 - 1.21. Это максимум того, что можно получить без сложных кастомных решений.

Установка на Paper / Spigot / Purpur

Самый простой случай. Ставим на standalone-сервер.

  1. Скачиваем с Modrinth последние версии всех трёх плагинов
  2. Кладём jar-файлы в plugins/:
plugins/
  ViaVersion-5.x.x.jar
  ViaBackwards-5.x.x.jar
  ViaRewind-4.x.x.jar
  1. Перезапускаем сервер
  2. В консоли проверяем:
[ViaVersion] Loaded 1.8 -> 1.21 protocols
[ViaBackwards] Loaded 1.17 -> 1.21 backward protocols
[ViaRewind] Loaded 1.7 -> 1.12 rewind protocols
  1. Проверка через команду:
/viaversion list

Покажет подключённых игроков и их реальные версии.

Установка на Velocity

Velocity, это современный прокси для сетей серверов. На нём Via работает иначе: стоит на прокси, и каждый back-end сервер не нуждается в собственной Via.

В plugins/ прокси:

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

В plugins/viaversion/config.yml прокси:

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

# Протоколы, которые прокси принимает
check-for-updates: false

# Не трогать бэкенд-серверы
# Via сама разбирается с каждым индивидуально

Плюсы Via на Velocity:

  • один конфиг на всю сеть
  • меньше CPU-оверхеда: remap происходит на прокси, бэкенд-серверы получают уже нативные пакеты
  • проще управлять версиями

Минусы:

  • трафик Via проходит через прокси, сетевой оверхед чуть больше
  • если бэкенд-сервер сложнее прокси по версии, нужно всё равно Via и там

Рекомендация для сетей

Если сеть маленькая (2-3 сервера одной версии), ставьте Via только на прокси. Если серверы разных версий (один 1.21, другой 1.8 для PvP-арены), ставьте Via на каждом, где есть несоответствие версий.

Установка на BungeeCord

BungeeCord поддерживается, но Velocity сильно лучше по производительности. Если нет причины держать BungeeCord, переходите на Velocity.

Для BungeeCord:

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

Конфиг plugins/ViaVersion/config.yml:

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

На backend-серверах Via не нужна, если бэкенды одной версии и совпадают с протоколом прокси.

Ключевые настройки config.yml

Файл plugins/ViaVersion/config.yml содержит десятки опций. Разбираем самые важные.

fix-non-full-blocks

# Исправляет хитбоксы не-полных блоков для новых клиентов на старом сервере
fix-non-full-blocks: true

Нужен при подключении новых клиентов к старому серверу. Например, клиент 1.13+ с flattened блоками на сервере 1.12.2. Без этой опции хитбоксы некоторых блоков (заборы, стены) будут рассчитаны неверно.

auto-team

# Автоматически создаёт команды для корректного отображения тегов над головой
auto-team: true

Важно для 1.8 клиентов. В 1.8 teams используются для отключения ников над головой (невидимость). Без auto-team команды плагинов типа NPCs или vanish плохо работают для 1.8-клиентов.

remap-pings

remap-pings: true

Исправляет server-list ping для клиентов всех версий. Без этого некоторые старые клиенты не видят сервер в списке вообще.

1-13-team-colour-change

1-13-team-colour-change: true

Исправляет цвета команд для клиентов до 1.13. Полезно для PvP-серверов с различной раскраской по командам.

chunk-border-fix

chunk-border-fix: true

Исправляет артефакты на границах чанков для старых клиентов на новом сервере.

fix-infested-block-breaking

fix-infested-block-breaking: true

Мелкий, но раздражающий фикс. Без него infested-блоки ломаются слишком медленно для клиентов 1.14-.

Производительность

Протокольный remap не бесплатный. Каждый пакет, идущий от клиента к серверу (и обратно), проходит через цепочку конвертеров.

Оверхед зависит от разницы версий:

РазницаCPU оверхед на игрока
нет (клиент = сервер)~0%
1 версия (1.21 клиент на 1.20.4)3-5%
3 версии (1.21 клиент на 1.19.4)8-12%
5-8 версий (1.21 клиент на 1.16.5)15-25%
максимум (1.21 сервер, 1.8 клиент через Rewind)25-40%

Числа приблизительные и зависят от нагрузки сервера. Самый дорогой remap, это chunk data (особенно 1.13 flattening: старые numeric IDs конвертируются в palette-формат).

Оптимизация

Если у вас сервер 1.21 и 70% игроков на 1.21, а 30% на старых версиях, никакой особой оптимизации не нужно, современный CPU справится.

Если у вас сервер держит 300+ одновременных игроков с разнообразными версиями, имеет смысл:

  1. Увеличить паулер для Via:
# config.yml
velocity-pinger-thread-count: 4
chunk-border-fix: true
  1. Отключить fix-non-full-blocks если большинство клиентов на одной версии
  2. Использовать ViaVersion на Velocity-прокси вместо Paper, разгружаем бэкенд

Pre-1.13 flattening

Это отдельная боль. При подключении клиента 1.12 к серверу 1.13+ ViaRewind конвертирует каждый блок и предмет между двумя системами идентификации (numeric IDs -> namespaced). На чанке с тысячами блоков это заметный расход.

Для серверов с большим трафиком старых клиентов лучше держать отдельный 1.12.2 инстанс, а не гонять всё через Rewind.

Ограничения

Via не волшебная палочка. Что она НЕ может:

Новые блоки и предметы

Copper bulb, trial spawner, mace, breeze rod, vault, это всё новое в 1.21. Клиенту 1.20 Via подменяет их на другие предметы визуально, но функциональность не работает. Игрок с клиента 1.20 не сможет взаимодействовать с crafter (это новый блок в 1.21), поскольку его клиент не знает о команде.

Новые измерения и биомы

Если сервер генерирует мир в новом биоме (cherry grove из 1.20), для клиента 1.19 этот биом будет просто равниной, неправильная текстура, неправильные частицы.

Новые анимации и особенности

Armadillo (новая 1.21 энтити), на клиенте 1.20 может не рендериться вообще или появляться как свинья. Новые анимации smite wolf, attacks не воспроизводятся на старых клиентах.

Resource packs

Ресурс-паки завязаны на конкретную версию. Пак, сделанный под 1.21, не работает на 1.17 клиенте. Для cross-version серверов нужно либо несколько паков, либо один минимальный, совместимый со всеми.

PvP: 1.8 vs современный

Большая тема для серверов с PvP-сообществом.

1.8 PvP: спам-клик, без кулдауна, дальний хитбокс, критические удары в прыжке. Скорость боя очень высокая, решает реакция и aim.

1.9+ PvP: attack cooldown (индикатор заряда меча), щиты блокируют урон, dual-wielding. Скорость боя медленнее, решает таймниг.

Если вы держите 1.8 сервер через ViaVersion и принимаете 1.21 клиентов, 1.21 игроки получат 1.8 механику (сервер 1.8 = правила 1.8). Это типичный сценарий PvP-серверов Hypixel-стиля.

Если вы держите 1.21 сервер с ViaBackwards + ViaRewind и принимаете 1.8 клиентов, 1.8 игроки получат 1.21 механику. Многим 1.8-игрокам это не подходит, они приходят за олдскульным PvP.

Вывод: для PvP-сервера определите целевую механику и держите соответствующую основу.

Troubleshooting

"Outdated server" / "Outdated client"

Наиболее частая проблема. Возможные причины:

  1. Клиент новее максимальной версии, поддерживаемой ViaVersion. Обновите ViaVersion.
  2. ViaVersion не загрузился. Проверьте консоль.
  3. Кэш ViaVersion повредился. Удалите plugins/ViaVersion/cache/ и перезапустите.

Invalid packet / client disconnected

Обычно означает остановку remap из-за неподдерживаемого пакета. Обычно это мод на клиенте, который отправляет кастомные пакеты. Решение:

  1. Проверьте, что у клиента нет несовместимых модов (Schematica старых версий, BetterFPS старых версий).
  2. Обновите ViaVersion до последнего.
  3. Посмотрите в debug: true в config.yml, какой конкретно пакет ломается.

NBT breakage при переносе предметов между версиями

Клиент 1.20 держит в инвентаре mace с сервера 1.21. При сохранении NBT-структура может повредиться, потому что клиент не знает о новых полях. Обычно Via корректно обходит это, но если игрок выбрасывает предмет и поднимает обратно, возможна потеря данных.

Решение:

  • включить handle-invalid-player-data: true в config.yml
  • не давать игрокам старых версий новые предметы напрямую

Чанки не загружаются

Обычно из-за конфликта с ProtocolLib или другим пакет-манипулирующим плагином. Убедитесь, что ProtocolLib совместим с вашей версией Paper и Via. Обновите оба до последних.

"Your protocol is not supported"

Клиент совсем древний (1.6.4 или старше) или бета-снапшот, не поддерживаемый Via. Увы, не все версии поддерживаются, обычно устаревшие pre-release и снапшоты.

Via + ProtocolLib

ProtocolLib используется многими плагинами для перехвата пакетов (HolographicDisplays, NPC-плагины, TAB-плагины).

Via и ProtocolLib могут конфликтовать, потому что оба меняют пакеты. Обычно Via идёт первой в цепочке, ProtocolLib второй, или наоборот. Плохой порядок приведёт к поломанным пакетам.

Решение:

  • обновите оба до самых свежих
  • в config.yml ProtocolLib включите handshake-hook-mode: LATE
  • тестируйте тщательно: для каждого плагина, использующего ProtocolLib, отдельно

Если возникают проблемы, временно отключите ProtocolLib и посмотрите, работает ли Via одна.

Via + Geyser

Geyser позволяет Bedrock-клиентам подключаться к Java-серверу. Это отдельная задача от Via, Via работает с Java-клиентами, Geyser с Bedrock.

Оба совместимы и часто стоят вместе. Порядок установки:

  1. Geyser в plugins/
  2. ViaVersion + ViaBackwards + (если нужно) ViaRewind в plugins/
  3. Floodgate (для аутентификации Bedrock-игроков без Microsoft-аккаунта)

Конфликтов нет, плагины работают на разных уровнях: Geyser переводит Bedrock-протокол в Java-протокол, Via переводит между версиями Java-протокола.

Best practices

Большой диапазон versus стабильность

Сервер, принимающий клиентов с 1.8 до 1.21, это очень широкий диапазон. Плюсы: максимум потенциальных игроков. Минусы: CPU-оверхед, баги на стыках версий, сложнее поддерживать.

Рекомендация: принимайте тот диапазон, который реально нужен вашей аудитории. Если это survival-сервер с серьёзными современными фичами, ограничьтесь 1.19+. Если PvP-проект с 1.8-сообществом, ставьте полный Via + Rewind и будьте готовы к проблемам.

Обновляйте Via регулярно

Via Project развивается активно. Каждая мажорная версия Minecraft требует обновления Via. Ставьте автообновление (через плагин типа InsaneAnnouncer или просто reminder) и читайте changelog перед деплоем.

Не используйте exotic моды на клиенте

Многие проблемы с Via связаны не с Via, а с кастомными клиентскими модификациями (Feather Client, Lunar Client, Badlion). Они часто ломают packet-flow. Если игрок жалуется на проблемы, первый вопрос: "что на клиенте стоит".

Тестируйте на каждой новой версии

Вышла 1.21.4? Обновите Via, прогоните тестовый плейтест с новым клиентом на старом сервере. Смотрите логи. Проблемы часто всплывают в специфических сценариях (определённый предмет, определённый моб).

Защита сервера и DDoS

Cross-version серверы популярны и часто становятся целью атак, больше игроков означает больше конкурентов, недовольных админов других проектов, просто троллей. Помимо стандартной TCP-защиты стоит позаботиться о корректной работе Via под нагрузкой.

MineGuard пропускает Minecraft-трафик через фильтр, отсеивая мусорные пакеты до того, как они дойдут до сервера. Via работает сверху, поскольку для неё неважно, откуда пришёл пакет, главное что это валидный handshake. Оба уровня защиты совместимы и дополняют друг друга.

Итого

Via Project, это необходимый компонент для любого серьёзного Minecraft-сервера, который хочет принимать аудиторию больше одной версии. ViaVersion обязателен практически всегда, ViaBackwards нужен если ваш сервер новее типичного клиента, ViaRewind дополняет поддержкой legacy 1.8 аудитории.

Правильная установка простая: бросить jar-файлы в plugins/, перезапустить. Тонкая настройка: десяток опций в config.yml, большинство которых работает хорошо по умолчанию.

Главное правило: понимайте цену. Via не бесплатен по CPU, и новые фичи сервера не доступны старым клиентам. Выбирайте диапазон под реальную аудиторию, не максимально возможный теоретически.


Proteja Seu Servidor de Ataques DDoS

Proteção gratuita com configuração em 5 minutos. 1 TB de tráfego incluso.

Experimentar Grátis


Artigos Relacionados