Добавить сервер Войти

Плагин MC Monitor для сервера

Плагин узнаёт игроков, которые зашли на сервер через лаунчер MC Monitor, и не пускает тех, кого вы забанили в кабинете. Как поставить на Paper, Velocity и BungeeCord, что он отправляет сайту.

Редакция от

Содержание 8 разделов
  1. Кому нужен
  2. Установка
  3. Настройки
  4. Кого пускает
  5. Как это работает
  6. Что уходит на сайт
  7. Совместимость
  8. Если что‑то не так

Плагин стоит на сервере и при входе игрока узнаёт у MC Monitor, пришёл ли он через наш лаунчер и не забанили ли вы его в кабинете. Без плагина бан закрывает игроку только кнопку «Играть» в лаунчере: по адресу под тем же ником он зайдёт. С плагином не зайдёт и по адресу. А если в кабинете выбрать «Только через лаунчер», без лаунчера на сервер не попасть никому, пока сайт отвечает, и забаненный не пройдёт ни под новым ником, ни со второго аккаунта с того же компьютера.

Код открыт: github.com/user-bigg/mcmon-plugin.

Кому нужен

  • Серверам Java Edition, которые пускают игроков по нику (online-mode=false). Если сервер проверяет лицензию, плагин не нужен: игроки с лицензией через наш лаунчер не заходят.
  • Серверам с обычным запуском из лаунчера. Если у сервера свой лаунчер, нашего кода запуска у игроков нет, и плагину нечего проверять.
  • Paper, Spigot, Purpur и другим форкам, Folia, Velocity и BungeeCord. Forge и NeoForge без Bukkit API и Bedrock не поддерживаются.

Установка

Один файл подходит и серверу, и прокси.

  1. Положите файл в plugins/ и запустите сервер: плагин создаст config.yml и файлы сообщений.
  2. В кабинете, в разделе «Игроки», нажмите «Получить ключ». Ключ показывается один раз. Раздел есть у Java-серверов с запуском «Обычный сервер» или «Только через лаунчер».
  3. Впишите ключ в server-key в plugins/MCMonitor/config.yml (на Velocity — plugins/mcmonitor/config.yml).
  4. Перезапустите сервер. В консоли появится connected to the site, в кабинете — «Подключён» и версия плагина. Если в консоли site rejected the server key, сверьте ключ.

Сервер должен пускать игроков по нику: online-mode=false в server.properties, на Velocity online-mode = false в velocity.toml, на BungeeCord online_mode: false в config.yml.

Если игроки заходят через прокси, плагин ставят только на прокси. Velocity и BungeeCord не передают запрос кода дальше, и на игровом сервере за ними он бесполезен. Плагин для Bukkit сам видит пересылку с прокси, пишет об этом в консоль и игроков не трогает.

Настройки

Всё в config.yml:

  • server-key — ключ из кабинета. Без ключа плагин к сайту не обращается, сохранённые баны действуют.
  • timeout-ms — сколько ждать ответа сайта и кода от игры, по умолчанию 2000 мс, от 100 до 5000. Не дождался ответа сайта — игрок заходит как обычно.
  • language — язык сообщений игрокам: ru, en, es, pt, de. По умолчанию ru, консоль всегда на английском.

Тексты сообщений лежат в plugins/MCMonitor/messages/<язык>.yml (на Velocity — plugins/mcmonitor/messages/), их можно править. Удалённая строка берётся из встроенного файла.

Кого пускает

Кто заходит Что делает плагин
Подтверждён лаунчером, бана нет пускает
Подтверждён, в бане выкидывает и пишет причину и срок
Не подтверждён: запуск не из лаунчера, чужой или устаревший код пускает, дальше решает сервер
Сайт не отвечает или ключ неверный пускает всех, кроме уже известных забаненных

