mcProxy — прокси с русской CAPTCHA и защитой входа
mcProxy от mcDev объединяет вход в сеть Minecraft, проверку нового игрока и переходы между серверами. Это самостоятельное ядро с API семейства BungeeCord: оно запускается отдельным процессом, а плагины прокси устанавливаются в его каталог plugins.Для владельца сети
Настройте адреса и порядок серверов в одном месте, сохраните собственный MOTD и подключите нужные плагины. Ограничения подключений, проверка пакетов и основная CAPTCHA работают до передачи игрока на backend. Русские комментарии объясняют параметры, а команды консоли помогают проверить состояние процесса.Для игроков
При первом входе появляется ровное поле 3×3 с чёрными и белыми плитками. Задание, подсказки, повторные попытки и сообщение об успехе написаны по-русски. Проверенный игрок после переподключения попадает на игровой сервер; результат проверки хранится в базе.Как проходит вход
- Игрок подключается к адресу вашей сети.
- Выбирает правой кнопкой мыши все плитки названного цвета и отправляет в чат «готово».
- После сообщения об успехе переподключается и попадает на доступный сервер из списка приоритетов.
- При необходимости переходит на другой разрешённый сервер командой /server.
Возможности
- Чёрно-белая CAPTCHA по умолчанию: ровная сетка 3×3, без поворотов и искажений. Дополнительные варианты проверки настраиваются отдельно.
- Ограничения частоты подключений и пакетов, размеров кадров и распаковки, проверка регистрации каналов plugin messaging.
- MOTD из настроек слушателя или плагина сети. Ответ списка серверов учитывает протокол подключающегося клиента.
- Маршруты, приоритеты и fallback. При обрыве связи или стандартной остановке backend игрок переводится на следующий доступный сервер.
- Встроенная H2 и подключение MySQL либо MariaDB. Списки адресов могут загружаться по HTTP(S) или из локального файла.
- Перенос поддерживаемых старых настроек и базы в каталог mcProxy с сохранением исходных файлов для восстановления.
Где пригодится
В сети с лобби и несколькими игровыми режимами mcProxy управляет входом и переходами. При обслуживании одного backend доступный резервный маршрут помогает сохранить соединение игрока. Обычные кики и баны не превращаются в переход на другой сервер; плагины могут обработать отключение через ServerKickEvent.Как это выглядит в игре
В галерее — настоящие игровые кадры этой версии: задание CAPTCHA, выбор плиток, успешная проверка, команды маршрутизации и поведение при недоступном сервере. Снимки показывают стандартные сообщения; оформление можно изменить в русской конфигурации.Команды и права
/server— список маршрутов;/server имя— переход. Право:bungeecord.command.server./glist— игроки по серверам. Право:bungeecord.command.list.- В консоли:
mcproxy doctor— диагностика,mcproxy dump— локальный диагностический отчёт,end— штатная остановка.
Совместимость и зависимости
Диапазон протоколов Minecraft Java: 1.8–26.3. Прокси запускается на Java 21 или 25. Вход, переподключение, команды, переходы и отказ backend проверены клиентами 1.8, 1.12.2, 1.16.5, 1.21.11, 26.2 и 26.3.Проверенная связка backend: Paper 1.21.11 build 131, ViaVersion 5.12.0 и ViaBackwards 5.12.0; для 1.8 дополнительно ViaRewind 4.1.3. Трансляторы устанавливаются на backend. Для иных сочетаний подберите версии трансляторов и плагинов под вашу сеть. Требование Java для самого клиента определяется его версией; клиент 26.3 использует Java 25.
Установка и состав покупки
- Распакуйте mcProxy 1.1.0 в отдельный каталог. В основном ZIP находятся ядро, персональный ключ, инструкция, уведомления о сторонних библиотеках и все 17 файлов конфигурации.
- Укажите backend в config.yml и порядок входа в listeners → priorities. Для первого запуска выделите процессу от 1 ГиБ памяти.
- Сохраните mcproxy-license.txt рядом с mcProxy.jar и запустите
java -Xms256M -Xmx1G -jar mcProxy.jar. Стандартный порт — 25577. - При передаче UUID и адреса включите ip_forward и настройте BungeeCord forwarding на backend. Ограничьте доступ к backend адресом своего прокси.
Отдельный архив содержит исходники и инструкцию повторной сборки. Проверка обновлений сообщает о новой версии и ведёт на эту страницу; установку выполняет владелец сети. Защита ограничивает подключения на уровне приложения, поэтому доступность сети также зависит от ресурсов сервера и его подключения.
Поддержка: тикеты mcDev.
Конфигурация
Ниже — полный основной config.yml этой версии с русскими комментариями. Настройки защиты, CAPTCHA, сообщений, MOTD и базы входят в основной ZIP отдельными файлами; их назначение и перенос описаны в README_RU.md.Поле config_version — служебная версия формата конфигурации; ядро использует его при переносе настроек. Не меняйте его вручную.
# Настройки входящих слушателей — listeners.
#
# - query_port: Порт UDP Query.
# - motd: Описание в списке серверов клиента.
# - tab_list: Режим списка игроков, доступны три значения:
# - "GLOBAL_PING": Все игроки сети с обновлением задержки.
# - "GLOBAL": Все игроки сети без обновления задержки.
# - "SERVER": Только игроки текущего backend-сервера.
# - query_enabled: Включить UDP Query.
# - proxy_protocol: Поддержка HAProxy PROXY protocol.
# Включайте только за доверенным балансировщиком с закрытым прямым доступом к порту.
# - forced_hosts: Маршрутизация по имени хоста, указанному клиентом.
# Например, отдельный поддомен может направлять игроков сразу на заданный сервер pvp.
# Поддомен должен через DNS указывать на адрес вашего прокси.
# - ping_passthrough: Передавать запрос статуса backend-серверу, когда целевой маршрут известен.
# При true для forced_hosts отображаются MOTD и число игроков целевого backend.
# - priorities: При первом входе или force_default_server прокси перебирает серверы сверху вниз, пока подключение не удастся.
# Для разных версий можно задать подходящие backend-серверы; совместимость каждой комбинации проверяйте отдельно.
# - bind_local_address: Использовать адрес входящего слушателя как исходящий адрес подключения к backend.
# Обычно нужно только на системе с несколькими IP-адресами.
# - host: IP-адрес и порт входящего слушателя BungeeCord.
# 0.0.0.0 — слушать на всех IPv4-интерфейсах.
# - max_players: Максимум игроков, отображаемый в списке серверов клиента.
# Это только отображение. Фактическое ограничение подключений задаёт player_limit.
# - tab_size: Число позиций в списке игроков, открываемом клавишей Tab.
# - force_default_server: При true каждый вход направляется на серверы из priorities.
# При false сохраняется последний сервер игрока; учитывайте взаимодействие с forced_hosts.
# Для входа через сервер авторизации сети используйте force_default_server: true; отдельно проверьте forced_hosts.
listeners:
- query_port: 25577
motd: "<aqua>Сервер mcProxy"
tab_list: "GLOBAL_PING"
query_enabled: false
proxy_protocol: false
forced_hosts:
pvp.md-5.net: "pvp"
ping_passthrough: false
priorities:
- "lobby"
bind_local_address: true
host: "0.0.0.0:25577"
max_players: 1
tab_size: 60
force_default_server: false
# Настройки backend-серверов.
#
# - motd: Описание сервера для запроса статуса.
# - address: Адрес backend-сервера, к которому прокси подключает игрока.
# - restricted: Вход разрешён только с правом bungeecord.server.[servername].
servers:
lobby:
motd: "<aqua>Сервер mcProxy"
address: "localhost:25565"
restricted: false
# Передавать backend-серверу настоящий IP-адрес и UUID игрока? Без этого backend видит адрес прокси и может использовать UUID от имени игрока.
# Для сети с online_mode: true рекомендуется включить передачу UUID и настроить защиту backend.
ip_forward: true
# Передавать Mojang IP-адрес подключающегося игрока при проверке сессии.
prevent_proxy_connections: false
# Проверять сессию игрока через Mojang? При false возможен вход без проверки лицензионной учётной записи.
online_mode: false
# Включить поддержку клиентов Forge?
forge_support: false
# Отклонять подключения, полученные через transfer от другого сервера?
reject_transfers: true
# Записывать запросы статуса сервера в консоль BungeeCord?
log_pings: false
# Записывать команды прокси в консоль BungeeCord?
log_commands: false
# Всегда требовать от клиента защищённый профиль?
enforce_secure_profile: false
# Закрывать соединение после указанного числа миллисекунд без пакетов.
timeout: 20000
# Порог размера пакета для сжатия. -1 — отключить сжатие.
network_compression_threshold: 256
# Срок кэширования результата запроса числа игроков backend, в миллисекундах.
# -1 — отключить.
remote_ping_cache: -1
# Тайм-аут запроса числа игроков backend, в миллисекундах.
remote_ping_timeout: 5000
# После connection_throttle_limit попыток с одного IP за connection_throttle миллисекунд новые попытки блокируются на connection_throttle миллисекунд.
# Пример: при лимите 10 и интервале 4000 мс после десяти попыток за четыре секунды адрес должен ждать четыре секунды.
# -1 — отключить.
connection_throttle_limit: 10
# Задержка повторного подключения клиента после недавней попытки, в миллисекундах.
# -1 — отключить.
connection_throttle: 4000
# Тайм-аут подключения игрока к backend-серверу, в миллисекундах.
server_connect_timeout: 5000
# Общий лимит игроков прокси. Значение 0 или меньше снимает ограничение.
player_limit: -1
# Команды, отключённые на прокси.
disabled_commands:
- "disabledcommandhere"
# Права на команды и действия прокси.
# Это отдельные права; они отличаются от прав Bukkit/Spigot.
# Права объединены в группы, которые назначаются игрокам в разделе groups.
# Все игроки получают права default. Игроки группы admin дополнительно получают перечисленные для неё права.
# Каждая группа наследует только default; при необходимости повторите общее право в нескольких группах.
permissions:
default:
- "bungeecord.command.server"
- "bungeecord.command.list"
admin:
- "bungeecord.command.alert"
- "bungeecord.command.alertraw"
- "bungeecord.command.end"
- "bungeecord.command.ip"
- "bungeecord.command.reload"
- "bungeecord.command.kick"
- "bungeecord.command.send"
- "bungeecord.command.find"
- "bungeecord.command.perms"
- "mcproxy.player"
- "mcproxy.player.help"
- "mcproxy.player.stats"
- "mcproxy.player.ban"
- "mcproxy.player.unban"
- "mcproxy.player.banlist"
- "mcproxy.player.trigger"
- "mcproxy.player.trigger.ping"
- "mcproxy.player.trigger.spam"
- "mcproxy.player.trigger.bot"
- "mcproxy.player.untrigger"
- "mcproxy.player.untrigger.ping"
- "mcproxy.player.untrigger.spam"
- "mcproxy.player.untrigger.bot"
- "mcproxy.player.toggle"
- "mcproxy.player.toggle.ping"
- "mcproxy.player.toggle.custom"
- "mcproxy.player.toggle.spam"
- "mcproxy.player.toggle.bot"
- "mcproxy.player.whitelist"
- "mcproxy.player.whitelist.add"
- "mcproxy.player.whitelist.remove"
- "mcproxy.player.cached"
- "mcproxy.player.cached.add"
- "mcproxy.player.cached.info"
- "mcproxy.player.cached.remove"
- "mcproxy.player.cached.removeall"
- "mcproxy.player.livestats.default"
- "mcproxy.player.livestats.cpu"
- "mcproxy.player.livestats.network"
- "mcproxy.player.livestats.upstream_network"
- "mcproxy.player.livestats.downstream_network"
# Назначение игрокам групп, объявленных в разделе permissions.
# В разделе groups укажите имя игрока и список его групп.
# Назначайте группу admin только своим администраторам; её права определены в permissions.
# Группа default есть у всех игроков. Добавляйте сюда только тех, кому нужны дополнительные права.
groups: {}
# Уникальный идентификатор статистики.
# Ядро его не использует, но он может потребоваться плагинам.
stats: "00000000-0000-0000-0000-000000000000"
config_version: 1