Skip to content

Wiki rpr

pjscruggs edited this page Nov 11, 2026 · 2 revisions

Raknetify2 · Русскій дореформенный (Россійская имперія)

Языкъ

Игра въ компаніи

Сѣтевыя соединенія чрезъ RakNet для кліентовъ и салоновъ Minecraft.

Загрузить · GitHub

Minecraft Raknetify2 Кліентъ / Салонъ
Fabric mods/raknetify2-fabric-*.jar Кліентъ / Салонъ
Forge mods/raknetify2-forge-*.jar Кліентъ / Салонъ
NeoForge mods/raknetify2-neoforge-*.jar Кліентъ / Салонъ
Spigot / Paper plugins/raknetify2-spigot-*.jar Салонъ
Velocity plugins/raknetify2-velocity-*.jar Velocity
BungeeCord plugins/raknetify2-bungee-*.jar BungeeCord

Добавить

  1. Игра въ компаніи

  2. Добавить

  3. Адресъ салона

    Адресъ салона
    RakNet · UDP raknet;play.example.com:25565
    TCP play.example.com:25565
  4. Готово

  5. Присоединиться

F3 · Raknetify2

F3
RakNet · UDP Дѣйствуетъ · MTU 1400
TCP Бездѣйствуетъ

Velocity / BungeeCord

  1. Кліентъ · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
  2. Velocity / BungeeCord → TCP → Салонъ
Портъ · UDP Java
Fabric / Forge / NeoForge 1–65534 -Draknetify.fabric.portOverride=25570
Spigot / Paper ≥ 0.1.0-beta.1.431 1–65535 -Draknetify.spigot.portOverride=25570
Velocity 1–65534 -Draknetify.velocity.portOverride=25570
BungeeCord 1–65534 -Draknetify.bungee.portOverride=25570

Превышено время ожиданія

Адресъ салона UDP
raknet;play.example.com:25580 play.example.com:25580 → NAT → 192.0.2.10:25570
Салонъ · 192.0.2.10 25570/udp

config/raknetify2-compatibility.json

Салонъ / Velocity / BungeeCord

JSON
① ② ③ {"mode":"ordered"}
① ∥ ② ∥ ③ {"mode":"multichannel"}

Simple Voice Chat

Салонъ Raknetify2 · UDP 25565 Simple Voice Chat
Fabric / Forge / NeoForge config/raknetify2-voicechat.json · {"enabled":true} config/voicechat/voicechat-server.properties · port=-1
Spigot / Paper config/raknetify2-voicechat.json · {"enabled":true} plugins/voicechat/voicechat-server.properties · port=-1

Simple Voice Chat · Velocity / BungeeCord

PROXY protocol v2 · UDP

Адресъ салона trustedProxies RakNet
192.0.2.10 · PROXY v2 / UDP ["192.0.2.10"] ✓
192.0.2.11 · PROXY v2 / UDP ["192.0.2.10"] ✗
Кліентъ → RakNet / UDP ["192.0.2.10"] ✗

config/raknetify2-proxy-protocol.json

{"trustedProxies":["192.0.2.10"]}

