Перейти к содержимому

Proxy Compatible Forge

Этот мод приносит на серверы Neo/Forge современный режим пересылки данных игрока от Velocity, Lucko's BungeeGuard и устаревший режим от BungeeCord

от adde0109· p0t4t0sandwich, wolflord212312УправлениеУтилиты
NeoForgeForge
Загрузчики
NeoForgeForge
Скачиваний на Modrinth
72,9 тыс.
Подписчиков на Modrinth
69
версии
24
Обновлён
31 августа 202631 авг.
Опубликован
в 2023

Коротко о моде

Работает на NeoForge и Forge
Для Minecraft 1.7.2–26.2
Ставится только на сервер; игрокам ставить не нужно
Последняя версия — 1.3.1 от 31 августа 2026
Лицензия LGPL-2.1-or-later — бесплатно
Где нужен
В игрене нуженНа сервереобязателен

Ставится только на сервер; игрокам ставить не нужно

Версии игры1.7.2–26.2
Описание переведено автоматическиПоказать оригинал (EN)

Proxy Compatible Forge

Github Github Issues Discord

Github Releases Modrinth

Особая благодарность FabricProxy-Lite и CrossStitch за то, что они проложили путь в мире модифицированных прокси. Мы проделали свою долю работы по портированию и адаптации всего этого под среду Neo/Forge, но тем не менее мы стоим на плечах гигантов.

Этот мод приносит на серверы Neo/Forge современный режим передачи информации об игроке от Velocity, BungeeGuard от Lucko и устаревшие режимы передачи информации об игроке от BungeeCord.

Поддерживаемые версии/платформы

  • Forge версии 1.7.2 - 26.2

    • На Forge 1.14 - 1.15.1 требуется MixinBootstrap
    • На Forge 1.13.x требуется ModernMixins
    • На Forge 1.8 - 1.12.2 требуется MixinBooter
    • На Forge 1.7.x требуется UniMixins
    • Для 1.7.2 - 1.12.2 также требуется модифицированный прокси Velocity
  • NeoForge версии 1.20.1 - 26.2
  • SpongeForge/SpongeNeo

    • PCF, скорее всего, не понадобится, так как Sponge поддерживает устаревший и современный режимы передачи информации, а также оборачивание аргументов команд
    • Однако если установлен Forgified Fabric API (в частности fabric_networking_api_v1), возможно, вам придётся использовать PCF и отключить передачу информации в Sponge
  • Гибридные серверы Bukkit+Neo/Forge

    • По возможности используйте встроенную поддержку передачи информации гибрида, иначе используйте PCF, если их реализация несовместима

Подробнее о поддерживаемых платформах и модпаках смотрите на странице Совместимость.

С чего начать

Примечание о Forge 1.13 - 1.20.1

Если вы хотите разместить современный сервер Forge (1.13 - 1.20.1) за прокси Velocity, обратите внимание на Ambassador: https://modrinth.com/plugin/ambassador

Примечание: версия Ambassador 1.2.0-beta и выше больше не требует этот мод, но вы всё ещё можете использовать его, если хотите современную передачу информации.

Установка

Далее предполагается, что вы уже настроили прокси Velocity и у вас есть рабочая конфигурация.

  1. Скачайте этот мод и поместите его в папку mods вашего сервера Neo/Forge (Jar-файлы можно найти на Modrinth или во вкладке релизов).
  2. Запустите сервер Neo/Forge, чтобы сгенерировать файл конфигурации по умолчанию.
  3. Остановите сервер Neo/Forge.
  4. Откройте proxy-compatible-forge.toml в папке config и впишите ваш секрет передачи информации в поле конфигурации forwarding.secret.
  5. В server.properties убедитесь, что online-mode установлен в false.
  6. Теперь вы готовы запустить сервер и подключиться к нему через Velocity!

Конфигурация

Конфиг находится в config/proxy-compatible-forge.toml и имеет следующие опции:

Группа настроекНазвание настройкиЗначение по умолчаниюОписание
forwardingenabledtrueВключает или отключает пересылку информации об игроке. Изменение этой настройки требует перезапуска сервера.
forwardingmode"MODERN"Тип используемой пересылки.
forwardingsecret""Секрет, используемый для проверки того, что подключение игрока идёт от доверенного прокси.
forwardingapprovedProxyHosts[]Список разрешённых имён хостов или IP-адресов прокси. Если имя хоста или IP подключающегося прокси отсутствует в этом списке, игрок будет отключён. Оставьте пустым, чтобы разрешить все.
crossStitchenabledtrueВключает или отключает поддержку CrossStitch. Изменение этой настройки требует перезапуска сервера.
crossStitchforceWrappedArguments[]Добавьте сюда любые несовместимые типы аргументов команд из модов или ванильной игры.
crossStitchforceWrapVanillaArgumentsfalseПринудительно оборачивать типы аргументов ванильных команд. Полезно, когда предыдущая настройка становится слишком громоздкой.
debugenabledfalseВключает или отключает отладочное логирование.
debugdisabledMixins[]Список миксинов для отключения. Используйте имя миксина с префиксом в виде частичного или полного имени пакета.
advancedmodernForwardingVersion"NO_OVERRIDE"Переопределяет версию modern forwarding, выбранную PCF. Измените на "MODERN_DEFAULT", если столкнётесь с проблемами подписи чата. Изменение этой настройки требует перезапуска сервера.

