Туториал 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. До встречи!
 
Последнее редактирование:
Продолжай в том же духе! 👍
Это то, что многие ждали! Молодец!
Опа, поздновато конечно, так как я сам разобрался уже. Хотя, почитаю, может что нибудь новое узнаю.
UPD: Узнал о миграции, а я сидел все ручками перекидывал)
Т.е. тупо запустился и держит всё не в одной базе?) Вот это я понимаю - сложна.
А вообще штука годная, даже жаль, что все о ней заговорили) Пол года-год назад еле нашёл lp в каких-то туторах или обзорах, не помню.
Большое вам всем спасибо! 👍
PermissionsEx ещё как разрабатывается.
https://github.com/Aeternum-Studios/PermissionsEx
Поэтому, кто очень не хочет переходить на LuckPerms, можно и на PEX остаться. Последнюю стабильную можно скачать здесь - https://github.com/Aeternum-Studios/PermissionsEx/releases
Не заметил подобных перемен. Но после версий PEX 2.0 я не уверен, что кто-либо хочет к нему прикасаться, zml перегнул немножко с нововведениями и переосмыслением. Так перегнул, что до сих пор нормальных доков нет, я молчу уже про прокси (привет лакпермсу от банджи и редиски). Так что необходимость такого проекта ой как под вопросом.
 
Последнее редактирование:
Большое вам всем спасибо! 👍

Не заметил подобных перемен. Но после версий PEX 2.0 я не уверен, что кто-либо хочет к нему прикасаться, zml перегнул немножко с нововведениями и переосмыслением. Так перегнул, что до сих пор нормальных доков нет, я молчу уже про прокси (привет лакпермсу от банджи и редиски). Так что необходимость такого проекта ой как под вопросом.
LP уже сразу был в разы лучше и продолжает развиваться. Пекс свое прожил, пора выбрасывать.
 
Туториал конечно годный, но сейчас понабегут админы школосерверов, которые даже с пексом не могли разобраться, и будут тут петушиться.
 
Туториал конечно годный, но сейчас понабегут админы школосерверов, которые даже с пексом не могли разобраться, и будут тут петушиться.
Админи школо седят на pex Для них это сложно
 
Кстати, для тех кто только что перешёл с pex на lp, будет полезна эта табличка КЛИК
 
Часть четвёртая. BungeeCord.​
Содержание:
  1. Первый раздел
    1. Часть первая. Быстрый старт.
    2. Часть вторая. Префиксы и суффиксы.
    3. Часть третья. Форматы хранения.
    4. Часть четвёртая. BungeeCord.
    5. Часть пятая. Мелкие, но важные детали.
  2. Второй раздел
    1. Часть первая. Локальные и файловые БД.
Приветствую! Сегодня мы будем разговаривать о работе LuckPerms совместно с BungeeCord. Стоит сразу оговориться, что этот рассказ будет длинным (относительно трёх предыдущих) и потребует знания всех предыдущих частей (особенно часть с форматами хранения).

Для начала разберёмся с тем, как выглядит наша сеть. Самая основа, так сказать. В моём случае оно выглядит так:
Untitled Diagram-2.png
Три сервера и один прокси. lobby-сервер идёт как мост, остальные для игры.

Для работы LuckPerms с банджой необходимо установить в config.yml банджи параметр:
ip_forward: true
А также на каждом из серверов в spigot.yml установить:
bungeecord: true
Это стандартные действия для настройки любой банджи. В остальном, со стороны ядра и других плагинов, сервера уже должны быть настроены. На систему прав из config.yml банджи можно не обращать внимания, она самостоятельно отключится после установки LP.
Переходим к LP, здесь нам понадобится установить его на каждый из серверов и на банджу в том числе. Найти файлы для каждой из платформ можно здесь. Скачиваем, устанавливаем, запускаем банджу. Останавливаем банджу, настраиваем в конфиге LP банджи подключение к БД. Подобную операцию производим с остальными серверами, они все должны быть подключены к одной БД. Нет, даже так — настройки подключения к БД ДОЛЖНЫ быть ОДИНАКОВЫМИ на КАЖДОМ сервере.
Для связки по message-channels (которая вам однозначно нужна), необходимо все права хранить в удалённых БД, таких как MySQL, MongoDB, PostgreSQL, MariaDB и др. Никак иначе.
Для синхронизации мы будем использовать messaging-channels. Это система оповещений об изменениях, которая распространяет информацию сразу по всем серверам. Никаких CommandSync и перезагрузок. Поскольку мы используем банджу, установим на каждом сервере (на сервере банджи тоже устанавливаем) этот параметр на:
messaging-channels: bungee
А пока мои сервера перезагружаются объясню про то, как работает LP с банджой. Плагин для банджи получает права самой банджи и других плагинов под ней. Но он не добавляет команды управления и не управляет правами на других серверах. Поэтому необходимо устанавливать LP на каждый сервер отдельно и связывать его с БД, чтобы была общая база для всей сети серверов.
Всё, теперь можно приступать к настройке LP для каждого сервера.