Minecraft ≥ 1.20.5 · /transfer

  1. Салонъ A · Fabric / Forge / NeoForge · config/raknetify2-transfers.json

    {"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]}
  2. Салонъ B · play.example.com · server.properties → accepts-transfers=true

  3. Салонъ A · /transfer play.example.com 25565 Alex → Кліентъ (Alex) → RakNet · play.example.com:25570

PacketOrdering

Minecraft
ui Настройки
entity Скелетъ
world_interaction Инвентарь
effects Частицы
chunk Блоки

PacketOrdering.java

Несовмѣстимая версія!

Нашли ошибку?

Главная

Raknetify2

Для сѣтевой игры въ Minecraft Raknetify2 используетъ RakNet поверхъ UDP. Данные идутъ по нѣсколькимъ каналамъ, въ каждомъ изъ которыхъ сохраняется свой порядокъ доставки. Если на одномъ каналѣ потерялся пакетъ, остальные могутъ продолжать передачу. Благодаря этому игра можетъ быстрѣе реагировать на дѣйствія игрока, пока идётъ повторная передача потерянныхъ данныхъ или загрузка чанковъ.

Raknetify2 – независимо развиваемый форкъ Raknetify, авторомъ котораго является ishland. ВЪ форке добавлена поддержка новыхъ версій Minecraft. ВЪ нѣмъ также поддерживаются транспортный кодъ, интеграціи съ платформами и тесты совмѣстимости.

Начать работу

  1. Провѣрьте совмѣстимость съ Minecraft и модами.
  2. Выберите файлъ для скачиванія и установите его.
  3. Соединитесь съ адресомъ, такимъ какъ raknet;play.example.com.

Руководство по работѣ салона

Авторы модовъ могутъ использовать интерфейсъ порядка пакетовъ для объявленія зависимостей между пользовательскими полезными данными и трафикомъ Minecraft.

Ссылки на проекты

Raknetify2 используетъ лицензію MIT и сохраняетъ оригинальные увѣдомленія объ авторскихъ правахъ. Его реализація въ сѣтевомъ строительствѣ основана на Raknetify и netty-raknet.

Установка

Скачайте релизъ съ GitHub Releases. Провѣрьте версію Minecraft и требованія къ загрузчикамъ для даннаго релиза передъ установкой.

ВЪ какомъ мѣстѣ вы планируете установку Файлъ Файловая папка
Кліентъ или салонъ Fabric raknetify2-fabric-*.jar mods
Forge кліентъ или салонъ raknetify2-forge-*.jar mods
Кліентъ или салонъ NeoForge raknetify2-neoforge-*.jar mods
Салонъ Spigot или Paper raknetify2-spigot-*.jar plugins
Velocity proxy raknetify2-velocity-*.jar plugins
Прокси BungeeCord raknetify2-bungee-*.jar plugins

Закройте кліентъ или остановите салонъ передъ замѣной его JAR-файла. Удалите оригинальный JAR-файлъ Raknetify и любые болѣе старые JAR-файлы Raknetify2 изъ той же установки передъ добавленіемъ новаго файла.

Папки кліента принадлежатъ экземпляру Minecraft или модпаку, который вы запускаете. Папки салона и прокси принадлежатъ установкѣ салона или прокси. Создайте соотвѣтствующіе папки, если вашъ загрузчикъ ихъ ещё не создалъ.

Прямые салонные соединенія

  1. Установите кліентскій модъ для своего загрузчика.
  2. Установите соотвѣтствующій модъ салона или плагинъ Spigot/Paper на совмѣстимомъ салонѣ.
  3. Слѣдуйте конфигураціи Firewall и роутера, чтобы разрѣшить UDP-соединенія съ салономъ.
  4. Перезапустите кліентъ и салонъ.
  5. Добавьте адресъ салона, напримѣръ raknet;play.example.com или raknet;play.example.com:25565.

Адреса безъ префикса raknet; используютъ TCP.

Установка кліентскаго модуля не добавляетъ поддержку RakNet для удалённаго салона. Операторъ салона долженъ предоставить endpoint RakNet. Игрокамъ, присоединяющимся къ салону другого человѣка, обычно не нужны правила пересылки входящихъ сообщеній.

Velocity и BungeeCord

Установите соотвѣтствующій плагинъ-прокси и кліентскій модъ. Слѣдуйте инструкціямъ по настройкамъ слушателей, перенаправленію запросовъ на салонъ, ограниченіямъ доступа и адресу, который должны использовать игроки, въ раздѣлахъ Velocity и BungeeCord.

Отдѣльный портъ слушателя UDP

Для прямого салона Minecraft установите соотвѣтствующій Java аргументъ ниже. Операторы прокси должны использовать настройки Velocity и BungeeCord listener.

Платформа Аргументы Java Принятые порты
Салонъ Fabric, Forge или NeoForge -Draknetify.fabric.portOverride=25570 1 до 65534
Салонъ Spigot или Paper -Draknetify.spigot.portOverride=25570 1 до 65535

Forge и NeoForge используютъ общій кодъ слушателей, поэтому названіе ихъ свойствъ также содержитъ fabric. Замѣните 25570 на нужный UDP-портъ.

Spigot / Paper ≥ 0.1.0-beta.1.431

Добавьте аргументъ передъ -jar въ командѣ Java или въ поле параметровъ JVM вашей машинки. Запустите салонъ снова и разрѣшите использованіе UDP на выбранномъ портѣ слушателя. Если публичный портъ также составляетъ 25570, подключайтесь по адресу raknet;play.example.com:25570. Если роутеръ переводитъ портъ, используйте его публичный портъ въ адресѣ кліента. Портъ TCP остаётся на своёмъ текущемъ значеніи.

На протоколахъ Spigot/Paper слушатель UDP сохраняетъ локальный адресъ привязки слушателя TCP Minecraft. Недѣйствительное измѣненіе или занятый портъ UDP мѣшаетъ запуску RakNet. Провѣрьте въ логѣ запуска адресъ и портъ привязки UDP. Удалите аргументъ и перезапустите, чтобы вернуться къ номеру порта слушателя TCP.

Маршрутизаторъ или UDP-прокси также можетъ использовать другой публичный UDP-портъ и пересылать данные на существующій слушатель, не измѣняя параметры салона на языкѣ Java.

Разработочные версіи

Откройте успѣшно выполненную сессию main въ GitHub Actions и скачайте её архив Artifacts. Для скачиванія архивовъ рабочихъ процессовъ GitHub требуется учётная запись. Используйте таблицу съ инсталляціями выше, чтобы выбрать JAR-файлъ изъ архива.

Velocity и BungeeCord

Velocity и BungeeCord находятся между игроками и бэкендъ-салонами Minecraft. Установите Raknetify2 на прокси-салонѣ и на каждомъ кліентѣ, который будетъ подключаться черезъ RakNet.

Кліентъ Raknetify2 --UDP--> Velocity или BungeeCord --TCP--> салонъ-фронтера

Бэкендъ-салоны не нуждаются въ Raknetify2 для этого пути подключенія. Имъ всѣ ещё необходимы моды, плагины и поддержка перенаправленія, необходимые для работы вашей сѣти. Raknetify2 не переводитъ версіи Minecraft и не измѣняетъ процедуру аутентификаціи аккаунта прокси-салона.

Установите плагинъ-прокси.

  1. Подтвердите, что обычные TCP-соединенія черезъ вашъ прокси работаютъ корректно, включая авторизацію и переключеніе между бэкендъ-салонами.
  2. Остановите прокси и скачайте соотвѣтствующій плагинъ съ GitHub Releases.
  3. Помѣстите raknetify2-velocity-*-all.jar или raknetify2-bungee-*-all.jar въ папку plugins прокси-салона. Удалите изъ этой папки любые болѣе старые плагины Raknetify или Raknetify2.
  4. Установите соотвѣтствующій модъ кліента Raknetify2 съ помощью руководства по установкѣ.
  5. Провѣрьте настройки слушателя ниже, перезапустите прокси и провѣрьте его журналъ на наличіе ошибокъ при работѣ слушателя RakNet.
  6. Разрѣшите публичный UDP-трафикъ для прокси и ограничьте порты для игрового обмѣна, какъ описано въ Конфигураціи брандмауэра и роутера.

Используйте совмѣстимые версіи Raknetify2 на кліентѣ и прокси-салонѣ. Провѣрьте совмѣстимость передъ сочетаніемъ версій.

Velocity

Параметръ bind въ файлѣ velocity.toml опредѣляетъ адресъ пріёма данныхъ въ Minecraft и TCP-портъ. Raknetify2 обычно используетъ одинъ и тотъ же номеръ порта для UDP. Пункты [servers] указываютъ на бэкендъ-салоны. Эти пункты должны соотвѣтствовать TCP-адресамъ бэкендъ-салоновъ. См. руководство по конфигураціи Velocity.

Чтобы использовать отдѣльный UDP-портъ, добавьте этот аргументъ JVM передъ -jar въ команду запуска Velocity:

-Draknetify.velocity.portOverride=25570

Переименуйте 25570 въ выбранный вами портъ. Это измѣнитъ UDP-портъ RakNet, сохраняя при этомъ TCP-портъ и адреса бэкенда Velocity. Послѣ измѣненія параметра необходимо перезапустить Velocity.

Настройте передачу данныхъ игроковъ и на Velocity, и на внутреннихъ салонахъ. Если салонное ПО поддерживаетъ современный режимъ передачи, используйте его и храните общій секретъ въ тайнѣ. Инструкціи для каждаго типа салона есть въ руководствѣ Velocity по передачѣ данныхъ игроковъ. Ограниченія брандмауэра на внутреннихъ салонахъ должны оставаться въ силѣ.

BungeeCord

ВЪ файлѣ config.yml BungeeCord значеніе host въ каждой записи listeners указываетъ адресъ слушанія Minecraft и TCP-портъ. Raknetify2 обычно добавляетъ UDP на этот портъ. Записи servers содержатъ TCP-адреса бэкенда. Эти настройки описаны въ руководствѣ по конфигураціи BungeeCord.

Для отдѣльнаго UDP-порта добавьте этот параметръ JVM передъ -jar въ командѣ запуска BungeeCord:

-Draknetify.bungee.portOverride=25570

Переопредѣленіе относится ко всему процессу проксированія. Для конфигураціи съ нѣсколькими слушателями Minecraft провѣрьте фактическіе endpoints RakNet въ логѣ запуска передъ добавленіемъ правилъ фильтраціи. Перезапустите BungeeCord послѣ измѣненія параметровъ.

Сохраняйте авторизацію аккаунта черезъ прокси. Для бэкендовъ на основѣ Spigot, въ руководствѣ по пересылкѣ IP отъ BungeeCord указано, что ip_forward: true на прокси должно сопровождаться settings.bungeecord: true на бэкенде. Однако пересылка IP сама по себѣ не предотвращаетъ попытки подключенія напрямую къ бэкенду. Ограничьте доступъ къ бэкенду съ помощью инструкцій по использованію файрволла.

Выберите адресъ, который используютъ игроки.

Оба параметра прокси-салона поддерживаютъ порты отъ 1 до 65534. Недѣйствительные значенія игнорируются, поэтому провѣрьте назначенный UDP-портъ въ логѣ запуска. Удалите аргументъ и перезапустите, чтобы вернуться къ номеру порта слушателя Minecraft.

Игроки подключаются къ публичному хостовому имени прокси и UDP-порту, напримѣръ raknet;play.example.com:25570. Когда роутеръ переводитъ порты, используйте его публичный UDP-портъ въ адресѣ кліента. Адреса безъ префикса raknet; продолжаютъ использовать TCP-слушатель прокси.

Оставьте Query, Geyser и другіе сервисы UDP на отдѣльныхъ UDP-портахъ. Разные TCP-порты не рѣшаютъ конфликтовъ съ UDP-соединеніями.

Голосовой чатъ и дополнительная пересылка UDP-пакетовъ

Simple Voice Chat используетъ собственный плагинъ-прокси и UDP-портъ въ библіотекахъ Velocity и BungeeCord. Для настройки необходимо слѣдовать инструкціямъ по использованію прокси-салона для голосовой связи здѣсь.

Если передъ вашимъ Minecraft-прокси установленъ отдѣльный UDP-релегей, который отправляетъ заголовки протокола PROXY v2, настройте Raknetify2 съ использованіемъ UDP-пересылки и протокола PROXY. Установка Velocity или BungeeCord самостоятельно не требуетъ такихъ настроекъ.

Провѣрьте соединеніе.

Провѣрьте работу изъ внѣ вашего локальной сѣти съ кліентомъ Raknetify2. Присоединяйтесь черезъ прокси, переключайтесь между используемыми бэкендъ-салонами и убѣдитесь, что идентичность игрока и разрѣшенія остаются корректными.

  • Если TCP-соединеніе черезъ прокси работаетъ, но RakNet выходитъ изъ строя, провѣрьте слушатель UDP-протокола прокси, публичный портъ, маршруты по IPv4 и IPv6, а также правила фильтраціи въ брандмауере.
  • Если оба протокола откажутся работать при попыткѣ прокси-салона подключиться къ бэкендъ-салону, провѣрьте TCP-адресъ бэкенда, правила доступа и настройки перенаправленія игроковъ.
  • Если прокси сообщаетъ о занятомъ UDP-портѣ, провѣрьте, нѣтъ ли процесса Query, Geyser, голосового прокси или другого процесса, связаннаго съ нимъ.

Для отчётовъ необходимо включить какъ логи прокси, такъ и логи бэкендъ при одномъ и томъ же попыткѣ подключенія. Информацію о версіи логовъ смотрите въ раздѣлѣ Устраненіе неполадокъ.

Настройка файрвола и роутера

Это руководство предназначено для операторовъ салоновъ. Raknetify2 требуетъ работающего UDP-канала къ салону или прокси-салону, принимающему соединенія по протоколу RakNet. По умолчанію используется тотъ же портъ, что и TCP-слушатель Minecraft.

Для игроковъ, находящихся въ одной локальной сѣти, используйте локальный адресъ салона и разрѣшите UDP черезъ его фаерволъ. Необходимо использовать перенаправленіе порта маршрутизатора, если интернетъ-трафикъ долженъ проходить черезъ IPv4 NAT маршрутизатора.

Выберите пунктъ назначенія и портъ.

Прямой салонъ

Отправляйте публичный UDP-трафикъ на машину, на которой работаетъ салонъ Minecraft съ помощью Raknetify2. Портъ назначенія – это RakNet-слушатель UDP салона. Дайте этому порту разрѣшеніе въ фаерволе хоста салонной машины. Сохраните существующій TCP-путь для обычныхъ подключеній Minecraft.

Напримѣръ, если Raknetify2 слушаетъ по UDP на портъ 25570, перенаправьте общественный UDP-портъ на локальный адресъ салона по порту 25570. TCP-портъ салона можетъ оставаться на 25565. См. Настройки прослушиванія прямого салона, чтобы выбрать другой UDP-портъ.

Velocity или BungeeCord

Отправляйте публичный UDP-трафикъ на машину, на которой работаетъ Velocity или BungeeCord, съ использованіемъ плагина Raknetify2. ВЪ качествѣ назначенія пересылки используйте слушатель UDP-трафика RakNet. Сохраняйте существующую публичную TCP-маршруту прокси для обычныхъ Minecraft-соединеній.

Прокси подключается къ бэкендъ-салонамъ Minecraft черезъ TCP. Добавленіе Raknetify2 въ прокси не требуетъ открытія UDP-портовъ для игроковъ.

Соединеніе Доступъ съ разрѣшеніемъ
Игроки, использующіе прокси-салонъ Публичный UDP-портъ для пріёма сообщеній отъ RakNet, а также существующій публичный TCP-портъ для пріёма.
Прокси къ бэкендъ-салонамъ Бэкендъ-порты TCP въ Minecraft, доступные только черезъ указанные прокси-хосты
Игроки перейдутъ непосредственно на бэкендъ-портъ игры. Оставьте всѣ блокировки, включая черезъ IPv6.

Когда прокси и бэкендъ работаютъ непосредственно на заказанномъ салонѣ, контролируемомъ вами, бэкендъ-слушатели могутъ использовать локальные адреса для доступа къ прокси. Между салонами доступъ къ прокси черезъ TCP долженъ быть ограниченъ съ помощью фаервола или изолированной частной сѣти. Контейнеры и управляемые салоны также должны подвергаться аналогичнымъ ограниченіямъ въ отношеніи сѣтевого маршрутизатора. См. Руководство по безопасности бэкенда Velocity и Руководство по использованію фаервола BungeeCord.

Переводка и блокировка черезъ фильтры брандмауэра работаютъ вмѣстѣ. Прямой доступъ къ бэкендъ-системѣ можетъ обойти провѣрки входа черезъ прокси. Для установки плагиновъ, настройки перевода и измѣненія UDP-порта слѣдуйте инструкціямъ по Velocity и BungeeCord.

Публичные и локальные номера портовъ

Публичный портъ и портъ слушателя могутъ отличаться, когда роутеръ переводитъ данные между ними.

Настройки Используемый портъ
Адресъ кліента и салона Публичный UDP-портъ
Внѣшній портъ правилъ пересылки маршрутизатора Публичный UDP-портъ
Внутренній портъ правилъ пересылки маршрутизатора Портъ UDP слушателя RakNet
Локальный портъ файрвола хоста Портъ UDP слушателя RakNet

Переадресація портовъ IPv4

Для хостинга за использованіемъ IPv4-роутера:

  1. Найдите локальный IPv4 адресъ машины, принимающей соединенія по протоколу RakNet. Используйте резервированіе адреса съ помощью DHCP или подходящее статическое адреса, чтобы правило перенаправленія продолжало оріентироваться на эту машину.
  2. Добавьте правило пересылки UDP для публичнаго порта, который используютъ игроки.
  3. Установите пунктъ назначенія правила на локальный адресъ этой машины и UDP-портъ слушателя RakNet.
  4. Дайте разрѣшеніе на входящіе UDP соединенія на порту слушателя въ брандефайере хоста.

Напримѣръ, салонъ, слушающій по UDP-порту 25565, можетъ использовать правило съ публичнымъ портомъ 25565, адресомъ получателя 192.168.1.100 и портомъ получателя 25565. Замѣните приведённый примѣръ адреса на фактическій локальный адресъ вашего салона.

Сохраните существующее правило TCP для обычныхъ соединеній въ Minecraft. Правило пересылки TCP не поддерживаетъ UDP.

Когда пересылка всѣ ещё не работаетъ

Провѣрьте, выполняетъ ли другой маршрутизаторъ или вашъ провайдеръ NAT-модернизацію передъ тѣмъ, какъ трафикъ достигнетъ вашего маршрутизатора. При наличіи двухъ маршрутизаторовъ перенаправленіе должно осуществляться обоими. Если вашъ провайдеръ используетъ салонную версію NAT, уточните, можетъ ли онъ предоставить публичный IPv4 адресъ или использовать сервис хостинга или туннель, поддерживающій входящий UDP-трафикъ. Правила перенаправленія вашего маршрутизатора не могутъ настроить NAT провайдера. См. Руководство TP-Link по перенаправленію портовъ для полученія информаціи о требованіяхъ къ публичному адресу WAN.

Правила файрвола IPv6

Дайте разрѣшеніе на прохожденіе выбраннаго UDP-порта какъ черезъ IPv6-файрволъ роутера, такъ и черезъ файрволъ хоста. Цѣлевымъ адресомъ IPv6 является адресъ машины, принимающей соединенія по RakNet.

Провѣрьте, указываетъ ли IPv6-адресъ хостъ-имени на указанную машину. Если его IPv6-адресъ измѣняется, обновите записи DNS и правила брандмауэра, связанные съ этимъ адресомъ.

Хостъ-имя, которое публикуетъ какъ адреса IPv4, такъ и IPv6, должно имѣть функціональные маршруты для каждаго изъ этихъ адресовъ. Провѣряйте оба набора правилъ, когда одинъ игрокъ можетъ подключиться, а другой – нѣтъ.

Если перенаправленіе по IPv4 измѣняетъ номеръ порта, убѣдитесь, что этот портъ доступенъ также для слушателей по IPv6. Переводъ порта по IPv4 не конфигурируетъ маршрутъ по IPv6.

Хостингъ-провайдеры и туннели

Провайдеръ или туннель должны поддерживать протоколъ UDP на публичномъ endpoints, который вы предоставляете игрокамъ. Провѣрьте распредѣленіе портовъ, правила сѣтевого брандмауера, а также собственный брандмауеръ салона.

Если дополнительный UDP-прокси пересылаетъ адреса кліентовъ съ использованіемъ протокола PROXY v2, слѣдуйте процедурѣ пересылки UDP и использованія протокола PROXY и ограничьте доступъ къ получающему UDP-слушателю только довѣренному прокси.

Провѣрьте соединеніе.

Подключитесь изъ внѣ локальной сѣти салона съ использованіемъ обновлённаго кліента Raknetify2, примѣняя адресъ вродѣ raknet;play.example.com:25565. Используйте публичный UDP-портъ въ этомъ адресѣ.

Используйте реальное соединеніе по сѣти RakNet для провѣрки маршрута. Сканированіе по протоколу UDP, которое не получаетъ отвѣта, можетъ дать неопредѣлённый результат, поскольку работающій сервис можетъ игнорировать незнакомые сигналы. Документація Nmap по сканированію по UDP объясняетъ это поведеніе.

Успѣшная TCP-связь подтверждаетъ только TCP-маршрутъ. Если RakNet превышаетъ время ожиданія, провѣрьте слушателя, мѣсто отправки, UDP-портъ и правила фильтраціи черезъ руководство по устраненію неполадокъ.

Совмѣстимость

Провѣрьте совмѣстимость съ конкретной версіей, которую вы скачиваете. Разработочная вѣтка можетъ содержать функціональность, которая ещё не появилась въ какой-либо версіи.

Версіи Minecraft и Java

Версіи Minecraft и Java · English

Требованія къ Java, указанные Raknetify2, являются минимальными. ВЪ Minecraft или его загрузчикъ можетъ требоваться болѣе новая версія языка выполненія. Выберите версію Java, которая соотвѣтствуетъ всѣмъ требованіямъ.

Версіи для кліентовъ и салоновъ

Используйте Raknetify2 версіи на кліентѣ и салонѣ, или на прокси-салонѣ, принимающемъ его соединеніе, по возможности. Передъ сочетаніемъ версій провѣрьте примѣчанія къ релизу. Зашифрованные соединенія RakNet требуютъ поддержки протокола аутентифицированного шифрованія на обоихъ концахъ. Оригинальные версіи Raknetify и Raknetify2, выпущенные до введенія этого протокола, не могутъ устанавливать такіе зашифрованные соединенія съ обновлёнными peers.

Raknetify2 поддерживаетъ существующій игровой протоколъ Minecraft. Для подключенія разныхъ версій Minecraft необходимо настроить соотвѣтствующую переводку протокола.

Другіе моды

Другіе моды · English

ВЪ случаѣ сбоевъ въ работѣ большаго модъ-пакета слѣдуйте руководству по устраненію неполадокъ. Укажите въ отчётѣ полные версіи модовъ.

Организованный режимъ

Организованный режимъ

Обычно Raknetify2 позволяетъ независимымъ каналамъ пакетовъ продолжать работу, пока одинъ изъ нихъ ждётъ отсутствующихъ данныхъ. ВЪ режимѣ упорядоченія всѣ пакеты Minecraft помѣщаются въ одинъ каналъ, поэтому отсутствующій пакетъ задерживаетъ всѣ послѣдующіе пакеты въ томъ направленіи до тѣхъ поръ, пока они не будутъ пересланы снова. Это сохраняетъ порядокъ, ожидаемый нѣкоторыми античитъ-программами, но при этомъ лишаетъ Raknetify2 способности обеспечивать бесперебойную передачу информаціи во время ожиданія.

Активація режима упорядоченія

  1. Установите версію Raknetify2, поддерживающую порядковый режимъ, на салонѣ или прокси-салонѣ, принимающемъ соединенія по протоколу RakNet, а также на каждомъ кліентѣ RakNet.

  2. Создайте файлъ config/raknetify2-compatibility.json въ корневой директоріи салона или прокси-салона. Если директорія config ещё не существуетъ, создайте её.

  3. Добавьте слѣдующее:

    {"mode": "ordered"}
  4. Перезапустите салонъ или прокси-салонъ.

Кліенты автоматически слѣдуютъ настройкамъ салона. Игрокамъ не нужно создавать конфигураціонный файлъ или измѣнять адресъ своего салона RakNet.

Всѣ пакеты въ Minecraft используютъ одинъ надёжный упорядоченный каналъ въ каждомъ направленіи, включая раздѣлители пакетовъ и переходы между мірами.

Настройки прокси-салона

Когда игроки подключаются черезъ Velocity или BungeeCord, необходимо настроить режимъ упорядоченнаго обмѣна данными на этомъ прокси-салонѣ, даже если античитъ работаетъ на бэкендъ-салонѣ.

Эта политика примѣняется ко всѣмъ бэкендъ-шлюмамъ. ВЪ режимѣ упорядоченія прокси передаётъ запросы keepalive бэкенда къ реальному кліенту, вмѣсто того чтобы отвѣчать на нихъ локально.

Провѣрка настроекъ

При первомъ подключеніи къ сѣти RakNet консоль сообщаетъ:

Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)

При успѣшномъ обмѣнѣ информаціей о совмѣстимости также записывается сообщеніе ordered compatibility negotiated, за которымъ слѣдуетъ адресъ партнёра.

Поддерживайте активные провѣрки на использованіе читовъ и провѣряйте свой конкретный варіантъ настроекъ.

Старые кліенты

Кліенты RakNet, которые не поддерживаютъ порядковый режимъ, не могутъ подключаться къ салону, требующему его использованія. Обновите Raknetify2 на такихъ кліентахъ, или подключайтесь къ салону или прокси-салону по обычному адресу и порту TCP безъ префикса raknet;.

Возвращаемся къ режиму многоканальнаго взаимодѣйствія.

Измѣните файлъ на:

{"mode": "multichannel"}

Затѣмъ перезапустите салонъ или прокси-салонъ. Удаленіе файла также восстанавливаетъ режимъ многоканальнаго взаимодѣйствія послѣ перезапуска.

Проблемы съ конфигураціей

Файлъ долженъ содержать ровно одно настройку подъ названіемъ mode, причёмъ значеніемъ этой настройки можетъ быть либо "ordered", либо "multichannel". Значенія имѣютъ различія въ регистрѣ символовъ.

Недѣйствительные или нечитаемые конфигураціи отказываются отъ подключенія черезъ RakNet. Исправьте файлъ и перезапустите процессъ.