Возможности

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

Как упоминалось выше, PCF реализует протокол пересылки MODERN от Velocity, позволяя защитить модифицированные серверы за прокси.

Поддерживаются версии Modern Forwarding с 1 по 4:

НазваниеЗначениеПоддерживаемые версии MC
MODERN_DEFAULT1Любые
MODERN_FORWARDING_WITH_KEY21.19
MODERN_FORWARDING_WITH_KEY_V231.19.1 - 1.19.2
MODERN_LAZY_SESSION41.19.3 и выше

Если у вас возникли проблемы совместимости с подписью чата, сообщите о проблеме, затем измените advanced.modernForwardingVersion на MODERN_DEFAULT в конфиге PCF.

Далее, пересылка BUNGEEGUARD требует либо использовать режим пересылки BUNGEEGUARD в Velocity, либо использовать BungeeCord с установленным плагином BungeeGuard.

Наконец, пересылка LEGACY требует использовать режим пересылки LEGACY в Velocity или BungeeCord с включённой пересылкой IP. Не рекомендуется использовать этот режим пересылки, но вы можете использовать настройку forwarding.approvedProxyHosts, чтобы хоть как-то обезопасить всё.

Обёртка аргументов модифицированных команд, она же CrossStitch

Это решает такие ошибки, как:

io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommandsPacket

PCF переносит возможность этого Fabric-мода оборачивать аргументы модифицированных команд, позволяя отправлять их через Velocity без необходимости иметь кастомный десериализатор пакетов для каждого аргумента команды, добавляемого модами. Учтите, что BungeeCord не поддерживает обёрнутые аргументы команд, так что вам, скорее всего, придётся отключить эту функцию, если вы используете (или запускаете форк) BungeeCord.

В некоторых редких случаях моды регистрируют свои аргументы команд в пространстве имён minecraft или вносят изменения в ванильные аргументы, обходя обёртку аргументов PCF. В таких случаях вы можете добавить ID кастомного аргумента в настройку crossStitch.forceWrappedArguments в PCF, чтобы заставить PCF обернуть аргумент.

В ситуациях, когда моды внедряют и регистрируют свои аргументы раньше Vanilla, смещая все значения ID аргументов, вы можете включить настройку crossStitch.forceWrapVanillaArguments, чтобы принудительно обернуть пространства имён minecraft и brigadier. Это скорее временное решение, так как смещённые ID аргументов не могут быть прочитаны Velocity, и если ID аргументов на клиенте имеют то же смещение, команды Velocity не могут быть прочитаны клиентом, что полностью блокирует подключения, если вы не отключите все команды на прокси через права или не удалите плагины, добавляющие команды.

Самый простой способ понять, происходит ли это, — включить в конфиге отладочное логирование PCF и проверить, есть ли у brigadier:boolean ID аргумента, отличный от 0.

Обычное решение этой проблемы — мод должен переместить свой миксин регистрации в RETURN и убедиться, что при регистрации его аргумента в качестве пространства имён указан его modid.

Если вы найдёте какие-либо дикие аргументы, пожалуйста, откройте issue, чтобы мы могли добавить их в конфиг по умолчанию или использовать предоставленную информацию для написания PR для мода, вызывающего проблему.

Частые проблемы

Слишком много каналов

Ошибка клиента:

Invalid payload REGISTER!

Velocity:

Решение для Velocity: добавьте -Dvelocity.max-known-packs=# в аргументы запуска Velocity, где # — это число, равное 64 + количество-модов*1.5 (округлить вверх).

Например: для 40 модов используйте 64 + 40*1.5 = 124, то есть -Dvelocity.max-known-packs=124

Ошибка Paper-сервера:

[00:00:00 ERROR]: Couldn't register custom payload
java.lang.IllegalStateException: Cannot register channel 'modid:channel'. Too many channels registered!

Решение для Paper: добавьте -Dpaper.disableChannelLimit=true в аргументы запуска Paper-сервера

Примечания: Из-за количества каналов и модов текстуры/предметы могут не совпадать на клиенте при подключении к ванильному серверу.

An internal server connection error occurred

Ошибка клиента:

An internal server connection error occurred.

Ошибка Velocity:

io.netty.handler.codec.CorruptedFrameException: Packet sent for class com.velocitypowered.proxy.protocol.packet.PluginMessagePacket was too big (expected 1234567 bytes, got 7654321 bytes)

Решается на стороне Velocity путём добавления -Dvelocity.max-plugin-message-payload-size=####### в аргументы запуска Velocity, где ####### — число чуть больше последнего числа "got ####### bytes" в сообщении об ошибке. Повторяй, пока твой клиент не сможет войти.

Сборка проекта

  1. Клонируй репозиторий. git clone https://github.com/adde0109/Proxy-Compatible-Forge.git

  2. Запусти ./gradlew build (gradlew.exe build на Windows) в корневой директории проекта

  3. Jar-файл будет в build/libs/

Частые вопросы

Как установить Proxy Compatible Forge?

Установите NeoForge под свою версию Minecraft, скачайте Proxy Compatible Forge под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Proxy Compatible Forge?

У Proxy Compatible Forge есть сборки для Minecraft 1.7.2–26.2.

Нужен ли Proxy Compatible Forge на сервере?

Ставится только на сервер; игрокам ставить не нужно

Лицензия и источник
GNU Lesser General Public License v2.1 or laterможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее