Туториал LuckPerms, что это и с чем его едят

Часть первая. Быстрый старт.​
Содержание:
Поскольку плагин имеет свойство обновляться, а сидеть на старых версиях ни мне ни вам не хочется, я решил все инструкции разделить на разделы. Каждый раздел пишется для определённой версии плагина и игры, которые упоминаются в первых частях каждого из этих разделов.
  1. Первый раздел
    1. Часть первая. Быстрый старт.
    2. Часть вторая. Префиксы и суффиксы.
    3. Часть третья. Форматы хранения.
    4. Часть четвёртая. BungeeCord.
    5. Часть пятая. Мелкие, но важные детали.
  2. Второй раздел
    1. Часть первая. Локальные и файловые БД.

Приветствую!
Сегодня мы с вами будем разбирать плагин, который смог выполнить очень сложную задачу — обойти по всем параметрам привычный нам PermissionsEx. Да, это действительно так, LuckPerms технически и функционально выигрывает в любом бою с вышеупомянутым PEX.
Многие сейчас зададутся вопросом:

Дык а зачем он мне? У меня сервер уже долгое время стабильно использует PEX и мне нет резона менять его на что бы то ни было.

Действительно, вас никто, и уж тем более я, не заставляет переходить на LuckPerms. Но время идёт и последние сообщения от разработчика PEX не утешают:
Снимок экрана 2018-04-09 в 0.06.24.png
Сообщение о закрытии разработки, перевод репозитория в read-only и совет перейти на тот же LuckPerms ни о чём хорошем не говорят. Разработка PEX приостановлена на неопределённый срок, а это значит, что ни фиксов, ни обновлений на другие версии, ни поддержки от разработчика больше осуществляться не будет. А проблемы есть:
Снимок экрана 2018-04-09 в 0.13.44.png

Но и у LP есть свои недостатки. Пусть он и работает на всех свежих версиях, а сервера с forge для него могут стать проблемой. Thermos, Cauldron и KCauldron в их нынешнем состоянии (заброшенная разработка и версия 1.7.10) не будут работать с LuckPerms. Вообще. А вот с губкой проблем не будет.

И да, самое важное. LuckPerms теперь не поддерживает вообще ничего, что ниже 1.8.8. Очень важно это помнить и смотреть на версию. И обновляться своевременно.
В обновлении 4.2.58 была возвращена поддержка Minecraft 1.7.10. Не знаю, как это сказалось на работе с forge-совместимыми серверами, поживём — увидим.
Поддержки версий ниже 1.8.8 больше нет.

Разработчик некоторое время назад таки выпустил версию для старых версий. Называется она LuckPerms Legacy и достать её можно на официальном сайте.
Это было небольшое отступление, вернёмся к LuckPerms.


Для настройки и работы LP в этом руководстве использовались:
  • Minecraft 1.12.2
  • PaperSpigot (git-Paper-1389)
  • LuckPerms v4.1.25
  • Java 8 (версии ниже нам не подойдут)
Установка​

Если вы хотите перенести все уже настроенные права из, скажем, того же PEX, прошу в спойлер. Остальные могут его пропустить.
Миграция из PEX отличается от нормальной установки совсем немного. На свой сервер с PEX установите LP, загруженный по ссылке ниже. Но не спешите удалять PEX, после запуска сервера пропишите в чате/консоле команду "/lp migration PermissionsEx", после чего будет запущена процедура миграции. Это перенесёт все ваши настройки из PEX в LP. Здорово? Ещё бы. А теперь можно пройти мимо установки и проследовать к следующему пункту.

Установка довольно проста:
  1. Скачиваем LuckPerms с официальной страницы плагина на Spigot.
  2. Перемещаем загруженный оттуда файл в папку plugins своего сервера. Предварительно удостоверьтесь, что там нет других плагинов на права.
  3. (Пере)запускаем сервер.
Если в plugins появилась папка LuckPerms, значит всё прошло хорошо и плагин запустился.

Настройка плагина​

В папке LuckPerms нас интересует только файл config.yml, к остальному мы притрагиваться не будем. Поскольку BungeeCord мы не используем, настройка будет быстрой и не сложной, и часть параметров можно просто не трогать. Самые важные параметры я описал здесь, остальное лучше изучать самим на LuckPerms Wiki (англ.). В этом руководстве единственный пункт, который я изменю в конфиге, будет "apply-bukkit-default-permissions: false", подробнее про него по ссылке выше.

Настройка прав​