Если консоль по-прежнему отображаетъ значеніе multichannel, убѣдитесь, что файлъ находится въ рабочемъ директоріи салона или прокси-салона, который принимаетъ соединеніе по протоколу RakNet, а затѣмъ перезапустите этот процессъ.

Автоматическіе переводы

Салоны Fabric, Forge и NeoForge могутъ выбирать RakNet при передачѣ способнаго кліента на заранѣе указанное мѣсто. Это используетъ встроенную поддержку передачи данныхъ въ Minecraft, добавленную въ Java Edition 1.20.5. Убѣдитесь, что ваша версія Raknetify2 поддерживаетъ нужную версію Minecraft и загрузчикъ на обоихъ концахъ.

Установите Raknetify2 на салонѣ отправки и кліентѣ. Пунктъ назначенія долженъ имѣть совмѣстимый слушатель RakNet и принимать входящіе транзакціи Minecraft.

Эта конфигурація примѣнима къ трансферамъ, отправляемымъ тремя вышеупомянутыми модами-загрузчиками. Плагины Spigot/Paper, Velocity и BungeeCord не читаютъ этот файлъ трансферовъ.

Настройка салона отправки

Создайте файлъ config/raknetify2-transfers.json въ директоріи салона отправки:

{
  "destinations": [
    {
      "host": "play.example.com",
      "tcpPort": 25565,
      "udpPort": 25570
    }
  ]
}