Я уверен, что в первой части некоторые обратили внимание на поле "Server" в веб-редакторе:
Снимок экрана 2018-04-09 в 1.33.31.png
Здесь по-умолчанию будет стоять global. Чтобы этот параметр работал так, как нам надо, стоит изменить настройки LP по этой инструкции. Сервера у меня три, назову я их согласно табличке выше. Для банджи там автоматически установлено название bungee.
Всё, теперь перезапускаем наши сервера и вперёд!
Давайте добавим что-нибудь на сервер creative. Судя по названию там должен быть доступен gamemode для обычных игроков. Так и сделаем, удобнее будет провернуть такое через редактор.
А поскольку у нас ещё и банджа, стоит добавить некоторые команды от неё, например /server. Получится что-то вроде:
Снимок экрана 2018-04-10 в 23.53.31.png
Небольшое уточнение. Команды от банджи будут работать только тогда, когда установлены на сервер самой банджи (здесь это сервер "bungee"). Настроить права и команды банджи для каждого сервера отдельно не получится, проблема в механизме работы команд и прав BungeeCord.
Применим изменения (не имеет значения на каком сервере это сделать, messaging-service сразу оповещает об этом всех). Проверка покажет, что на серверах везде работает команда /server, а на сервере creative появилась команда /gamemode.
Попробуем что-нибудь посложнее. Скажем, добавим кастомный префикс для игроков сервера survival. Делается это очень просто, достаточно уточнить сервер после команды на добавление префикса. Как-то так:
Код:
/lp group <группа> meta addprefix <вес> "<префикс>" server=<сервер>
Но с одним важным условием — вес должен быть выше, чем у другого префикса. У меня уже есть префикс с весом 10, значит дополнительный префикс для сервера будет иметь вес 11:
/lp group default meta addprefix 11 "&c[C] &f" server=survival
Всё, теперь на сервере survival у обычных игроков префикс будет отличаться:
Снимок экрана 2018-04-11 в 0.16.37.png
Думаю, что на сегодня этого вполне достаточно. Как всегда, с вами был InterWall. Не знаю, будем ли говорить о чём-либо завтра, но хочется обсудить выдачу временных прав.
 
Последнее редактирование:
Только поставил LP на KCauldron 1.7.10 ничего не трогал, при попытке входа ошибка:lperror.jpg
 
вот лог
 

Вложения

  • latest.txt
    latest.txt
    269,6 КБ · Просмотры: 16
Кажется в Термосе нету Google Guava, вот и жалуется.
Что в таком случае делать? Установить его туда? Или поменять ядро? Или забить и поставить pex? Если что термос от сашка для лаунчера v3
 
Что в таком случае делать? Установить его туда? Или поменять ядро? Или забить и поставить pex? Если что термос от сашка для лаунчера v3
Странная вещь, он должен подгружать нужные либы сразу после запуска. Создаёт папку lib в папке плагина и там уже всё появляется. Сейчас проверю.
 
Да, действительно. Проблема есть, частично решаема, но поддержки от автора для бакит-фордж ниже 1.8 не будет. Lucko настойчиво советует выбрасывать всякие бакит-фордж костыли и использовать sponge, Так что да, либо обновлять сервер, либо ставить PEX.
 
@InterWall , Спасибо за такой подробный гайд! Тем, кто LuckPerms уже использует какое-то время, он не пригодится, но что бы переубедить PEXоДрочеров в устарелости PEX'а, пойдёт. 👍
 
@InterWall , Спасибо за такой подробный гайд! Тем, кто LuckPerms уже использует какое-то время, он не пригодится, но что бы переубедить PEXоДрочеров в устарелости PEX'а, пойдёт. 👍
Для этого и делалось. 😉
Те, кто уже перешёл, сделали это сами, через вики на гитхабе. Остальным же этот гайд идеально подойдёт для ознакомления с самыми банальными функциями. А вот специфические фичи им расскажут только на английском.
 
Для этого и делалось. 😉
Те, кто уже перешёл, сделали это сами, через вики на гитхабе. Остальным же этот гайд идеально подойдёт для ознакомления с самыми банальными функциями. А вот специфические фичи им расскажут только на английском.
Присоединюсь к благодарностям предыдущих форумчан. LP использую около полугода, но не сильно с настройкой не запаривался, один раз настроил и забыл. После прочтения твоих статей пошел все перенастраивать 🙂 Большое спасибо, жду будущих гайдов от тебя.

Кстати говоря, что за параметр "context" в веб-редакторе? Об этом не упоминалось в твоих статейках.
 
Последнее редактирование:
Присоединюсь к благодарностям предыдущих форумчан. LP использую около полугода, но не сильно с настройкой не запаривался, один раз настроил и забыл. После прочтения твоих статей пошел все перенастраивать 🙂 Большое спасибо, жду будущих гайдов от тебя.
Спасибо. 🙂
Кстати говоря, что за параметр "context" в веб-редакторе? Об этом не упоминалось в твоих статейках.
О, context это очень интересная вещь, но в ней разбираться лучше самому. https://github.com/lucko/LuckPerms/wiki/Context
 
Супер, давно пора! Хвалю автора 👍 Буду всех знакомых сюда посылать, надоело разъяснять каждому по отдельности преимущества LP 😉
 
Назад
Верх