Proxy Compatible Forge
Этот мод приносит на серверы Neo/Forge современный режим пересылки данных игрока от Velocity, Lucko's BungeeGuard и устаревший режим от BungeeCord
- Загрузчики
- NeoForgeForge
- Скачиваний на Modrinth
- 72,9 тыс.
- Подписчиков на Modrinth
- 69
- версии
- 24
- Обновлён
- 31 августа 202631 авг.
- Опубликован
- в 2023
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
Proxy Compatible Forge
Особая благодарность 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 и у вас есть рабочая конфигурация.
- Скачайте этот мод и поместите его в папку
modsвашего сервера Neo/Forge (Jar-файлы можно найти на Modrinth или во вкладке релизов). - Запустите сервер Neo/Forge, чтобы сгенерировать файл конфигурации по умолчанию.
- Остановите сервер Neo/Forge.
- Откройте
proxy-compatible-forge.tomlв папкеconfigи впишите ваш секрет передачи информации в поле конфигурацииforwarding.secret. - В
server.propertiesубедитесь, чтоonline-modeустановлен вfalse. - Теперь вы готовы запустить сервер и подключиться к нему через Velocity!
Конфигурация
Конфиг находится в config/proxy-compatible-forge.toml и имеет следующие опции:
| Группа настроек | Название настройки | Значение по умолчанию | Описание |
|---|---|---|---|
forwarding | enabled | true | Включает или отключает пересылку информации об игроке. Изменение этой настройки требует перезапуска сервера. |
forwarding | mode | "MODERN" | Тип используемой пересылки. |
forwarding | secret | "" | Секрет, используемый для проверки того, что подключение игрока идёт от доверенного прокси. |
forwarding | approvedProxyHosts | [] | Список разрешённых имён хостов или IP-адресов прокси. Если имя хоста или IP подключающегося прокси отсутствует в этом списке, игрок будет отключён. Оставьте пустым, чтобы разрешить все. |
crossStitch | enabled | true | Включает или отключает поддержку CrossStitch. Изменение этой настройки требует перезапуска сервера. |
crossStitch | forceWrappedArguments | [] | Добавьте сюда любые несовместимые типы аргументов команд из модов или ванильной игры. |
crossStitch | forceWrapVanillaArguments | false | Принудительно оборачивать типы аргументов ванильных команд. Полезно, когда предыдущая настройка становится слишком громоздкой. |
debug | enabled | false | Включает или отключает отладочное логирование. |
debug | disabledMixins | [] | Список миксинов для отключения. Используйте имя миксина с префиксом в виде частичного или полного имени пакета. |
advanced | modernForwardingVersion | "NO_OVERRIDE" | Переопределяет версию modern forwarding, выбранную PCF. Измените на "MODERN_DEFAULT", если столкнётесь с проблемами подписи чата. Изменение этой настройки требует перезапуска сервера. |
Возможности
Пересылка информации об игроке
Как упоминалось выше, PCF реализует протокол пересылки MODERN от Velocity, позволяя защитить модифицированные серверы за прокси.
Поддерживаются версии Modern Forwarding с 1 по 4:
| Название | Значение | Поддерживаемые версии MC |
|---|---|---|
MODERN_DEFAULT | 1 | Любые |
MODERN_FORWARDING_WITH_KEY | 2 | 1.19 |
MODERN_FORWARDING_WITH_KEY_V2 | 3 | 1.19.1 - 1.19.2 |
MODERN_LAZY_SESSION | 4 | 1.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.AvailableCommandsPacketPCF переносит возможность этого 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" в сообщении об ошибке. Повторяй, пока твой клиент не сможет войти.
Сборка проекта
Клонируй репозиторий.
git clone https://github.com/adde0109/Proxy-Compatible-Forge.gitЗапусти
./gradlew build(gradlew.exe buildна Windows) в корневой директории проекта- 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 на сервере?
Ставится только на сервер; игрокам ставить не нужно