
wsmc
Активный0.0
Установок
Последнее обновление
WSMC
Добавляет поддержку WebSocket для Minecraft Java Edition. Большинство провайдеров CDN (особенно в бесплатных тарифах) не поддерживают проксирование обычного TCP-трафика. Благодаря этому моду владельцы серверов могут скрыть свой сервер за CDN и разрешить игрокам подключаться через WebSocket, что обеспечивает защиту от DDoS-атак.
Совместимость: Minecraft 1.20.2, Forge и Fabric. Мод работает автономно и не требует дополнительных зависимостей.
Функциональность на сервере
- Сервер позволяет игрокам подключаться через WebSocket
- Сохраняется возможность подключения через стандартный TCP-протокол
- Обработка TCP и WebSocket соединений осуществляется через один порт
- Игроки без этого мода на клиенте могут подключаться к серверу через обычный TCP
- Сервер может получать статистику клиентов (например, реальный IP-адрес) из WebSocket handshake
Функциональность на клиенте
- Клиент может подключаться к серверам с поддержкой WebSocket используя URI вида
ws://hostname.com:port/path_to_minecraft_endpoint
- Сохраняется возможность подключения к любым серверам через стандартный TCP с использованием обычного синтаксиса
hostname_or_ip:port
Важные особенности
- Мод не влияет на игровой процесс
- Не изменяет пользовательский интерфейс
- Обычные клиенты могут подключаться к вашему серверу даже при установленном моде (другие моды могут ограничивать эту возможность)
- Установка мода на клиенте не мешает подключению к обычным или модифицированным серверам
- Сервер может получать реальные IP-адреса игроков, подключившихся через CDN-проксированный WebSocket
- Совместим с другими TCP-WebSocket прокси, такими как websocat
Настройка
Конфигурация мода передается через системные свойства JVM с использованием параметра -D
в командной строке.
Ключ свойства | Тип | Назначение | Сторона | По умолчанию | Пример |
---|---|---|---|---|---|
wsmc.disableVanillaTCP | boolean | Отключить стандартный TCP вход и статус сервера | Сервер | false | true |
wsmc.wsmcEndpoint | string | Установить WebSocket Endpoint для входа в Minecraft и статуса сервера. Если свойство не установлено, клиент может подключиться через ЛЮБОЙ WebSocket Endpoint. Должно начинаться с /, регистрозависимо | Сервер | Не установлено | /mc |
wsmc.debug | boolean | Показывать отладочные логи | Сервер/Клиент | false | true |
wsmc.dumpBytes | boolean | Сохранять сырые WebSocket бинарные фреймы. Работает только если wsmc.debug установлен в true |
Сервер/Клиент | false | true |
Для разработчиков
На стороне сервера, если клиент подключается через WebSocket, его handshake запрос доступен через стандартный класс net.minecraft.network.Connection
. Для получения этой информации приведите экземпляр Connection к IConnectionEx, затем вызовите IConnectionEx.getWsHandshakeRequest()
.
Это полезно для получения информации об исходном запросе, если сервер Minecraft находится за обратным прокси (например, CDN). Например, заголовки X-Forwarded-For
и CF-IPCountry
указывают IP-адрес клиента и код страны соответственно.