Skip to content

Repository files navigation

RevisesFT

Version Downloads

Плагин для проверок игроков на читы — спародирован с сервера FunTime.

Модератор вызывает подозреваемого командой, игрока «замораживает» и телепортирует в проверочную комнату, между ними открывается приватный чат, а сверху у обоих висит боссбар с таймером. По итогу модератор выносит вердикт — игрок либо получает награду за честную игру, либо автоматическое наказание (warn / tempban / ban) согласно правилам сервера. Все проверки пишутся в базу данных.


Возможности

  • Заморозка игрока. После вызова цель не может двигаться, поворачиваться, ломать/ставить блоки, выбрасывать и подбирать предметы, получать урон. Таймер запускается не сразу, а только когда игрок проявит активность (двинется, нажмёт ЛКМ/ПКМ, напишет в чат) — так модератор понимает, что человек действительно за компьютером.
  • Боссбар с таймером у обеих сторон: модератор видит «У игрока осталось времени», цель — «У вас осталось времени». Цвет, стиль и тексты настраиваются.
  • Приватный чат проверки. Всё, что пишет проверяемый, уходит только модератору (и наоборот). Сообщения кликабельны для копирования. У модератора есть префикс ! для письма в обычный публичный чат.
  • Проверочные комнаты. Можно указать конкретную комнату или дать плагину выбрать случайную свободную. Занятые комнаты не предлагаются и не назначаются повторно.
  • Режим удалённого доступа (AnyDesk / RustDesk). Игрок отправляет /anydesk <цифры> или /rustdesk <цифры>, таймер останавливается, код уходит модератору, проверка переходит в «ручной» режим.
  • Автоматические наказания. Вердикт раскрывается в команду наказания из конфига. Поддерживаются категории clear (прошёл), warn, tempban, ban с привязкой к пунктам правил (4.2, 4.3, 4.3.1, 4.3.2).
  • Распознавание признания. Если игрок во время фриза пишет «У меня чит» (фразы настраиваются) — проверка автоматически завершается с указанной причиной и наказанием.
  • Награда за честную игру. При вердикте «чист…» игрок получает настраиваемый предмет (по умолчанию — именной Трофей с лором, чарами и датой) и поздравительное сообщение.
  • Обработка выхода/кика. Если игрок выходит во фризе — применяется наказание за уход. Если выходит в режиме удалённого доступа — модератору приходит кликабельное [Забанить]. Если выходит модератор — у цели запускается отсчёт ожидания, после чего она отпускается.
  • Хранение в БД. H2 (файловая, из коробки) или MySQL/MariaDB через пул HikariCP. По каждой проверке сохраняются модератор, цель, причина (ключ), ранг, время начала/конца и номер комнаты.
  • Гибкий язык и табкомплит. Все тексты в lang.yml, все вердикты — в config.yml с алиасами (в т.ч. русскими) и автодополнением в команде /revise finish.

Команды

Базовая команда — /revise. Без аргументов выводит список всех доступных команд.

Команда Что делает Право
/revise start <ник> [комната] Вызвать игрока на проверку. Без указания комнаты выбирается случайная свободная. revises.use
/revise stop Принудительно завершить проверку без вердикта (отпустить игрока). revises.use
/revise finish <вердикт> Завершить проверку с вердиктом. Все вердикты поддерживают табкомплит. revises.use
/revise addtime <время> Добавить время ожидания (180, 3m, 30s…). Ограничено лимитом группы. revises.use
/revise remote Перевести проверку в режим AnyDesk и остановить таймер. revises.remote
/revise active Список текущих активных проверок. revises.active
/revise logs <ник> Последние 10 проверок игрока из базы. revises.logs
/anydesk <код> · /rustdesk <код> Команды для проверяемого: отправить код AnyDesk/RustDesk остановив таймер проверки.

Права

Право Назначение
revises.use Доступ к основным командам проверки.
revises.remote Перевод проверки в режим remote (остановка таймера).
revises.active Просмотр активных проверок.
revises.logs Просмотр логов проверок.
revises.exempt Игрока с этим правом нельзя вызвать на проверку.
revises.addtime.admin Повышенный лимит на добавление времени (см. addtime-limits в конфиге).

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

  1. Вызов. Модератор пишет /revise start <ник>. Создаётся сессия в состоянии PENDING, у модератора появляется боссбар «Ожидаем движение игрока» (дабы не вызывать AFK игроков).
  2. Старт. Как только цель проявляет активность, сессия переходит в STARTED: игрока замораживают и телепортируют в комнату проверки, запускается таймер (по умолчанию 180 сек), у обоих появляется боссбар, а проверяемому раз в 2 секунды показывается инструкция по прохождению проверки.
  3. Диалог. Стороны общаются через приватный чат проверки. Игрок отправляет код удалённого доступа → проверка уходит в REMOTE, таймер останавливается.
  4. Итог:
    • /revise finish <чист…> → игрок получает награду, поздравление и телепортируется на спавн;
    • /revise finish <причина наказания> → выполняется команда наказания (warn/tempban/ban);
    • признание в чате по ключевым словам → авто-завершение с наказанием за признание;
    • /revise stop → проверка останавливается без вердикта;
    • истечение таймера или выход во время фриза → авто-наказание.
  5. Запись. Любое завершение с вердиктом сохраняется в БД (асинхронно).