Самая интересная часть. Наверное, самым сложным будет создание групп. Поэтому сразу пишу, как это сделать:
Код:
/lp creategroup <название> — создать группу
/lp deletegroup <название> — удалить группу
Стандартная группа для всех — default. Очень желательно её не удалять, если есть желание её переименовать можно сменить видимое имя командой (потом поймёте зачем):
Код:
/lp group <группа> setdisplayname <имя> — устанавливает отображаемое имя для группы
У меня, в итоге, получилось 3 группы с названиями:
Код:
> lp creategroup admin
[01:04:56 INFO]: [LP] admin was successfully created.
> lp creategroup donate
[01:04:59 INFO]: [LP] donate was successfully created.
> lp group default setdisplayname "Обычные игроки"
[01:11:34 INFO]: [LP] Set display name to Обычные игроки for group default.
> lp group donate setdisplayname "Донат"
[01:11:53 INFO]: [LP] Set display name to Донат for group donate.
> lp group admin setdisplayname "Администраторы"
[01:12:07 INFO]: [LP] Set display name to Администраторы for group admin.

Всё, хватит медлить, переходим к самому интересному. Для настройки прав мы не будем использовать ни редакторы БД, ни текстовые редакторы. Нам понадобится только интернет, веб-браузер (надеюсь это не Internet Explorer) и запущенный сервер с LP на борту. Прописываем команду:
Код:
> lp editor groups
[01:15:49 INFO]: [LP] Preparing a new editor session. Please wait...
[01:15:52 INFO]: [LP] Click the link below to open the editor:
[01:15:52 INFO]: https://luckperms.github.io/editor/?*******
Если вы делаете это в игре — достаточно просто нажать в чате на ссылку https://luckperms.github.io/editor/?******* и она откроется в браузере. Из консоли её можно скопировать строку браузера. Открываем...
Снимок экрана 2018-04-09 в 1.18.54.png
Да, это и есть наша настройка прав. Вверху список наших групп, потом поля для добавления и список добавленных прав.
Не бойтесь вносить правки, они не применятся, пока вы сами не сохраните и не пропишете в игре/консоли необходимую команду. Здесь полная свобода действий.
Для администраторов у нас доступны все права, для донатеров добавим право /say и /me, а обычным юзерам и так хорошо. Хотя лучше будет им запретить все доступные права, а потом добавлять необходимые.
Работают права здесь таким же образом, как и в PEX (кстати, * даёт все права, никаких кавычек не надо). В поле Permission пишем необходимое право и нажимаем справа "+". Всё. Некоторые права LP будет распознавать сам и подсказывать при вводе:
Снимок экрана 2018-04-09 в 1.31.53.png
С добавлением прав всё просто, а как запрещать?
Очень просто. Достаточно добавить право, которое надо запретить, и нажать в его строке на зелёное слово "true", которое сразу же изменится на "false", обозначая запрет.
В результате должно получиться так:
Снимок экрана 2018-04-09 в 1.33.29.png
Снимок экрана 2018-04-09 в 1.33.31.png
Снимок экрана 2018-04-09 в 1.33.33.png
Выглядит замечательно! Но мы совсем забыли про наследование групп. Помните inheritance из пекса? Так вот, здесь это делается тоже добавлением прав для группы. Надеюсь все заметили право displayname с названием группы. Так вот, здесь все параметры решаются через такие же права, как и для игроков. Только не для игроков, а для групп, и не права, а параметры.
Чтобы добавить наследование для группы достаточно будет добавить ей право:
Код:
group.<название наследуемой группы>
В моём случае это будет group.default:
Снимок экрана 2018-04-09 в 1.42.52.png

Всё, с правами мы закончили, давайте сохраним наши изменения. Справа вверху, около стрелок, нажимаем на значок дискеты и появляется сообщение:
Снимок экрана 2018-04-09 в 1.45.38.png
На белом фоне появилась команда (само собой, у вас она будет отличаться), которую необходимо выполнить на сервере, чтобы применить наши изменения. Она сама скопируется, если на неё нажать. Переходим на сервер и выполняем:
Код:
> lp applyedits **********
[01:47:38 INFO]: [LP] Web editor data was applied to admin (Администраторы) successfully.
[01:47:38 INFO]: [LP] (1 addition and 0 deletions)
[01:47:38 INFO]: +  * (true)
[01:47:38 INFO]: [LP] Web editor data was applied to default (Обычные игроки) successfully.
[01:47:38 INFO]: [LP] (1 addition and 0 deletions)
[01:47:38 INFO]: +  * (false)
[01:47:38 INFO]: [LP] Web editor data was applied to donate (Донат) successfully.
[01:47:38 INFO]: [LP] (3 additions and 0 deletions)
[01:47:38 INFO]: +  minecraft.command.me (true)
[01:47:38 INFO]: +  minecraft.command.say (true)
[01:47:38 INFO]: +  group.default (true)
Как видим, все наши изменения применились и теперь права на сервере регулируются по заданным параметрам.
Но у нас осталась проблема. Группа default убирает все права игрока, а группа admin их все обратно добавляет. Почему это проблема? Дело в том, что в LP все группы друг для друга одинаковы, пока не обозначено наследование в группе остаётся одинаковый приоритет для запрета и разрешения. Но не беда, каждый раз лезть в редактор мы не будем. Для наследования также есть команды:
Код:
/lp group <группа> parent add <группа-1> — добавить группе наследование прав из группы-1
/lp group <группа> parent remove <группа-1> — убрать наследование группы от группы-1.
Командой у себя пропишу наследование от donate к admin:
Код:
/lp group admin parent add donate

Добавление игрока в группу​

Здесь всё просто, достаточно будет ввести команду:
Код:
/lp user <игрок> parent add <группа> — добавить игроку группу
/lp user <игрок> parent remove <группа> — удалить игроку группу
/lp user <игрок> parent set <группа> — установить игроку группу и удалить все остальные

На этом всё. Естественно, охватить весь объём LP в одном посте трудно, это самые самые основы, мы с вами даже префиксы/суффиксы не разбирали. Поговорим о них в следующий раз.
А с вами был InterWall. До встречи!
 
Последнее редактирование:
Добрый день, есть ли полная обратная совместимость с PEX?
 
Добрый день, есть ли полная обратная совместимость с PEX?
Если тебе требуется перейти с PeX на LP - ставишь оба плагина и вводишь /lp migration permissionex
А вот обратного варианта, пожалуй, нет пока (а может и не будет)
 
Если тебе требуется перейти с PeX на LP - ставишь оба плагина и вводишь /lp migration permissionex
А вот обратного варианта, пожалуй, нет пока (а может и не будет)
Я имел ввиду другое - будут ли работать дургие плагины, которые рассчитаны на PEX с плагином LP.
Как мне сказал один челоек:
"В большенстве плагинов прямо прописано, например: com.google.PermissionEx.Motion
Такого уровня савмостимость наверняка нет, а плагины переписывать, дело такое"
И вот вопрос - есть ли эта совместимость, или нет.
 
Я имел ввиду другое - будут ли работать дургие плагины, которые рассчитаны на PEX с плагином LP.
Как мне сказал один челоек:
"В большенстве плагинов прямо прописано, например: com.google.PermissionEx.Motion
Такого уровня савмостимость наверняка нет, а плагины переписывать, дело такое"
И вот вопрос - есть ли эта совместимость, или нет.
Такой совместимости и правда скорее всего нет.
 
"В большенстве плагинов прямо прописано, например: com.google.PermissionEx.Motion
Такого уровня савмостимость наверняка нет, а плагины переписывать, дело такое"
Нет, такой совместимости нет.
Но и плагинов, которые напрямую используют PEX API очень мало. В основном это отбитые разрабы, которые не умеют в Vault, или просто новички.
 
Такой совместимости и правда скорее всего нет.
Нет, такой совместимости нет.
Но и плагинов, которые напрямую используют PEX API очень мало. В основном это отбитые разрабы, которые не умеют в Vault, или просто новички.
Спасибо за ответы. Буду уточнять какие именно плагины используют пекс напрямую у Администрации проекта.
 
Как сделать что бы на сервере Survival были свои права (fly, vip, prem) на SkyBlock свои права (vip, prem, deluxe)
Сервера разделил по серверно,как было указано выше с указанием название сервера в конфигах, так же в настройках самих пермишенов указал какие пермишены на какой сервер идут. Цель если игрок покупает vip на сервере Survival, то он только там vip. Если зайдет на SkyBlock, то там обычный игрок, и если тут купит premium то он только прем будет тут на сервере.
Если указываю что выдать vip без указания сервера то выдается глобально.
Если с указанием сервера то вот такое получается:
Код:
lp user dream1erik parent set vip survival
[LP] dream1erik had their existing parent groups cleared, and now only inherits vip in context server=survival.

>lp user dream1erik info
[15:55:47 INFO]: [LP] > User Info: dream1erik
[15:55:47 INFO]: [LP] - UUID: 3193ffc2-de86-3121-91aa-423be20bf6be (type: offline)
[15:55:47 INFO]: [LP] - Status: Offline
[15:55:47 INFO]: [LP] - Primary Group: default
[15:55:47 INFO]: [LP] - Parent Groups:
[15:55:47 INFO]: [LP] -    > default
[15:55:47 INFO]: [LP] -    > vip (server=survival)
[15:55:47 INFO]: [LP] - Contextual Data:
[15:55:47 INFO]: [LP] -    Has contextual data: false
[15:55:47 INFO]: [LP] -    Applicable contexts: None
[15:55:47 INFO]: [LP] -    Prefix: None
[15:55:47 INFO]: [LP] -    Suffix: None
[15:55:47 INFO]: [LP] -    Meta: None

