- Поддерживаемые версии
- 1.20
- 1.21
- 26.1
- 26.2
- 26.3
- Ядра и Прокси
- Paper
- Минимальная версия Java
- 17
Всем привет, форумчане. 
Написал для вас плагин MekhaModeration (1.20+)
Демонстрация плагина -
Плагин выполняет функции:
- Репортов (/report , /reports)
- Проверки на читы (/check)
- Система рейтинга (/rating)
- Система наказаний (/ban /mute и тп)
- Система быстрой выдачи наказаний (/punish)
Если игрок заметил нарушителя на сервере, то он может отправить на того жалобу, а КП её будет рассматривать. В плагине есть 2 вариации репортов:
1. Чисто на командах /report (nick) (reason) (comment)
2. Гуи меню, где можно удобно выбрать причину и тп
См ниже:
Freeze - игрок фризится на своём месте, после проверки размораживается
Teleport - игрока телепортирует на N точку, после успешной проверки через N секунд его телепортирует на бывшую локацию
Чат проверки: во время проверки у игрока и модератора появляется отдельный чат, который логируется плагином, в чат вашего плагина игрок писать не будет, если это конечно предусмотрено вашим плагином)
Система анти-АФК: если модератор захочет вызвать игрока на проверку, а тот стоит в АФК, то плагин вызовет на проверку игрока после его любого действия. Также модератор может этого не ждать и поспешно вызвать на проверку командой /check force
Кастомный ник-панель игрока во время проверки: когда подозреваемого вызывают на проверку, его ник меняется на информацию:
Демонстрация проверки:
У каждого игрока есть свой рейтинг, который складывается исходя из успешных/ложных репортов, также присутствует топ по рейтингу:
Удобная утилита для модерация, которая помогает не заучивать каждое правило сервера и его длительность, а быстро выдать наказание
См ниже:
Данные плагина могут храниться в SQLITE / MYSQL / MARIADB
Конфиг плагина:

Написал для вас плагин MekhaModeration (1.20+)
Демонстрация плагина -
Плагин выполняет функции:
- Репортов (/report , /reports)
- Проверки на читы (/check)
- Система рейтинга (/rating)
- Система наказаний (/ban /mute и тп)
- Система быстрой выдачи наказаний (/punish)
Репорты:
Если игрок заметил нарушителя на сервере, то он может отправить на того жалобу, а КП её будет рассматривать. В плагине есть 2 вариации репортов:
1. Чисто на командах /report (nick) (reason) (comment)
2. Гуи меню, где можно удобно выбрать причину и тп
См ниже:
Проверка на читы:
По команде /check (nick) модератор может вызвать игрока на проверку читов, есть 2 способа телепортации:Freeze - игрок фризится на своём месте, после проверки размораживается
Teleport - игрока телепортирует на N точку, после успешной проверки через N секунд его телепортирует на бывшую локацию
Чат проверки: во время проверки у игрока и модератора появляется отдельный чат, который логируется плагином, в чат вашего плагина игрок писать не будет, если это конечно предусмотрено вашим плагином)
Система анти-АФК: если модератор захочет вызвать игрока на проверку, а тот стоит в АФК, то плагин вызовет на проверку игрока после его любого действия. Также модератор может этого не ждать и поспешно вызвать на проверку командой /check force
Кастомный ник-панель игрока во время проверки: когда подозреваемого вызывают на проверку, его ник меняется на информацию:
Демонстрация проверки:
Система рейтинга:
У каждого игрока есть свой рейтинг, который складывается исходя из успешных/ложных репортов, также присутствует топ по рейтингу:
Система punish:
Удобная утилита для модерация, которая помогает не заучивать каждое правило сервера и его длительность, а быстро выдать наказание
См ниже:
База данных:
Данные плагина могут храниться в SQLITE / MYSQL / MARIADB
Конфиг плагина:
Код:
server-name: survival
# ─────────────────────────────── База данных ───────────────────────────────
storage:
# SQLITE — файл в папке плагина (один сервер)
# MYSQL / MARIADB — общая база для всех серверов сети (баны и жалобы общие)
type: SQLITE
sqlite-file: database.db
table-prefix: mm_
mysql:
host: localhost
port: 3306
database: minecraft
username: root
password: ''
pool-size: 4
properties:
useSSL: 'false'
useUnicode: 'true'
characterEncoding: utf8
autoReconnect: 'true'
# ─────────────────────────────── Сеть серверов ─────────────────────────────
# Velocity/BungeeCord: мгновенная синхронизация уведомлений, мутов и жалоб между серверами,
# кик забаненного игрока с любого сервера, перенос модератора на сервер нарушителя.
# Требует storage.type: MYSQL (общая база) и bungee-plugin-message-channel = true в velocity.toml.
network:
enabled: false
# Префикс сообщений, пришедших с другого сервера
remote-prefix: '񸷑[&#adb5bd{server}񸷑] '
log-remote-to-console: false
# ─────────────────────────────── Команды ───────────────────────────────────
# Любую команду можно переименовать, добавить алиасы, сменить право или выключить.
commands:
report:
enabled: true
name: report
aliases:
- rep
- жалоба
- репорт
permission: mekhamod.report
reports:
enabled: true
name: reports
aliases:
- reportlist
- жалобы
permission: mekhamod.reports
punish:
enabled: true
name: punish
aliases:
- pun
- наказать
permission: mekhamod.punish
ban:
enabled: true
name: ban
aliases:
- mban
permission: mekhamod.ban
tempban:
enabled: true
name: tempban
aliases:
- tban
- mtempban
permission: mekhamod.ban
ipban:
enabled: true
name: ipban
aliases:
- banip
- mipban
permission: mekhamod.ipban
mute:
enabled: true
name: mute
aliases:
- mmute
permission: mekhamod.mute
tempmute:
enabled: true
name: tempmute
aliases:
- tmute
permission: mekhamod.mute
warn:
enabled: true
name: warn
aliases:
- mwarn
permission: mekhamod.warn
kick:
enabled: true
name: kick
aliases:
- mkick
permission: mekhamod.kick
unban:
enabled: true
name: unban
aliases:
- pardon
- munban
permission: mekhamod.unban
unmute:
enabled: true
name: unmute
aliases:
- munmute
permission: mekhamod.unmute
unwarn:
enabled: true
name: unwarn
aliases: []
permission: mekhamod.unwarn
history:
enabled: true
name: history
aliases:
- hist
- mhistory
- история
permission: mekhamod.history
check:
enabled: true
name: check
aliases:
- проверка
- revise
# Право не задаётся: проверяемый должен иметь доступ к /check admit.
# Остальные подкоманды требуют mekhamod.check
permission: ''
rating:
enabled: true
name: rating
aliases:
- рейтинг
permission: mekhamod.rating
admin:
enabled: true
name: mekhamoderation
aliases:
- mm
- modmenu
- staffmenu
permission: mekhamod.menu
# ─────────────────────────────── Меню ──────────────────────────────────────
menus:
# Подтверждать наказания/отклонения через меню confirm.yml
confirm-actions: true
# Что открыть после выдачи наказания из меню: close или id меню (history, reports, ...)
after-punish: close
click-sound: ui.button.click 0.6 1.2
click-cooldown-ms: 150
history-limit: 270
check-history-limit: 112
players-include-self: false
# Ввод текста в чат (комментарий к жалобе, своя причина/срок)
chat-input:
timeout-seconds: 60
cancel-words:
- отмена
- cancel
- стоп
# Слова «пропустить» для необязательного комментария
skip-words:
- '-'
- пропустить
- skip
- нет
# ─────────────────────────────── Жалобы ────────────────────────────────────
reports:
# Кулдаун между жалобами (умножается на cooldown-multiplier уровня рейтинга)
cooldown: 60s
# Повторная жалоба на того же игрока
same-target-cooldown: 10m
max-open-per-reporter: 5
allow-offline-targets: false
max-comment-length: 200
# Сколько последних сообщений нарушителя прикладывать к жалобе
chat-log-size: 15
# Команды, которые тоже пишутся в лог чата (личные сообщения)
log-commands:
- msg
- tell
- w
- m
- r
- reply
- pm
- whisper
# Через сколько открытая жалоба закрывается автоматически (0 — никогда)
expire-after: 24h
# Как часто перечитывать жалобы из БД (для нескольких серверов на одной MySQL, 0 — выкл)
sync-interval: 0
# Напоминание персоналу о непрочитанных жалобах (0 — выкл)
reminder-interval: 5m
notify-on-join: true
notify-sound: block.note_block.pling 1 1.6
# Уведомлять игрока о решении по его жалобе
reporter-feedback: true
# Наказания этих типов автоматически принимают все открытые жалобы на игрока
auto-accept-on:
- BAN
- IPBAN
- MUTE
- WARN
- KICK
# Приоритет, с которого группа жалоб считается «горячей» (вариант high в меню)
high-priority: 5
# Тревога: много разных игроков пожаловались на одного за короткое время
alert:
enabled: true
unique-reporters: 3
within: 10m
sound: entity.ender_dragon.growl 0.5 1.5
# Команды от консоли: {player}, {count}, {unique}, {categories}
commands: []
# Категории. priority — вес при сортировке, ask-comment — спросить комментарий в чате,
# require-comment — комментарий обязателен, permission — кто может выбирать категорию,
# template — рекомендуемый шаблон наказания (подсвечивается модератору)
categories:
cheats:
name: '&#ff5c5cЧиты'
icon: DIAMOND_SWORD
priority: 3
ask-comment: true
require-comment: false
template: cheats
description:
- '&#adb5bdKillaura, fly, x-ray, speed,'
- '&#adb5bdавтокликер и другие модификации'
chat:
name: '&#ffd43bНарушение чата'
icon: WRITABLE_BOOK
priority: 1.5
ask-comment: false
template: insult
description:
- '&#adb5bdОскорбления, мат, флуд, спам,'
- '&#adb5bdреклама сторонних проектов'
griefing:
name: '&#ffa94dГриферство'
icon: TNT
priority: 2
ask-comment: true
template: grief
description:
- '&#adb5bdРазрушение чужих построек,'
- '&#adb5bdкража, порча территории'
bugs:
name: '&#da77f2Использование багов'
icon: COMMAND_BLOCK
priority: 2
ask-comment: true
template: bugs
description:
- '&#adb5bdДюп, использование уязвимостей'
nickname:
name: 'Bd9e8Неприемлемый ник/скин'
icon: NAME_TAG
priority: 1
template: nickname
description:
- '&#adb5bdОскорбительный ник или скин'
other:
name: '&#adb5bdДругое'
icon: PAPER
priority: 1
ask-comment: true
require-comment: true
description:
- '&#adb5bdОпишите нарушение в комментарии'
# ─────────────────────────────── Рейтинг репортёров ───────────────────────
# Рейтинг растёт за подтверждённые жалобы и падает за ложные.
# От уровня зависят приоритет жалоб игрока в списке модератора и его кулдаун.
rating:
enabled: true
default: 100
min: 0
max: 1000
on-accepted: 5
on-rejected: -10
on-expired: 0
# Игроки с рейтингом ниже не могут отправлять жалобы
block-below: 20
tiers:
trusted:
min: 200
name: <shadow:#0a2b10:0.9>Edb7c&lНадёжный</shadow>
priority-multiplier: 2.0
cooldown-multiplier: 0.5
good:
min: 130
name: 'Edb7cХороший'
priority-multiplier: 1.5
cooldown-multiplier: 0.75
normal:
min: 70
name: '&#adb5bdОбычный'
priority-multiplier: 1.0
cooldown-multiplier: 1.0
doubtful:
min: 40
name: '&#ffa94dСомнительный'
priority-multiplier: 0.6
cooldown-multiplier: 2.0
unreliable:
min: 0
name: '&#ff5c5cНенадёжный'
priority-multiplier: 0.3
cooldown-multiplier: 4.0
# ─────────────────────────────── Наказания ─────────────────────────────────
punishments:
# Объявлять наказания всем игрокам (флаг -s / «тихо» — только персоналу)
broadcast: true
broadcast-revoke: true
silent-flag: -s
# Заменять активный бан/мут новым (иначе — ошибка «уже наказан»)
replace-existing: true
allow-self: false
# Срок предупреждения по умолчанию (через сколько варн «сгорает»)
warn-expire: 30d
# Снимать все варны после автонаказания (тогда следующие пороги warn-thresholds не сработают)
clear-warns-on-threshold: false
# Ссылка на обжалование — {appeal} в экранах бана
appeal-url: discord.gg/yourserver
log-to-console: true
login-check-timeout-ms: 5000
# Не пускать игроков, если БД недоступна при входе
deny-login-on-error: false
# Уведомлять персонал, если игрок зашёл с IP забаненного аккаунта
alt-alert: true
alt-alert-sound: block.note_block.bass 1 0.5
# Команды, заблокированные в муте
muted-blocked-commands:
- msg
- tell
- w
- m
- r
- reply
- pm
- whisper
- me
- say
- mail
- ac
- helpop
# Дополнительные команды от консоли после наказания каждого типа ({player}, {reason}, {duration}, {id}...)
commands-on:
ban: []
ipban: []
mute: []
warn: []
kick: []
# Подсказки причин в автодополнении команд
suggested-reasons:
ban:
- Читы
- Обход_бана
- Гриферство
mute:
- Оскорбления
- Флуд
- Реклама
warn:
- Капс
- Флуд
- Неадекватное_поведение
kick:
- АФК
- Неадекватное_поведение
# Лимиты сроков для групп персонала (право permission). Значения: срок, perm (навсегда), none (запрещено).
# Если у игрока несколько групп — берётся самый мягкий лимит. Без групп / mekhamod.limit.bypass — без ограничений.
# Шаблоны наказаний лимитами не ограничиваются (у них своё право mekhamod.template.<id>).
limits:
helper:
permission: mekhamod.limit.helper
ban: none
ipban: none
mute: 2h
warn: 7d
moderator:
permission: mekhamod.limit.moderator
ban: 7d
ipban: none
mute: 1d
warn: 30d
senior:
permission: mekhamod.limit.senior
ban: 30d
ipban: 7d
mute: 7d
warn: perm
# ─────────────────────────────── Проверки на читы ─────────────────────────
checks:
# Режим по умолчанию (можно выбрать при вызове: /check <ник> freeze|teleport, в меню — ЛКМ/ПКМ):
# FREEZE — игрок полностью заморожен там, где стоит
# TELEPORT — игрок переносится на точку проверки (teleport.location, ставится командой /check setspot);
# после успешной проверки (или отмены) идёт обратный отсчёт и игрок возвращается на своё место
default-mode: FREEZE
# Время на проверку
duration: 7m
add-time-default: 2m
# Разрешить модератору проверять несколько игроков одновременно
allow-multiple: false
# Блокировка движения в обоих режимах (вращать камеру можно)
freeze: true
# Запрет кликов в инвентаре
block-inventory: true
blindness: false
# Открывать модератору панель проверки при старте
open-panel: true
# Личный чат: сообщения проверяемого видит только проверяющий (и mekhamod.check.spy),
# сообщения проверяющего уходят только проверяемому. Префикс — написать в общий чат.
private-chat: true
global-chat-prefix: '!'
# Команды, разрешённые проверяемому (/check admit разрешена всегда, если allow-admit)
allowed-commands: []
# Признание (/check admit) — обычно наказание мягче
allow-admit: true
# Сколько сообщений игрока сохранять (Discord/AnyDesk и т.п.)
transcript-max-lines: 50
# Напоминание инструкции в чат каждые N секунд (0 — выкл)
reminder-interval-seconds: 30
# CANCEL — отменить проверку и отпустить игрока, CLEAN — засчитать как чистую
on-moderator-quit: CANCEL
# Режим TELEPORT: возвращать игрока на исходную позицию, даже если он наказан
return-after-punish: false
# Сколько строк журнала проверки показывать в меню истории (полный отчёт — /check info <id>)
history-log-lines: 12
# Режим TELEPORT
teleport:
# Перенести к точке и проверяющего (сдвиг по X на moderator-offset блоков)
moderator-too: true
moderator-offset: 2
# Возвращать игрока на место после успешной проверки или отмены
return-after: true
# Обратный отсчёт перед возвратом (секунд, 0 — сразу). Во время отсчёта игрок остаётся замороженным
return-delay-seconds: 5
# Точка проверки (/check setspot — поставить на своей позиции)
location:
world: world
x: 3.5
y: 77.0
z: -67.4
yaw: -89
pitch: 0
title:
interval-seconds: 5
title: <shadow:#3d0000:1><gradient:#ff5c5c:#e03131><b>ПРОВЕРКА НА ЧИТЫ</b></gradient></shadow>
subtitle: <sprite:gui:icon/info> &#f1f3f5Следуйте инструкции в чате c757d|
&#ffd43b{time}
bossbar:
enabled: true
show-moderator: true
# PINK, BLUE, RED, GREEN, YELLOW, PURPLE, WHITE
color: RED
# PROGRESS, NOTCHED_6, NOTCHED_10, NOTCHED_12, NOTCHED_20
style: NOTCHED_10
title: '<sprite:items:item/iron_sword> <shadow:#3d0000:0.9>&#ff5c5c&lПроверка</shadow>
c757d• &#f1f3f5Осталось: &#ffd43b{time} c757d• &#f1f3f5Проверяет: <head:{moderator}>
Bd9e8{moderator}'
title-paused: '<sprite:items:item/clock_00> <shadow:#3d2600:0.9>&#ffa94d&lПроверка
на паузе</shadow> c757d• &#f1f3f5Осталось: &#ffd43b{time}'
sounds:
start: entity.wither.spawn 0.6 1.2
# Итоги проверки: шаблон из punishments.yml (template), тихо ли (silent),
# задержка перед наказанием в тиках (delay-ticks) и команды от консоли
results:
clean:
template: ''
commands: []
cheats:
template: check-cheats
delay-ticks: 40
commands: []
refused:
template: check-refuse
delay-ticks: 40
commands: []
admitted:
template: check-admit
delay-ticks: 40
commands: []
left:
template: check-leave
commands: []
timeout:
template: check-refuse
delay-ticks: 40
commands: []
cancelled:
template: ''
commands: []
afk:
enabled: true
threshold: 60s
max-wait: 15m
start-delay-ticks: 10
on-leave: CANCEL
overhead:
enabled: true
show-to-spies: true
height: 0.35
scale: 0.8
line-width: 260
background: '#0b0d10'
background-alpha: 140
shadow: true
see-through: true
ping-colors:
'80': <#69db7c>
'150': <#ffd43b>
'250': <#ffa94d>
'100000': <#ff5c5c>
lines:
- <shadow:#3d0000:0.9><#ff5c5c><b>{player}</b></shadow>
- '{ping_icon} <#adb5bd>Пинг: {ping_colored} мс'
- '<sprite:items:item/experience_bottle> <#adb5bd>Рейтинг: <#f1f3f5>{rating}</#f1f3f5>
{tier}'
- '<sprite:items:item/writable_book> <#adb5bd>Жалоб: <#ffd43b>{reports}</#ffd43b>
<#495057>| <#adb5bd>Наказаний: <#ff5c5c>{punishments}</#ff5c5c> <#495057>| <#adb5bd>Проверок:
<#66d9e8>{past_checks}'
- '<sprite:gui:icon/info> <#adb5bd>Клиент: <#f1f3f5>{client}'
- '<sprite:items:item/clock_00> <#adb5bd>Осталось: <#ffd43b>{time}</#ffd43b> <#495057>|
<#adb5bd>АФК: <#f1f3f5>{afk}'
lock-rotation: false
# Период статистики модераторов по умолчанию (/mm stats)
stats:
default-period: 30d
- Зависимости
- PlaceHolderApi , LuckPerms
- Команды и права
- /report (/rep, /жалоба, /репорт): отправить жалобу. Право: mekhamod.report
/reports (/жалобы): очередь жалоб. Право: mekhamod.reports
/punish (/pun, /наказать): меню наказаний. Право: mekhamod.punish
/ban, /tempban, /ipban: баны. Права: mekhamod.ban, mekhamod.ipban
/mute, /tempmute, /warn, /kick: муты, предупреждения, кики. Права: mekhamod.mute, mekhamod.warn, mekhamod.kick
/unban, /unmute, /unwarn: снятие наказаний. Права: mekhamod.unban, mekhamod.unmute, mekhamod.unwarn
/history (/история): история игрока. Право: mekhamod.history
/check (/проверка): проверка на читы. Право: mekhamod.check
/rating (/рейтинг): рейтинг игрока. Право: mekhamod.rating
/mekhamoderation (/mm, /modmenu): главное меню модерации. Право: mekhamod.menu