Скачай лаунчер Minecraft от мониторинга Перейти

MCLGuard — античит

Серверный плагин-античит каталога MCListing.RU для Minecraft (Bukkit / Spigot / Paper, 1.8–1.21). Базовый детект бесплатен для серверов каталога, PRO-функции открываются платной лицензией. Ниже — как он работает, что проверяет и что настраивается в config.yml.

Как работает

MCLGuard анализирует поведение игроков на сервере в реальном времени и реагирует на признаки читов. Кратко о движке:

  • Источники данных. Движение, бой и работа с блоками разбираются из Bukkit-событий (главный поток). CPS, Timer, BadPackets и тайминг копания — из сетевого слоя (PacketEvents).
  • VL (Violation Level). Каждая проверка при срабатывании добавляет игроку VL. При достижении порога применяется наказание, а VL со временем затухает (vl-decay-seconds), если нарушений больше нет.
  • Оповещения по порогу. Стафф в чате, Discord и отчёт в каталог отправляются только при достижении порога VL — чтобы не засорять чат промежуточными флагами. Полный поток срабатываний виден по /mclguard verbose.
  • Общий бан-лист (сетевой эффект). Авто-баны серверов складываются в общий список; при входе игрока плагин предупреждает стафф, если игрок забанен на нескольких серверах. Бесплатно для всех активных лицензий.
  • ИИ-анализ инцидентов (второй эшелон). Когда VL добивает до порога, плагин отправляет компактную числовую сводку по игроку (CPS, стабильность кликов, дельты движения, углы обзора, пинг) в каталог, а тот просит нейросеть вынести вердикт: чит / подозрительно / чисто, тип чита, вероятность и понятную причину. Это не замена мгновенным проверкам — это второй взгляд, который отсекает ложные срабатывания из-за лагов и даёт стаффу объяснение. Настраивается в разделе ai.
  • Устойчивость. Если сетевой слой PacketEvents не поднялся на нестандартной сборке — плагин не падает: пакетные проверки (Timer/BadPackets) отключаются, остальной детект работает. Статус виден в /mclguard info.
  • Связь с каталогом. При старте и раз в 30 минут плагин сверяет лицензию с каталогом (heartbeat), получает актуальный тариф, удалённые настройки из кабинета и сведения о новой версии.
Публичную статистику защиты можно получить программно — GET /api/anticheat/stats.php.

Что детектит

КатегорияПроверки
ДвижениеFly, Speed, NoFall, Jesus (вода), InvalidMove, Velocity (anti-KB)
БойReach, KillAura (угол + мульти-аура), AutoClicker (CPS + стабильность)
МирNuker, FastBreak, Scaffold
ПакетыTimer (balance-метод), BadPackets

Пороговые значения подобраны консервативно — приоритет минимуму ложных срабатываний. Чувствительность каждой проверки настраивается в разделе checks.

Тарифы FREE и PRO

ВозможностьFREEPRO
Все детекты (движение / бой / мир / пакеты)
Алерты стаффу в чат, kick, ALERT_ONLY, COMMAND
Общий бан-лист / репутация игроков
Discord-webhook
Встроенный авто-бан (action: BAN)
Веб-статистика нарушений в кабинете
ИИ-анализ инцидентовсо своим ключом OpenRouter✅ встроенный

На тарифе FREE наказание BAN автоматически деградирует до KICK. Discord-webhook и отчёты в веб-панель на FREE не отправляются. ИИ-анализ на PRO работает «из коробки» (токен предоставляет каталог), а на FREE — если вы укажете свой ключ OpenRouter в ai.token.

Установка

1
Добавьте сервер в каталог (если ещё не добавлен) на mclisting.ru.
2
Получите лицензионный ключ в личном кабинете владельца, раздел «Античит». Бесплатная FREE-лицензия тоже выдаётся ключом.
3
Скачайте MCLGuard-*.jar из кабинета и положите в папку plugins/ сервера.
4
Запустите сервер один раз — создастся plugins/MCLGuard/config.yml.
5
Впишите ключ в license.key и перезапустите сервер (или выполните /mclguard reload).

Совместимость: Bukkit / Spigot / Paper, версии Minecraft 1.8–1.21. PacketEvents вшит в jar — сторонних зависимостей ставить не нужно.

Лицензия и ключ

Ключ обязателен, даже для бесплатного тарифа FREE. Без указанного и принятого каталогом ключа плагин считает лицензию неактивной и не запускает проверки. Так каждая защита привязана к конкретному зарегистрированному серверу.
  • Ключ имеет вид MCLG-XXXXXXXX-XXXXXXXX-XXXX и привязан к IP:port вашего сервера в каталоге — его нельзя расшарить между серверами.
  • Плагин сверяет ключ при старте и раз в 30 минут (heartbeat).
  • Если каталог временно недоступен, но лицензия ранее была валидной — плагин продолжает работать в течение офлайн-грейса (offline-grace-minutes, по умолчанию 720 мин). При холодном старте без связи с каталогом или с отклонённым/пустым ключом защита не активируется.
  • Текущий статус лицензии всегда виден по команде /mclguard info.

Настройка config.yml

Файл создаётся при первом запуске в plugins/MCLGuard/config.yml. Полный справочник ниже, а вот он целиком:

# --- Лицензия ---
license:
  key: "ВСТАВЬТЕ_КЛЮЧ_СЮДА"       # обязателен даже для FREE
  api-url: "https://mclisting.ru/api/anticheat"
  offline-grace-minutes: 720

# --- Обновления ---
update:
  notify: true
  auto-download: false

# --- Оповещения ---
alerts:
  format: "&8[&bMCLGuard&8] &f{player} &7нарушил &e{check} ..."
  cooldown-ms: 1500
  discord-webhook: ""          # только PRO

# --- Наказания ---
punishments:
  default-threshold: 20
  action: KICK                # KICK | BAN | COMMAND | ALERT_ONLY
  kick-message: "&cОтключён античитом MCLGuard\n&7Причина: &f{check}"
  ban-duration-minutes: 0    # для action: BAN, 0 = навсегда
  ban-reason: "&cЗабанен античитом MCLGuard\n&7Причина: &f{check}"
  command: "kick {player} MCLGuard: {check}"
  vl-decay-seconds: 30

# --- Проверки (enabled + чувствительность) ---
checks:
  fly:          { enabled: true, max-ascension: 0.42 }
  speed:        { enabled: true, max-horizontal: 0.36 }
  nofall:       { enabled: false }
  jesus:        { enabled: true }
  invalid-move: { enabled: true }
  velocity:     { enabled: true, min-percent: 15 }
  reach:        { enabled: true, max-distance: 3.15 }
  killaura:     { enabled: true, max-angle: 75.0 }
  autoclicker:  { enabled: true, max-cps: 20, check-consistency: true }
  nuker:        { enabled: true, max-blocks-per-tick: 3 }
  fastbreak:    { enabled: true }
  scaffold:     { enabled: true }
  timer:        { enabled: true, max-rate: 1.06 }
  badpackets:   { enabled: true }

# --- Общий бан-лист / репутация ---
reputation:
  enabled: true
  min-servers: 2
  contribute: true

# --- ИИ-анализ инцидентов (второй эшелон) ---
ai:
  enabled: false                # требует PRO ИЛИ свой ai.token
  token: ""                     # ключ OpenRouter для FREE; на PRO оставьте пустым
  min-vl: 15                     # с какого суммарного VL запускать анализ
  cooldown-seconds: 30           # кулдаун анализа на одного игрока
  mode: REPORT                  # REPORT (оповестить) | AUTOPUNISH (ещё и наказать)
  autopunish-probability: 0.9    # порог вероятности для AUTOPUNISH

# --- Прочее ---
settings:
  respect-bypass-permission: true
  movement-grace-ticks: 20
  log-to-file: true
  report-to-catalog: true
license
ПараметрПо умолч.Описание
keyЛицензионный ключ. Обязателен, в т.ч. для FREE.
api-url.../api/anticheatАдрес API каталога. Менять не нужно.
offline-grace-minutes720Сколько минут работать, если каталог недоступен (после ранее валидной проверки).
alerts
ПараметрПо умолч.Описание
formatФормат сообщения стаффу. Плейсхолдеры: {player} {check} {vl} {type} {info}.
cooldown-ms1500Антиспам: не чаще одного оповещения на игрока+проверку за N мс.
discord-webhookпустоDiscord-webhook. Работает только на PRO; пусто = выключено.
punishments
ПараметрПо умолч.Описание
default-threshold20Общий VL, при котором применяется наказание (переопределяется у отдельных проверок).
actionKICKKICK — кик; BAN — встроенный бан + кик (только PRO, иначе KICK); COMMAND — своя команда из консоли; ALERT_ONLY — только оповестить.
kick-messageТекст кика. Плейсхолдеры {check} и др.
ban-duration-minutes0Для action: BAN — срок бана в минутах (0 = навсегда).
ban-reasonПричина бана.
commandКоманда для action: COMMAND. Подставляются {player}, {check}.
vl-decay-seconds30Через сколько секунд без нарушений VL игрока сбрасывается.
checks