Состояния сессии: PENDINGSTARTED → (REMOTE) → финиш.


Установка

  1. Соберите .jar (см. ниже) или возьмите готовый из releases.
  2. Положите его в папку plugins/ сервера на Paper/Spigot 1.16.5.
  3. Запустите сервер — сгенерируются config.yml и lang.yml.
  4. Настройте комнаты, спавн, наказания и тексты под свой сервер, затем перезапустите плагин.

Note

Для корректной работы плагина необходима Java 16+ (плагин компилируется под Java 16).


Сборка

Проект использует Gradle с плагином Shadow для того, чтобы запаковывать все зависимости.

# Linux/macOS
./gradlew build

# Windows
gradlew.bat build

Готовый RevisesFT-<version>.jar появится в build/libs/.

Стек зависимостей: LiteCommands (команды и аргументы), HikariCP + H2/MySQL (БД), Adventure / MiniMessage (текст), Lombok (бойлерплейт).


Конфигурация

config.yml

Секция Описание
storage Тип БД (h2 / mysql) и параметры подключения.
revise.defaultSeconds Стартовое время проверки, сек.
revise.maxAdditionalSeconds Максимум, добавляемый одной командой addtime.
revise.addtime-limits Лимиты добавления времени по правам (например, admin с revises.addtime.admin).
revise.spawn-location Координаты, куда телепортируется игрок после проверки. Формат: world,x,y,z,yaw,pitch.
revise.rooms Список проверочных комнат с координатами.
revise.timeout-punishment / freeze-quit-punishment Команды наказания при истечении таймера и при выходе во фризе.
revise.confession Фразы-признания, причина и команда наказания.
revise.time-after-leave Сколько ждать после выхода модератора, прежде чем отпустить цель.
revise.sounds Звуки на события (старт, добавление времени, выход, remote, чат).
revise.rewards.clear-any Предмет-награда за пройденную проверку.
revise.finish-reasons Дерево вердиктов: clear, warn, tempban, ban с алиасами и командами.

О вердиктах. В базу сохраняется ключ, а не введённый текст. Например, ввод xрей → ключ revise.finish-reasons.warn.4.3.1.reasons.XRay, а чист(бета)revise.finish-reasons.clear.beta. У каждого вердикта может быть несколько алиасов (русских и английских) — все они подсказываются в табкомплите.

lang.yml

Все сообщения, тексты боссбаров, формат инструкции игроку и форматы чата. Поддерживаются legacy-коды цветов (&c, &6, …) и плейсхолдеры (%player%, %time%, %room%, %reason% и др.).


Статус и планы

Из задуманного пока не реализовано (есть только заготовки):

  • Discord-интеграция. В utils/DiscordWebhook.java лежит только утилита вебхука. Нет конфига Discord, бота, проверки логина/пароля игрока, авто-remote при заходе игрока в Discord, выдачи и отзыва прав на голосовой канал.
  • Межсерверный вызов через Netty. Сейчас всё работает локально через Bukkit API (teleport, локальные события). Прокси-интеграции (BungeeCord/Velocity) и plugin messaging нет.
  • Уменьшение кол-ва зависимостей в Shadow-джаре. Сейчас в итоговый .jar попадают все зависимости, включая те, что нужны только для разработки (например, H2 для тестов). В будущем стоит отделить их на compileOnly и runtimeOnly либо прописывать exclude, чтобы не раздувать размер плагина.

Структура проекта

src/main/java/kz/itzhiti/revisesft/
├── RevisesFT.java              # точка входа, регистрация команд и слушателей
├── command/                    # /revise, /anydesk, аргументы и табкомплит
├── listeners/                  # обработка движения, чата, входа/выхода
├── revise/                     # ядро: менеджер, сессия, состояния, чат-сервис
│   └── reason/                 # загрузка и резолв вердиктов из конфига
├── storage/                    # конфиги и слой БД (Database, ReviseRepository)
└── utils/                      # текст, время, звуки, локации, команды
src/main/resources/             # plugin.yml, config.yml, lang.yml

Скришноты

image image image image image image

About

Пародия плагина на проверки с сервера FunTime

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages