# Настройка LuckPerms для AdminMode Эта инструкция рассчитана на LuckPerms 5.5.x и стандартный `config.yml`, который поставляется с AdminMode. ## Как AdminMode использует LuckPerms LuckPerms является обязательной зависимостью: без него Paper не загрузит AdminMode. Плагин использует две разновидности групп: - `moder` — постоянная группа обычного модератора. Она разрешает включать AdminMode. - `admin_moder` — временная группа. AdminMode сам добавляет её при входе в режим и удаляет при выходе. - `chief_moder` — рекомендуемая постоянная группа главного модератора. Главный модератор определяется правом `adminmode.chief`, а не названием группы. Не назначайте `admin_moder` игрокам вручную как постоянную группу. Также не добавляйте постоянные группы в `admin_mode.luckperms.groups`: все перечисленные там группы плагин удаляет у игрока при выходе из AdminMode. Проверяйте настройку на игроке без OP. Права `adminmode.use`, `adminmode.admin`, `adminmode.chief` и `adminmode.reload` имеют значение `default: op`, поэтому оператор сервера получит их даже без настроенного LuckPerms. Права самого AdminMode: - `adminmode.use` — вход в режим и открытие панели. - `adminmode.admin` — сильные действия, принудительное отключение режима и `/admfix`. - `adminmode.chief` — управление доступом других модераторов и Creative в режиме, если он разрешён конфигом. - `adminmode.reload` — перезагрузка конфига AdminMode. - `adminmode.special.belzebool` — специальная способность, которая дополнительно привязана в коде к нику `BelzeBool`; обычным группам её выдавать не нужно. ## 1. Установка LuckPerms 1. Скачайте Bukkit-версию LuckPerms 5.5.x. 2. Поместите JAR в папку `plugins/` рядом с AdminMode. 3. Полностью перезапустите сервер. 4. Проверьте из консоли: ```text lp info ``` Команды ниже можно выполнять в консоли без `/` или в игре от имени OP с `/`. Если удобнее работать через браузер, команда `lp editor` открывает официальный веб-редактор LuckPerms. После сохранения изменений редактор выдаст команду, которую нужно выполнить на сервере для применения данных. Команды из следующих разделов дают тот же результат без веб-редактора. ## 2. Создание групп Выполните: ```text lp creategroup moder lp creategroup admin_moder lp creategroup chief_moder ``` Если LuckPerms сообщает, что группа уже существует, это не ошибка — переходите дальше. ## 3. Права обычного модератора Выдайте постоянной группе `moder` право входить в режим: ```text lp group moder permission set adminmode.use true ``` Обычный модератор сможет использовать `/adminmode`, `/adm` и `/am`, но не сможет ограничивать других модераторов или выполнять административные команды повышенного риска. ## 4. Права, доступные только внутри AdminMode Группа `admin_moder` автоматически появляется у игрока после включения режима. Рекомендуемый минимальный набор: ```text lp group admin_moder permission set adminmode.admin true ``` `adminmode.admin` разрешает сильные действия AdminMode, включая принудительное отключение режима другого игрока и `/admfix`. Если сильные действия обычным модераторам не нужны, не выдавайте этот узел. Вход и выход из режима продолжат работать по `adminmode.use`. Права на кнопки наказаний выдаются отдельно. Пример полного набора для временной группы: ```text lp group admin_moder permission set adminmode.punishment.warn true lp group admin_moder permission set adminmode.punishment.unwarn true lp group admin_moder permission set adminmode.punishment.mute true lp group admin_moder permission set adminmode.punishment.unmute true lp group admin_moder permission set adminmode.punishment.kick true lp group admin_moder permission set adminmode.punishment.ban true lp group admin_moder permission set adminmode.punishment.unban true ``` Выдавайте только нужные узлы. `adminmode.punishment.ban` и `adminmode.punishment.unban` позволяют менять доступ игроков к серверу и рекомендуются только доверенным ролям. AdminMode проверяет эти права сам, в том числе когда внешняя команда выполняется от консоли. ### CoreProtect Если установлен CoreProtect и модераторы должны пользоваться его инструментами из панели AdminMode, добавьте необходимые права в временную группу: ```text lp group admin_moder permission set coreprotect.inspect true lp group admin_moder permission set coreprotect.lookup true ``` Rollback и restore меняют мир, поэтому выдавайте их только доверенным сотрудникам: ```text lp group admin_moder permission set coreprotect.rollback true lp group admin_moder permission set coreprotect.restore true ``` Не используйте `coreprotect.*`, если модератору не нужен полный доступ к CoreProtect. ### InvSee и команды наказаний AdminMode вызывает команду `invsee` от имени модератора, поэтому право на неё зависит от установленного у вас плагина инвентарей. Добавьте соответствующий permission этого плагина в `admin_moder`. По умолчанию команды warn, mute, ban и kick выполняются от консоли: ```yaml moderation_actions: dispatch_as_console: true ``` При такой настройке отдельные права на команды наказаний модератору не нужны. Если установить `dispatch_as_console: false`, эти команды начнут выполняться от имени игрока, и их permissions также потребуется выдать группе `admin_moder`. Чтобы узнать неизвестное право конкретной команды, используйте LuckPerms verbose: ```text lp verbose command <ник_модератора> "invsee <ник_цели>" ``` ## 5. Главный модератор Пусть `chief_moder` наследует обычную группу и получает специальные права: ```text lp group chief_moder parent add moder lp group chief_moder permission set adminmode.chief true lp group chief_moder permission set adminmode.reload true ``` - `adminmode.chief` разрешает ограничивать и восстанавливать доступ других модераторов, смотреть статус ограничений и использовать Creative внутри AdminMode, если это разрешено конфигом. - `adminmode.reload` разрешает `/adminmode reload`. Не добавляйте `admin_moder` как родителя `chief_moder`, иначе временные права будут действовать у главного модератора постоянно. ## 6. Назначение игроков Обычный модератор: ```text lp user <ник> parent add moder ``` Главный модератор: ```text lp user <ник> parent add chief_moder ``` Используется `parent add`, а не `parent set`, чтобы случайно не удалить другие существующие группы игрока. Примеры: ```text lp user Steve parent add moder lp user Alex parent add chief_moder ``` ## 7. Конфигурация AdminMode Проверьте файл `plugins/AdminMode/config.yml`: ```yaml admin_mode: luckperms: enabled: true groups: - "admin_moder" remove_on_disable: true groups: base: "moder" admin: "admin_moder" chief: "chief_moder" ``` Рекомендации: - Оставьте `enabled: true`. - Оставьте `remove_on_disable: true`, чтобы временные группы снимались при выходе игрока из режима. - Значение `groups.admin` должно совпадать с основной временной группой. - В `admin_mode.luckperms.groups` перечисляйте только группы, которые должны выдаваться временно. - `groups.base` не назначает игроку группу автоматически. - Название `groups.chief` само по себе не даёт полномочий: обязательно право `adminmode.chief`. После изменения конфига выполните: ```text adminmode reload ``` или перезапустите сервер. ## 8. Проверка настройки Проверьте постоянную группу и право игрока: ```text lp user <ник> info lp user <ник> permission check adminmode.use ``` Затем зайдите на сервер этим игроком: 1. Выполните `/adminmode on`. 2. Проверьте группы командой `lp user <ник> parent info` — должна появиться `admin_moder`. 3. Выполните `/adminmode off`. 4. Снова проверьте группы — `admin_moder` должна исчезнуть, а `moder` или `chief_moder` остаться. ## 9. Если временная группа не снялась Удалите её вручную: ```text lp user <ник> parent remove admin_moder ``` После аварийной остановки сервера AdminMode сохраняет активную сессию и продолжает её после следующего входа игрока. Обычно достаточно войти на сервер и корректно выполнить `/adminmode off`. Если команда недоступна, проверьте: ```text lp user <ник> permission check adminmode.use lp user <ник> permission check adminmode.admin lp user <ник> permission check adminmode.chief ``` Официальная документация: [LuckPerms Usage](https://luckperms.net/wiki/Usage), [Command Usage](https://luckperms.net/wiki/Command-Usage), [Verbose](https://luckperms.net/wiki/Verbose).