Код:
lp user dream1erik parent set premium
[LP] dream1erik had their existing parent groups cleared, and now only inherits premium in context global.

>lp user dream1erik info
[15:57:01 INFO]: [LP] > User Info: dream1erik
[15:57:01 INFO]: [LP] - UUID: 3193ffc2-de86-3121-91aa-423be20bf6be (type: offline)
[15:57:01 INFO]: [LP] - Status: Offline
[15:57:01 INFO]: [LP] - Primary Group: premium
[15:57:01 INFO]: [LP] - Parent Groups:
[15:57:01 INFO]: [LP] -    > premium
[15:57:01 INFO]: [LP] -    > vip (server=survival)
[15:57:01 INFO]: [LP] - Contextual Data:
[15:57:01 INFO]: [LP] -    Has contextual data: false
[15:57:01 INFO]: [LP] -    Applicable contexts: None
[15:57:01 INFO]: [LP] -    Prefix: None
[15:57:01 INFO]: [LP] -    Suffix: None
[15:57:01 INFO]: [LP] -    Meta: None
Получается что нужно тогда делать отдельные базы данных для серверов и выдавать глобально права. Или все же можно как то через настройки самого luckperms это сделать.
 
Получается что нужно тогда делать отдельные базы данных для серверов и выдавать глобально права. Или все же можно как то через настройки самого luckperms это сделать.
Общая MySQL для всех серверов, никак иначе. Более того, если сервера не связаны в бандже, им надо устанавливать интервал запроса прав из БД (про связанные в банджу я писал в посте, там нужен messaging-service).
Про группы я не увидел ничего странного, в чём проблема то? Выдал на сурвайвл — пометка server=survival, выдал глобально значит глобально повсюду.
 
Почему после миграции с PermissionsEX в базе данных значение "server" остается "global" Хоть я и установил в конфиге LP server: anarchy
Уже даже из файлом contexts пробовал что-то мудрить. 4 часа потратил на все это...... Не могу нормально перейти с пекса на LP хоть и очень хочется.
 
Почему после миграции с PermissionsEX в базе данных значение "server" остается "global" Хоть я и установил в конфиге LP server: anarchy
Уже даже из файлом contexts пробовал что-то мудрить. 4 часа потратил на все это...... Не могу нормально перейти с пекса на LP хоть и очень хочется.
Так, вот отсюда чуть конкретнее. Миграция всё переносит с параметрами сервера global. Если переименовать сервер, то права надо распределить самостоятельно. Где-то на вики может и есть более простой способ, но я не совсем понял проблему.
Начнём сначала — есть база PEX, есть сервер с luckperms, где server=anarchy. Что надо сделать? Желательно с подробностями.
 
Так, вот отсюда чуть конкретнее. Миграция всё переносит с параметрами сервера global. Если переименовать сервер, то права надо распределить самостоятельно. Где-то на вики может и есть более простой способ, но я не совсем понял проблему.
Начнём сначала — есть база PEX, есть сервер с luckperms, где server=anarchy. Что надо сделать? Желательно с подробностями.
Стоит плагин PEX, Он с локальной бд в своем файле. Есть LuckPerms с Подключением к MySql (MaterialBD). В его конфиге установлено server: anarchy. Пишу /lp migration permissionsex оно все копирует, но как сказал выше, в PhPmyadmin смотрел, там server global.
 
Стоит плагин PEX, Он с локальной бд в своем файле. Есть LuckPerms с Подключением к MySql (MaterialBD). В его конфиге установлено server: anarchy. Пишу /lp migration permissionsex оно все копирует, но как сказал выше, в PhPmyadmin смотрел, там server global.
Видимо при миграции все права из PEX рассматриваются как глобальные. Если нужно импортировать только для своего сервера, то придётся ручками всё расставлять. Есть ещё вариант /lp export в файл, где отредактировать параметры сервера и применить /lp import.
 
Видимо при миграции все права из PEX рассматриваются как глобальные. Если нужно импортировать только для своего сервера, то придётся ручками всё расставлять. Есть ещё вариант /lp export в файл, где отредактировать параметры сервера и применить /lp import.
Ну, если у меня 8+ серверов, придётся попотеть) Эх. Все же спасибо.
 
Как временно выдать привилегию?
 
Ребят, можно ли как-нибудь продлить временные разрешения или группы?
Например "/lp user User parent addtemp Group 1m" даст игроку группу на 1 минуту, но никак не получается к текущему (истекающему) времени временной группы добавить ещё времени.
 
Назад
Верх Низ