Замѣните примѣрное имя хоста и порты на значенія, соотвѣтствующіе вашему пункту назначенія, затѣмъ перезапустите салонъ отправки. Другіе пункты назначенія также должны быть добавлены въ тотъ же массивъ.

Поле Значеніе
host Имя хоста или IP-адресъ пункта назначенія, безъ префикса транспортировки и порта.
tcpPort Портъ назначенія въ оригинальномъ запросѣ передачи данныхъ
udpPort Публичный портъ RakNet, съ которымъ связывается кліентъ, долженъ обращаться

Номера портовъ TCP и UDP могутъ быть одинаковыми. Если маршрутизаторъ переводитъ UDP-портъ, используйте общепринятый портъ, указанный въ этомъ файлѣ. Номера портовъ записываются въ форматѣ JSON-чиселъ.

Отправляйте транзакціи на обычное имя хоста и TCP-портъ получателя. Raknetify2 провѣряетъ, поддерживаетъ ли кліентъ функцію автоматическаго транзита. Для кліента, способнаго къ работѣ, и соответствующего получателя Raknetify2 выбираетъ настроенный UDP-портъ. Другіе кліенты и несоотвѣтствующіе получатели сохраняютъ исходный адресъ транзда.

При использованіи даннаго метода сопоставляются имя хоста и TCP-портъ изъ запроса передачи данныхъ. Имя хоста выражается съ заглавной буквой, послѣдняя точка DNS и правильное написаніе IPv6 приводятся въ соотвѣтствіи съ стандартами. Поискъ по DNS не участвуетъ въ процессѣ сопоставленія, поэтому два разныхъ имени хоста, приводящихся къ одному адресу, требуютъ отдѣльныхъ записей. Спецификаціи типа «wildcard» не поддерживаются.

