
ProtocolExtension - Расширение Протокола
ProtocolExtension - это проект для Майнкрафт, который добавляет кастомные пакеты для расширения возможностей сервера. Позволяет управлять HUD игрока, отслеживать ввод и менять настройки клиента.
ProtocolExtension - это уникальный проект для Майнкрафт, который расширяет возможности сервера за счет добавления новых пакетов данных. Обычно сервер сильно ограничен в том, что он может сказать клиенту сделать. Этот инструмент ломает эти рамки, позволяя админам и разработчикам тонко управлять интерфейсом (HUD) игроков, отслеживать нажатия клавиш, менять заголовок окна игры и многое другое. Если вы собираете сервер на BungeeHost (https://bungee.host) и хотите добавить глубокие кастомные механики - это то, что вам нужно.
Установка и настройка
Тут есть важный нюанс. ProtocolExtension работает как плагин на стороне сервера (Paper и его форки) и как мод на стороне клиента (Fabric). Один JAR-файл подходит и для сервера, и для клиента.
Для установки на сервер:
- Скачайте последний JAR-файл ProtocolExtension.
- Скачайте PacketEvents - он является обязательной зависимостью.
- Закиньте оба файла в папку
pluginsна вашем сервере.
Важно: чтобы все фишки работали, игрокам тоже нужно установить ProtocolExtension как мод для Minecraft. Клиентских зависимостей у него нет, так что ставить будет легко. Если хотите, можете написать плагин, который будет кикать игроков без этого мода, но это уже по желанию. На BungeeHost (https://bungee.host) плагин устанавливается в пару кликов.
Старые версии мода не поддерживаются. Если вам нужен порт под старую версию Minecraft, просите об этом в Issues на GitHub - если код не сильно отличается, автор может и сделает.
Список пакетов
Проект добавляет набор кастомных пакетов, которые работают поверх стандартного протокола Minecraft. Вот что они делают:
Входящие (Serverbound) - от клиента к серверу:
Activate(внутренний) - отправляется первым, чтобы уведомить сервер о поддержке ProtocolExtension.KeyPressedC2S- срабатывает, когда игрок жмет неспециальную клавишу в игре.MouseMoveC2S- отслеживает движение мыши в каком-то меню или на экране.ChatOpenedC2SPayload- клиент открыл чат.ChatClosedC2SPayload- клиент закрыл чат.
Исходящие (Clientbound) - от сервера к клиенту:
Activate(внутренний) - ответ сервера, что он тоже поддерживает мод.ToggleHUDS2C- сервер "жмет" F1 за клиента, скрывая интерфейс.HUDPutElementS2C- добавляет текстовый элемент на HUD с заданным ID, позицией и текстом. Короче, можно рисовать кастомный интерфейс прямо на экране игрока.HUDDeleteElementS2C- удаляет конкретный элемент по ID.HUDClearS2C- очищает весь HUD от кастомных элементов.HUDSettingHotbarS2C- включает/выключает видимость хотбара.MoveToggleS2C- включает или выключает тикирование движения в логике клиента. Полезно для создания катсцен или заморозки игрока.ServerCommandS2C- серверно устанавливает режим приседания или бега для игрока.SetWindowTitleS2C- добавляет текст в заголовок окна игры. Представьте, что сервер может написать название проекта прямо в шапке окна.SetPerspectiveS2C- меняет перспективу камеры игрока (от первого лица к третьему и наоборот).ToggleRenderingS2C- включает/выключает рендеринг игры для клиента.ClearChatS2CPayload- полностью очищает чат игрока.
Безопасность
Автор подошел к делу серьезно. Сервер не может:
- Выполнять произвольный код на вашем клиенте.
- Логировать состояние клавиатуры или мыши, когда вы не в игре.
- Читать любые элементы HUD, которые не были созданы этим сервером.
Все элементы интерфейса, которые сервер добавил на ваш экран, автоматически удаляются, когда вы выходите с сервера. Так что ваш клиент не засоряется.
Для разработчиков
У ProtocolExtension есть свой API для отправки кастомных пакетов клиентам. Это полезно, если вы пишете свой плагин и хотите взаимодействовать с клиентом напрямую. Чтобы использовать API, нужно добавить JAR-файл в ваш build.gradle или pom.xml как compile-only. Документация скоро должна появиться.
Проект использует стандартные CustomPayload пакеты для передачи данных.
Важный нюанс
Так как проект требует Fabric на стороне клиента, вам придется либо просить игроков скачать его вручную, либо использовать плагины для принудительной проверки. Для мини-игр и кастомных режимов, где нужен жесткий контроль над интерфейсом - это мастхэв. Но для обычного выживания он может быть избыточен. Скачайте ProtocolExtension, если хотите выйти за рамки ванильного протокола и дать своим игрокам новый опыт.
Сервер для плагина ProtocolExtension - Расширение Протокола - как у профи
Плагин ProtocolExtension - Расширение Протокола создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином ProtocolExtension - Расширение Протокола для друзей можно за пару минут - BungeeHost всё уже подготовил.
