Плагин MC Monitor для сервера
Плагин узнаёт игроков, которые зашли на сервер через лаунчер MC Monitor, и не пускает тех, кого вы забанили в кабинете. Как поставить на Paper, Velocity и BungeeCord, что он отправляет сайту.
Редакция от
Содержание 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 не поддерживаются.
Установка
Один файл подходит и серверу, и прокси.
- Положите файл в
plugins/и запустите сервер: плагин создастconfig.ymlи файлы сообщений. - В кабинете, в разделе «Игроки», нажмите «Получить ключ». Ключ показывается один раз. Раздел есть у Java-серверов с запуском «Обычный сервер» или «Только через лаунчер».
- Впишите ключ в
server-keyвplugins/MCMonitor/config.yml(на Velocity —plugins/mcmonitor/config.yml). - Перезапустите сервер. В консоли появится
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 без ключа и строки из консоли.