Настройка пунктовъ назначенія

Для пункта назначенія, использующего server.properties Minecraft, установите accepts-transfers=true и перезапустите его. Прокси-салонъ пункта назначенія можетъ имѣть собственные настройки передачи. По умолчанію Minecraft отклоняетъ входящіе передачи, даже если обычное прямое присоединеніе работаетъ корректно.

Устройство пріёма сигналовъ RakNet на сторонѣ получателя, публичный переключатель UDP и файрволъ хоста должны быть уже настроены. Файлъ передачи отправляющего салона выбираетъ адресъ, къ которому отправляется данные кліенту.

Провѣрьте маршруты IPv4 и IPv6 у получателя, когда его хостъ-имя поддерживаетъ оба типа адресовъ. Передъ изученіемъ поведенія автоматической передачи провѣрьте обычное прямое соединеніе по RakNet съ получателемъ.

Сохраняйте всѣ провѣрки учётныхъ записей и доступа къ салону. Эта конфигурація не предоставляетъ игрокамъ доступъ къ салону и не замѣняетъ процедуру аутентификаціи.

Ошибки конфигураціи и отключеніе

Отсутствіе полей, неизвѣстные поля, недѣйствительные порты и дублирующіеся пункты назначенія вызываютъ ошибку конфигураціи при иниціализаціи. Используйте журналъ салона для выявленія ошибки, исправленія JSON-файла и перезапуска салона.

Чтобы отключить автоматическій выборъ адреса, удалите соотвѣтствующій файлъ конфигураціи или использовать параметръ {"destinations": []}. Затѣмъ перезапустите салонъ отправки. ВЪ этомъ случаѣ запросы на передачу данныхъ будутъ сохранять свои исходные адреса.

Пересылка данныхъ по UDP и протоколъ PROXY

Прокси-салонъ UDP можетъ пересылать трафикъ RakNet и сохранять оригинальный адресъ кліента съ использованіемъ протокола PROXY v2. Установите эту функцію, когда upstream UDP-прокси отправляетъ эти заголовки въ вашъ слушатель. Обычное переключеніе порта роутера не требуетъ этого.

На салонѣ или на Minecraft-прокси, получающемъ пересыланный UDP-трафикъ, создайте файлъ config/raknetify2-proxy-protocol.json:

{
  "trustedProxies": ["192.0.2.10"]
}

Замѣните приведённый примѣръ на фактическій исходный IP-адресъ UDP-прокси или на діапазонъ CIDR, надъ которымъ вы имѣете контроль. Адресъ долженъ соотвѣтствовать тому, что видитъ принимающій салонъ послѣ любыхъ преобразованій NAT. Принимаются литералы IPv4 и IPv6. Имена хостовъ по DNS отклоняются. Необходимо перезапустить принимающій салонъ или прокси.

Настройте прокси-салонъ для пересылки заголовковъ протокола PROXY v2 для UDP. Raknetify2 принимаетъ только адреса кліентовъ, пересыланные изъ перечисленныхъ источниковъ. Прямые соединенія черезъ RakNet безъ этихъ заголовковъ отклоняются при активаціи этой конфигураціи. Слушатель TCP сохраняетъ свою существующую конфигурацію.

Довѣріе и доступъ

Каждому прокси изъ списка разрѣшено передавать адресъ кліента. Настройте межсѣтевой экранъ внутренняго салона такъ, чтобы къ его UDP-порту могъ обращаться только указанный прокси. Ограничьте довѣренные діапазоны адресами, которые дѣйствительно нужны въ вашей сѣти.

Файлъ долженъ содержать только элементы типа trustedProxies, не менѣе одного элемента. Пустой массивъ считается ошибкой. Недѣйствительный файлъ не позволяетъ RakNet-слушателю запуститься.

Чтобы вернуться къ прямымъ UDP-связямъ, удалите файлъ и перезапустите слушатель. Одновременно обновите поведеніе пересылки данныхъ вверхъ и правила файрволла для новаго маршрута.

Если соединенія не устанавливаются послѣ включенія этой функціи, провѣрьте фактическій исходный адресъ прокси на салонѣ, настроенный діапазонъ довѣрія и то, выпускаетъ ли прокси заголовки протокола UDP PROXY версіи 2.

Для установки прокси въ Minecraft и конфигураціи бэкенда слѣдуйте инструкціямъ по Velocity и BungeeCord.

Simple Voice Chat

Raknetify2 можетъ дѣлиться своимъ салоннымъ слушателемъ UDP съ Simple Voice Chat на платформахъ Fabric, Forge, NeoForge, Spigot и Paper.

Установите Simple Voice Chat на салонѣ и на каждомъ кліентѣ, который желаетъ использовать голосовой чатъ. Для остальной конфигураціи слѣдуйте руководству по настройкамъ салона.

Используйте директорію config верхняго уровня салона для файловъ Raknetify2, включая файлы, созданные съ использованіемъ Spigot/Paper. Самъ файлъ Simple Voice Chat остаётся въ специфичномъ для платформы мѣстѣ.

Подѣлитесь портомъ игрового процесса.

  1. Создать файлъ config/raknetify2-voicechat.json въ директоріи салона съ такимъ содержимымъ:

    {"enabled": true}
  2. Установите port=-1 въ конфигураціи салона Simple Voice Chat. На модифицированныхъ салонахъ это файлъ config/voicechat/voicechat-server.properties. На салонахъ Spigot/Paper – plugins/voicechat/voicechat-server.properties.

  3. Оставьте bind_address пустымъ, если уже существуетъ подходящій слушатель RakNet. Если салонъ имѣетъ нѣсколько слушателей на этомъ UDP-порту, установите значеніе на локальный адресъ слушателя, который вы хотите подѣлиться.

  4. Перезапустите салонъ и запустите программу /voicechat test <PLAYERNAME> для игрока, который находится въ сѣти.

Если слушатель RakNet используетъ другой портъ, чѣмъ Minecraft, установите параметръ port на этот локальный UDP-портъ, а не используйте -1. Напримѣръ, слушатель RakNet на локальномъ UDP-порту 25570 долженъ имѣть параметръ port=25570.

Настройте значеніе voice_host, если кліенты нуждаются въ другомъ публичномъ адресѣ или порту. Для маршрутизатора, который передаётъ публичный UDP-трафикъ изъ 25580 на локальный UDP-трафикъ изъ 25570, используйте значенія port=25570 и voice_host=play.example.com:25580. Публичный адресъ указывается въ voice_host. Настройка bind_address позволяетъ выбрать локальнаго слушателя.

Raknetify2 предоставляетъ общій UDP сокетъ черезъ API Simple Voice Chat. Simple Voice Chat обрабатываетъ аутентификацію и шифрованіе голосовыхъ сообщеній. Игроки могутъ использовать голосовой чатъ какъ съ TCP, такъ и съ RakNet-соединеніями.

Другіе сервисы UDP и прокси-салоны

Выдѣлите Query и Geyser отдѣльные порты UDP. Общій сокетъ поддерживается только для Simple Voice Chat.

На Velocity и BungeeCord эта интеграція не позволяетъ использовать общій сокетъ голосового прокси. Слѣдуйте инструкціи Simple Voice Chat по настройкѣ прокси и выдѣлите голосовому прокси отдѣльный портъ UDP. При использованіи офиціального плагина голосового прокси укажите публичный адресъ въ voice_host въ конфигураціи голосовой связи самаго прокси. Плагинъ игнорируетъ значеніе voice_host на внутреннихъ салонахъ.

Для общей UDP тунельной сѣти установите voice_host на публичное хостовое имя и UDP-портъ, который пересылаетъ данные на этот салонъ.

Отключите размноженіе данныхъ или устраните конфликтъ сокета.

Если въ логахъ указанъ No RakNet listener matches the voice bind address and port, подтвердите, что RakNet запущенъ успѣшно, а также что портъ для передачи голосовъ и адресъ связи соотвѣтствуютъ параметрамъ локальнаго слушателя.

Если въ результатѣ провѣрки указанъ Multiple RakNet listeners match the voice bind address, необходимо выбрать соотвѣтствующую локальную адресу изъ bind_address и перезапустить процедуру.

Только одинъ плагинъ Simple Voice Chat можетъ предоставлять свой сокетъ UDP. Если при запускѣ системы отображается, что другой плагинъ уже предоставляетъ сокетъ, выберите, какую интеграцію сокета использовать.

Чтобы отключить интеграцію Raknetify2, нужно измѣнить значеніе {"enabled": false} въ конфигураціи салона или удалить этот файлъ. Дайте отдѣльный UDP-портъ сервису Simple Voice Chat, обновите правила брандмауэра и регулировки пересылки данныхъ, а затѣмъ перезапустите салонъ.

Устраненіе неполадокъ

TCP работаетъ, но RakNet истощаетъ время ожиданія.

Провѣряйте ихъ въ слѣдующемъ порядкѣ:

  1. Кліентъ имѣетъ правильную модификацію Raknetify2 для своего загрузчика и версіи Minecraft.
  2. Салонъ или прокси-салонъ, принимающій соединеніе, имѣетъ установленную и запущенную версію Raknetify2 безъ ошибокъ въ работѣ слушателей.
  3. Адресъ начинается съ raknet; и используетъ общественный UDP-портъ.
  4. Хостингъ-провайдеръ, роутеръ и файрволъ хоста разрѣшаютъ использованіе UDP на этомъ портѣ.
  5. Адреса хоста по IPv4 и IPv6 приводятъ къ нужному хосту, и у нихъ работаютъ правила брандмауэра.

Успѣшная TCP-связь подтверждаетъ только TCP-маршрутъ. Слѣдуйте процедурѣ настройки брандмауера и роутера, чтобы провѣрить пересылку UDP и доступъ къ IPv6. Если протоколъ PROXY активированъ, кліенты должны достигать слушателя черезъ настроенный довѣренный прокси.

Адресъ уже используется.

Провѣрьте, нѣтъ ли другого процесса, использующего UDP-портъ. Сервис Geyser и другіе UDP-сервисы нуждаются въ своихъ собственныхъ портахъ. Сервис Simple Voice Chat можетъ использовать интеграцію черезъ общій портъ.

Вы можете выбрать другой локальный UDP-портъ съ помощью настроекъ просеивателя салона напрямую или настроекъ Velocity и BungeeCord. Уточните требованія къ версіи для настроекъ Spigot/Paper. Измѣненіе только публичнаго порта маршрутизатора можетъ привести къ конфликту локальнаго сокета.

Соединеніе работаетъ, но передача данныхъ не происходитъ.

Прикрѣпитесь напрямую къ пункту назначенія, используя его адресъ raknet;. Если это не сработаетъ, сначала исправьте устройство пріёма сигналовъ пункта назначенія или маршрутъ сѣти.

Если прямые соединенія работаютъ, провѣрьте, принимаетъ ли получатель входящіе трансферы. Салонъ Minecraft, использующій файлъ server.properties, долженъ имѣть параметръ accepts-transfers=true. Прямое присоединеніе не провѣряетъ этот параметръ.