Список банов плагин держит у себя в bans.json и обновляет раз в пять минут, поэтому забаненного под известным ему ником не пускает и когда сайт недоступен, и когда тот пришёл без лаунчера. Под новым ником без лаунчера забаненный пройдёт, если сервер не «Только через лаунчер».

Если в кабинете, в поле «Как зайти из лаунчера», выбрано «Только через лаунчер», третья строка меняется: неподтверждённых плагин выкидывает с сообщением, что нужен лаунчер. Режим приходит от сайта вместе со списком банов, в config.yml для него ничего нет. Когда сайт не отвечает, плагин пускает всех, кроме известных забаненных. За прокси с пересылкой режим не действует, включать его нужно на самом прокси. На Waterfall и на старых сборках BungeeCord плагин код запросить не может, поэтому режим там не работает.

Как это работает

Перед запуском лаунчер берёт у сайта код запуска для выбранного сервера и передаёт его игре. При входе плагин спрашивает код у игры, отправляет сайту ник и код и получает ответ: подтверждён ли игрок, его номер на вашем сервере и бан, если вы его поставили. Игра, запущенная не из лаунчера, кода не знает, и для плагина такой игрок пришёл со стороны.

Номер игрока — 16 знаков, у одного аккаунта на вашем сервере он всегда один, а на другом сервере другой. По нему игрока видно в кабинете, в разделе «Игроки». Там же кнопка «Сменить номера»: после неё у всех игроков новые номера, а прежние баны перестают действовать.

Пароль плагина входа всё это не отменяет: AuthMe, nLogin и другие спрашивают его как обычно.

Что уходит на сайт

При входе с кодом плагин отправляет сайту ник и код запуска. Больше ничего: ни IP игрока, ни сведений о сервере, кроме версии плагина. Вход без кода на сайт не уходит.

Сайт отвечает, подтверждён ли игрок, его номер на вашем сервере и бан с причиной и сроком. Почту, номер аккаунта, устройство и другие серверы игрока плагин не получает. Ключ, коды и IP не попадают в консоль, коды на диск не пишутся.

Совместимость

Платформа Версии Java
Paper, Spigot, Purpur и другие форки Minecraft 1.18–⁠26.3 17 и новее
Folia 1.21.11 21 и новее
Arclight и другие серверы Forge и NeoForge с Bukkit API тот же файл в plugins/ как у сервера: 17 на Forge, 21 на NeoForge
Velocity 3.5.x, 4.x 21 и новее, для 4.x — 25
BungeeCord сборки с сентября 2024 года 17 и новее

Waterfall и старые сборки BungeeCord код запросить не могут: плагин скажет об этом в консоли и игроков не тронет. Код запуска есть только у игры 1.14 и новее, запущенной из лаунчера. У игроков на старых версиях, в том числе на серверах 1.12.2, кода не бывает, к ним применяются только сохранённые баны.

Если что‑то не так

  • В консоли site rejected the server key. Ключ с ошибкой или сервер сменил владельца на сайте: у нового владельца новый ключ. Скопируйте ключ из кабинета заново и перезапустите сервер.
  • Ставили 0.1.0 с require-launcher: true в конфиге. После обновления плагин пускает всех, пока в кабинете, в поле «Как зайти из лаунчера», не выбрано «Только через лаунчер»: настройка в конфиге больше не читается.
  • В кабинете «Не отвечает». Плагин не обращался к сайту больше 15 минут: сервер выключен, ключ из config.yml удалён или сайт с сервера недоступен. Посмотрите консоль при запуске.
  • Игрок из лаунчера заходит как неподтверждённый. Код выдаётся под закреплённым ником аккаунта и для того сервера, который игрок запустил. Другой адрес или порт, смена ника в игре или запуск другого сервера код обнуляют.

Остальное — в issue на GitHub: платформа и версия сервера, версия плагина, config.yml без ключа и строки из консоли.

Мы запоминаем ваш вход и используем cookie, чтобы сайт работал лучше. Подробнее