Собираем лестницу донат-групп в LuckPerms: наследование, веса, префиксы, временная выдача с сайта и проверка прав. Чтобы VIP не летал в шахте, а Legend мог открыть свой кит.
Донат продаёт ранги, а ранги держатся на правах. Сделаете группы криво, и через месяц VIP летает в шахте, а купивший «Легенду» не может открыть свой кит. Ниже собираем лестницу донат-групп в LuckPerms с нуля. Самые базовые команды мы уже показывали в статье о приватах и правах, здесь идём глубже.
| Группа | Вес | Наследует | Что добавляет |
|---|---|---|---|
| default | 0 | ничего | спавн, дом, телепорт к другу |
| vip | 10 | default | свой кит, три дома |
| premium | 20 | vip | полёт |
| legend | 30 | premium | лечение и еда по команде |
| helper | 100 | default | мут, кик, просмотр жалоб |
Каждая следующая донат-группа наследует предыдущую. Тогда в legend вы пишете только то, что появилось на этом уровне, а всё нижнее приходит само. Персонал идёт отдельной веткой от default: хелпер не должен бесплатно получать донатные права, а донатер не должен получать мут.
/lp creategroup vip
/lp creategroup premium
/lp creategroup legend
/lp group vip parent add default
/lp group premium parent add vip
/lp group legend parent add premium
/lp group vip setweight 10
/lp group premium setweight 20
/lp group legend setweight 30Вес нужен, когда у игрока несколько групп: по нему LuckPerms решает, какая группа главнее и чьи права побеждают при конфликте. Чем больше число, тем выше группа. Веса ставьте с шагом, как в примере: потом между ними легко вставить новый ранг.
/lp group default permission set essentials.home true
/lp group default permission set essentials.tpa true
/lp group vip permission set essentials.kits.vip true
/lp group vip permission set essentials.sethome.multiple.vip true
/lp group premium permission set essentials.fly true
/lp group legend permission set essentials.heal true
/lp group legend permission set essentials.feed trueЧисло домов для essentials.sethome.multiple.vip задаётся в конфиге Essentials, в разделе sethome-multiple. Кит vip тоже описывается там. Чтобы забрать право, которое пришло по наследству, ставьте его в false в нужной группе.
Не знаете, какое право у команды? Включите /lp verbose on, нажмите команду обычным игроком и посмотрите, какие проверки прошли в чат. Выключить: /lp verbose off.
/lp group vip meta setprefix 10 "&e[VIP] "
/lp group premium meta setprefix 20 "&b[Premium] "
/lp group legend meta setprefix 30 "&6[Legend] "Первое число это приоритет префикса, а не вес группы. Если у игрока несколько групп, показывается префикс с наибольшим приоритетом. Ставьте приоритет равным весу, и путаницы не будет. Кавычки обязательны, иначе пробел после скобки потеряется.
Сам по себе префикс нигде не появится. В чат его выводит чат-плагин через Vault, в таб плагин TAB или плейсхолдер %luckperms_prefix% из PlaceholderAPI. Как это подключить в табе, разобрано в статье про TAB и scoreboard.
/lp user Steve parent addtemp vip 30d accumulate
/lp user Steve parent add legend
/lp user Steve parent remove vipaddtemp выдаёт группу на срок: 30d, 12h, 1w. Флаг accumulate важен для продлений: если у игрока уже есть vip на время, новые 30 дней прибавятся к остатку. Без флага повторная выдача может не продлить срок, а покупатель придёт в поддержку. Навсегда выдаёт обычный parent add.
Сайт доната выдаёт ранг той же командой через RCON: в товаре прописывают команду с подстановкой ника, у каждого сервиса своя. Как устроена автовыдача, мы разбирали в статье про сайт для сервера.
Донат выдавайте черезparent addилиaddtemp, а не черезparent set.setснимает все остальные группы игрока: хелпер купил VIP и перестал быть хелпером.
/lp createtrack donate
/lp track donate append vip
/lp track donate append premium
/lp track donate append legend
/lp user Steve promote donatepromote поднимает игрока на следующую ступень трека и снимает предыдущую. Удобно для товара «доплатить до следующего ранга». Обратно: demote.
Если у вас лобби и выживание за Velocity или BungeeCord, LuckPerms на всех серверах подключают к одной базе MySQL или MariaDB. Это storage-method в config.yml. По умолчанию стоит H2, локальный файл, и у каждого сервера своя отдельная копия прав.
В том же config.yml каждому серверу задают своё имя в ключе server. Тогда право можно дать только на одном из них:
/lp group premium permission set essentials.fly true server=survivalЧтобы правка с одного сервера сразу долетала до остальных, включают messaging-service.
/lp user Steve info: группы игрока и сроки временных./lp user Steve permission check essentials.fly: есть ли право и откуда оно пришло./lp editor: веб-редактор по ссылке в чат. После сохранения он даёт команду, которую нужно выполнить на сервере, чтобы правки применились./spawn и /home.parent set при донате. Слетают остальные группы, включая персонал.addtemp без accumulate. Продление не складывается.* админу. Открывает вообще всё, включая команды, которые никому не нужны. Давайте права списком.Сами группы и права удобнее всего вести командами из этой статьи или через /lp editor. Cloud Panel берёт на себя то, что вокруг. Консоль под рукой, без SSH: команды lp вводятся прямо из панели. config.yml LuckPerms открывается с подписями по-русски, без поиска нужного ключа по файлу. Префиксы, которые вы задали, видно в табе и табло с живым превью. Меню доната собирается конструктором. А любая правка файлов попадает в журнал, и её можно откатить байт в байт.
accumulate, без parent set.config.yml.Хотите держать сервер в одном окне вместе с консолью, табом и меню доната: 3 дня бесплатно, без карты.
Мы делаем сборки, плагины и сайты для серверов Minecraft с 2022 года. Готовое решение ставится на ваш хостинг за вечер, установку делаем бесплатно.