
CommandBridge
CommandBridge - плагин для Velocity, который связывает все серверы сети Minecraft и позволяет выполнять команды на любом из них. Управление через YAML-скрипты, поддержка WebSocket и Redis, безопасность HMAC-SHA256.
CommandBridge - это решение для тех, кто управляет сетью Minecraft из нескольких серверов (лобби, выживание, мини-игры). Вместо того чтобы настраивать плагин-месседжинг или вручную проксировать команды, вы просто пишете YAML-скрипты на Velocity, и они выполняются на любом подключенном бэкенде. Игрок запускает /lobby на сервере выживания - прокси перехватывает, отправляет его на лобби. Админ пишет /alert на Velocity - команда уходит на все серверы сразу. И всё это без лишних зависимостей и ограничений по онлайну.
Как это работает
Всё строится на скриптах. Создаёте .yml файл, в нём прописываете имя команды, аргументы, где она регистрируется и что происходит при выполнении. Кладёте файл в папку scripts на Velocity - готово. CommandBridge читает, проверяет и регистрирует команды на указанных серверах. Если в скрипте ошибка, плагин скажет, что именно не так, и пропустит только этот файл - остальные продолжат работать.
Вот простой пример. Этот скрипт регистрирует /alert на прокси и отправляет сообщение на два бэкенда от имени консоли:
version: 4
name: example
description: An example command script - edit or replace this with your own
enabled: false
aliases: [ex]
permissions:
enabled: true
silent: false
register:
- id: "client-1"
location: VELOCITY
defaults:
run-as: CONSOLE
execute:
- id: "survival-1"
location: BACKEND
server:
target-required: false
schedule-online: false
player-arg: ""
delay: 0s
cooldown: 0s
args:
- name: player
required: true
type: STRING
suggestions: []
- name: message
required: true
type: TEXT
suggestions: []
commands:
- command: "msg ${player} ${message}"
Платформы
Один JAR-файл работает везде. Ставите его на Velocity и на все бэкенды - он сам понимает, где работает.
Транспорт
Выбираете один из двух вариантов. WebSocket работает из коробки - Velocity выступает сервером, бэкенды подключаются к нему. Никаких внешних зависимостей, встроенная поддержка TLS.
Redis - все инстансы подключаются к вашему существующему Redis. Удобно, если сервера за NAT или вы уже используете Redis для других задач.
Оба режима поддерживают несколько прокси. Один Velocity работает как основной, остальные подключаются в режиме клиента.
Безопасность
Каждое соединение аутентифицируется через HMAC-SHA256. Обе стороны доказывают, что знают секрет, не передавая его по сети. Поверх этого - TLS-шифрование с тремя режимами на выбор.
По умолчанию включён TOFU. Velocity при первом запуске генерирует самоподписанный сертификат, бэкенды автоматически его запоминают. Никакой ручной работы с сертификатами, шифрование с первого включения.
Режимы выполнения
Команды могут выполняться в трёх контекстах:
CONSOLE- полные права, как от консоли.PLAYER- от имени игрока, который вызвал команду.OPERATOR- временные повышенные права только на эту команду, ничего лишнего.
Аргументы
Полный разбор аргументов с автодополнением через CommandAPI. 22 типа - от простых строк до майнкрафтовских сущностей, игроков, локаций, предметов.
Аргументы становятся плейсхолдерами ${name} в ваших командах. Поддерживается PlaceholderAPI - можно подставлять данные из статистики игрока, экономики и других источников.
Создан для реальных сетей
CommandBridge спроектирован для продакшена. На команды можно ставить кулдауны от миллисекунд до часов. Если игрок офлайн в момент выполнения команды, плагин ставит её в очередь и выполнит, когда игрок зайдёт - даже после перезапуска серверов.
Можно задавать задержки для отдельных команд, перезагружать все скрипты без остановки сервера через /cb reload, а в одном скрипте прописать несколько команд с разными целями и настройками. Всё управляется с одного Velocity.
Присутствие игроков отслеживается по всей сети, включая конфигурации с несколькими прокси. CommandBridge всегда знает, где находится каждый игрок, поэтому команды, требующие его присутствия на конкретном сервере, работают без гонок и ошибок.
Требования
На каждом сервере обязателен CommandAPI. PlaceholderAPI через PapiProxyBridge и PacketEvents - опционально.
Метрики
Этот плагин собирает анонимную статистику через bStats. Отключить можно в plugins/bStats/config.yml.