Затѣмъ сравните имя хоста и TCP-портъ передачи съ файломъ config/raknetify2-transfers.json на салонѣ отправителя. Убѣдитесь, что файлъ былъ загруженъ послѣ перезапуска и что кліентъ поддерживаетъ автоматическіе передачи по RakNet. См. Автоматическіе передачи.

Ошибки въ шифрованіи или протоколѣ

Провѣрьте версіи Raknetify2 на обоихъ концахъ соединенія. Обновляйте кліентъ и салонъ или прокси одновременно, когда выпускъ измѣняетъ зашифрованный протоколъ. Сохраняйте настройки аутентификаціи салона при расследованіи.

Ошибки, связанные съ модомъ

Укажите действие, вызывающее сбой: открытіе инвентаря, полученіе ресурсного пакета, измѣненіе міровъ или созданіе энтитета. Сравните то же самое действие черезъ TCP и RakNet съ использованіемъ отдѣльной тестовой установки, если это возможно.

Нѣкоторые пользовательскіе полезные модули зависятъ отъ порядка ванильныхъ пакетовъ. Авторы модовъ могутъ указать эти зависимости черезъ интерфейсъ порядка пакетовъ.

Присылать жалобу на ошибку

Откройте вопросъ въ тракеръ проблемъ Raknetify2 и включите:

  • Версіи Minecraft, Java, loader и Raknetify2 съ обѣихъ сторонъ.
  • Версіи салоннаго и прокси-программнаго обеспеченія, включая любые прокси-сервисы для пересылки UDP.
  • Другіе установленные моды и ихъ версіи.
  • Шаги для возникновенія проблемы и ожидаемое поведеніе.
  • Подходятъ ли тѣ же шаги для использованія черезъ TCP.
  • Выдержки изъ логовъ кліентовъ, салоновъ и прокси-салона, полученные въ ходѣ одного и того же запуска.

Передъ загрузкой логовъ удалите токены доступа, пароли и другую личную информацію. Сохраните сообщенія объ исключеніяхъ и слѣды стека, необходимые для діагностики проблемъ.

Интеграція модовъ

Raknetify2 позволяетъ модераторамъ указывать, какой трафикъ въ Minecraft долженъ оставаться упорядоченнымъ съ использованіемъ ихъ собственныхъ пакетовъ данныхъ. Это необходимо при обработкѣ пакетовъ, требующихъ обращенія къ существующимъ существамъ, кускамъ міра, инвентаріи или другимъ состояніямъ, установленнымъ ранѣе.

Созданіе группъ для работы въ сѣти

Группа Связанный трафикъ
ui Меню и взаимодѣйствія, не зависящіе отъ міра
entity Созданіе, удаленіе и перемѣщеніе существъ
world_interaction Инвентарные запасы и другіе взаимодѣйствія, зависящіе отъ окружающей среды
effects Звуки и частицы
chunk Обновленія рельефа, блоковъ и освѣщенія

Всѣ группы обеспечиваютъ надёжную и упорядоченную доставку пакетовъ въ своихъ каналахъ. Пакеты изъ разныхъ группъ могутъ приходить въ необычномъ относительномъ порядкѣ. Выберите группу, соотвѣтствующую зависимости полезной нагрузки.

Необязательная интеграція съ Fabric

Добавьте провайдеръ подъ элементомъ raknetify:packet_channels въ файлѣ fabric.mod.json вашего модуля. Провайдеръ реализуетъ интерфейсъ Consumer<BiConsumer<String, String>> съ использованіемъ типовъ JDK. Онъ принимаетъ регистратора, который имѣетъ перемѣнный типъ для идентификатора пакета и группу порядка передачи данныхъ.

Присоедините это значеніе къ вашимъ существующимъ метаданнымъ, замѣняя названіе класса на полное именованіе вашего провайдера:

{
  "entrypoints": {
    "raknetify:packet_channels": [
      "com.example.mod.OrderingProvider"
    ]
  }
}

Сохраните остальную часть файла fabric.mod.json, включая существующіе записи. Это фрагментъ метаданныхъ файла.

Напримѣръ, расширеніе для управленія движеніемъ сущностей можетъ зарегистрировать example:entity_path въ группѣ entity. ВЪ документаціи API PacketOrdering приведена реализація этого расширенія.

Fabric не вызываетъ этот входной пунктъ, когда Raknetify2 отсутствуетъ. Провайдеры должны объявлять идентификаторы и группы во время иниціализаціи, не полагаясь на то, что другой модъ завершилъ свою иниціализацію.

Поведеніе регистраціи

Моды Forge и NeoForge, а также плагины салона или прокси могутъ вызвать методъ PacketOrdering.register(identifier, group) во время иниціализаціи, когда Raknetify2 доступенъ. Классъ для этого – com.ishland.raknetify.api.PacketOrdering. Регистрируйте модификаторы передъ пріёмомъ подключеній игроковъ, чтобы избѣжать загрузки классовъ Raknetify2, если зависимость отъ нихъ отсутствуетъ.

Объявленія примѣняются къ новымъ соединеніямъ. Существующіе соединенія сохраняютъ правила, установленные при ихъ созданіи. Допускается повторное объявленіе одного и того же параметра. Конфликтные группы для одного и того же идентификатора отклоняются.

Идентификаторы груза должны использовать дѣйствительный пользовательскій пространство имёнъ. Пространство имёнъ minecraft зарезервировано. Максимальное количество идентификаторовъ на одномъ конечномъ пунктѣ составляетъ 128, включая встроенные правила и регистраціи отъ другихъ модовъ. Идентификаторы могутъ содержать до 255 символовъ ASCII, используя синтаксисъ именованій идентификаторовъ API.

Обновлённые піонеры RakNet обмѣниваются деклараціями во время установленія соединенія. Салонъ или прокси можетъ использовать декларацію піонера, если у него нѣтъ локальныхъ правилъ для даннаго пакета данныхъ. Локальные правила имѣютъ пріоритетъ, и деклараціи піонера ограничены даннымъ соединеніемъ.

Прокси-салоны UDP

См. Пересылка UDP и протоколъ PROXY для информаціи о UDP-реле и пересылаемыхъ адресахъ кліентовъ.

Для настройки прокси въ Minecraft см. Velocity и BungeeCord.

English (US)

Clone this wiki locally