У каждой проверки есть enabled (вкл/выкл); у части — параметр чувствительности. Чем «строже» значение, тем агрессивнее детект (и выше риск ложных срабатываний).

ПроверкаПараметрПо умолч.Смысл
flymax-ascension0.42Макс. вертикальная скорость без прыжка/полёта.
speedmax-horizontal0.36Блоков/тик по горизонтали сверх допустимого.
nofallenabledfalseВыключена по умолчанию — возможны ложные срабатывания на нестандартной геометрии.
jesusenabledtrueХождение по воде.
invalid-moveenabledtrueТелепорты / NaN / невозможные дельты.
velocitymin-percent15% ожидаемого нокбэка, ниже которого — флаг (anti-KB).
reachmax-distance3.15Дистанция атаки (ванилла ~3.0).
killauramax-angle75.0Угол до цели, выше которого удар невозможен.
autoclickermax-cps, check-consistency20, trueКликов/сек; низкая дисперсия интервалов = автокликер.
nukermax-blocks-per-tick3Ломает слишком много блоков за тик.
fastbreakenabledtrueСлишком быстрое разрушение блоков.
scaffoldenabledtrueСтавит блоки под собой на скорости.
timermax-rate1.06Множитель ускорения игрового времени клиента.
badpacketsenabledtrueМусорные / невозможные пакеты.
reputation
ПараметрПо умолч.Описание
enabledtrueПроверять входящих игроков по общему бан-листу и предупреждать стафф.
min-servers2Минимум РАЗНЫХ серверов, забанивших игрока, чтобы показать предупреждение.
contributetrueСообщать о своих авто-банах в общий список (участие в сетевом эффекте).
ai ИИ-анализ

Второй эшелон детекта. LLM вызывается только на пороговый инцидент (не на каждый пакет), с кулдауном на игрока и часовым лимитом на стороне каталога — поэтому это дёшево и не нагружает сервер.

ПараметрПо умолч.Описание
enabledfalseВключить ИИ-анализ. Требует тариф PRO или непустой token.
tokenСвой ключ OpenRouter для FREE. На PRO оставьте пустым — токен предоставляет каталог, в jar он не хранится.
min-vl15Минимальный суммарный VL игрока, начиная с которого запускается анализ.
cooldown-seconds30Кулдаун между ИИ-анализами одного игрока (защита от спама запросами).
modeREPORTREPORT — только оповестить стафф вердиктом; AUTOPUNISH — при уверенном чите ещё и наказать (действием из punishments).
autopunish-probability0.9Порог вероятности [0.0–1.0] для AUTOPUNISH: наказываем при probability ≥ порога.
Вердикт ИИ приходит стаффу в чат, в Discord (PRO) и в violations.log. ИИ — вспомогательный слой: окончательные пороги и мгновенные проверки остаются за движком VL.
settings и update
ПараметрПо умолч.Описание
settings.respect-bypass-permissiontrueНе проверять игроков с правом mclguard.bypass.
settings.movement-grace-ticks20Тиков после входа/телепорта, в течение которых проверки движения молчат.
settings.log-to-filetrueЛогировать нарушения в violations.log.
settings.report-to-catalogtrueСлать статистику нарушений в каталог (только PRO, для веб-панели).
update.notifytrueУведомлять админов о новой версии при входе и в консоли.
update.auto-downloadfalseСкачивать новую версию в plugins/update/ (применится после перезапуска).
Часть порогов и проверок можно переопределять удалённо из личного кабинета — такие оверрайды приходят вместе с проверкой лицензии и имеют приоритет над локальным config.yml.

Команды и права

Команда /mclguard (алиасы /mclac, /guard, /ac):

ПодкомандаДействие
alertsВкл/выкл получение оповещений о нарушениях.
verboseПоказывать все срабатывания (не только по порогу).
violations <ник>История нарушений игрока.
checkСостояние проверок.
infoСтатус лицензии, тариф, состояние пакетного слоя, версия.
reloadПеречитать config.yml.
ПравоПо умолч.Описание
mclguard.adminopПолный доступ к командам.
mclguard.alertsopПолучать оповещения о нарушениях.
mclguard.bypassfalseПолное игнорирование проверок (админы/стафф).
mclguard.notify.attachopОставаться в списке оповещений между входами.
Вопросы по подключению — поддержка. Разработчикам интеграций — публичный API мониторинга.