Войти или зарегистрироваться

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

InterWall

Старожил
Пользователь
Баллы
173
Имя в Minecraft
InterWall
Часть первая. Быстрый старт.​
Содержание:
Поскольку плагин имеет свойство обновляться, а сидеть на старых версиях ни мне ни вам не хочется, я решил все инструкции разделить на разделы. Каждый раздел пишется для определённой версии плагина и игры, которые упоминаются в первых частях каждого из этих разделов.
  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. До встречи!
 
Последнее редактирование:
Пользуюсь им, очень удобен. Правда, использую не браузерную версию и даже не команды в терминале, а yaml формат.
Screenshot_194.png

Более наглядно, более быстро и понятно.
Screenshot_196.jpg
 
Пользуюсь им, очень удобен. Правда, использую не браузерную версию и даже не команды в терминале, а yaml формат.
Screenshot_194.png

Более наглядно, более быстро и понятно.
Screenshot_196.jpg
Это да, такой вариант тоже есть. Но я даже не смотрел в его сторону, при наличии веб-редактора, YAML кажется неудобным. Особенно при наличии H2, которая в разы быстрее.
 
смог выполнить очень сложную задачу — обойти по всем параметрам привычный всем PermissionsEx
Т.е. тупо запустился и держит всё не в одной базе?) Вот это я понимаю - сложна.
А вообще штука годная, даже жаль, что все о ней заговорили) Пол года-год назад еле нашёл lp в каких-то туторах или обзорах, не помню.
 
Забыл расписать про конвертацию из PEX.
 
Часть вторая. Префиксы и суффиксы.​
Содержание:
  1. Первый раздел
    1. Часть первая. Быстрый старт.
    2. Часть вторая. Префиксы и суффиксы.
    3. Часть третья. Форматы хранения.
    4. Часть четвёртая. BungeeCord.
    5. Часть пятая. Мелкие, но важные детали.
  2. Второй раздел
    1. Часть первая. Локальные и файловые БД.

Приветствую во второй части настройки LP! Здесь мы будем обсуждать такую немаловажную тему, как изменение префиксов/суффиксов в чате.
Только для начала стоит поставить дополнительный плагин для форматирования чата, что-то вроде ChatManager/ChatEx/ChatControl/EssentialsChat и всё в таком духе. А также понадобится Vault. Для описания установки префиксов выбранный плагин не имеет никакого значения, главное, чтобы он присутствовал.

Перед настройкой суффиксов/префиксов стоит сделать небольшое отступление. Если права и группы в LP работают по стандартному принципу а-ля PEX, то с чатом дела немного сложнее. Его прикрутили к такой новой штуке, как meta. Это, своего рода, дополнительные опции группы/игрока (кстати, этот метод работает и для игрока в том числе, просто замените "group <группа>" на "user <игрок>"). Но в meta присутствует другая сложность и называется она вес.
Вес предназначен для того, чтобы плагин не запутался среди доступных группе/игроку meta (тех же префиксов/суффиксов и так далее) и выбрал самую "весомую" среди них. Ведь бывает, что игрок находится сразу в нескольких группах, а префикс нужен только от одной из них. Вот для этого вес и понадобится.
Чем больше вес, тем "весомее" параметр. Скажем, если у игрока есть 2 префикса от групп, имеющих вес:
Код:
[ADMIN]: 20
[DONATE]: 10
В чате будет виден только префикс [ADMIN], поскольку вес у него больше. Надеюсь понятно объяснил.

Как же всё это устанавливать? Можно разными способами — командой, веб-редактором, в самом файле. По мне, самый удобный способ это командой. Кстати, выглядят команды вот так:
Код:
/lp group <группа> addprefix <вес> "<значение>" — добавить префикс
/lp group <группа> addsuffix <вес> "<значение>" — добавить суффикс
/lp group <группа> removeprefix <вес> "[значение]" — удалить префикс
/lp group <группа> removesuffix <вес> "[значение]" — удалить суффикс
Удалять префиксы/суффиксы можно и не указывая значение, достаточно просто указать вес и все совпадающие по весу значения будут удалены.
Для примера добавим в уже существующие на сервере группы префиксы и суффиксы. В моих настройках чата пробелы между ником и префиксом/суффиксом не предусмотрены, поэтому выглядеть это будет так:
Снимок экрана 2018-04-09 в 9.31.19.png

С весом играться можно по-разному, я описал лишь самый примитивный вариант. Но тем не менее он подойдёт для большинства, поскольку прост в использовании и понимании.
С вами был InterWall и в следующий раз мы обсудим работу LuckPerms с BungeeCord.
 
Последнее редактирование:
Опа, поздновато конечно, так как я сам разобрался уже. Хотя, почитаю, может что нибудь новое узнаю.
UPD: Узнал о миграции, а я сидел все ручками перекидывал)
 
Это да, такой вариант тоже есть. Но я даже не смотрел в его сторону, при наличии веб-редактора, YAML кажется неудобным. Особенно при наличии H2, которая в разы быстрее.
Пытался в вебинтерфейс - слишком долго и муторно. Проще в файлике забить одну строку и всё.
Но это фломастеры, чёрт их побери :)
 
Пытался в вебинтерфейс - слишком долго и муторно. Проще в файлике забить одну строку и всё.
Но это фломастеры, чёрт их побери :)
Это да, можно намутить с YAML —> H2/MySQL и не переживать по этому поводу. Но опять же, я бы юзал веб-едитор.
 
Пытался в вебинтерфейс - слишком долго и муторно. Проще в файлике забить одну строку и всё.
Но это фломастеры, чёрт их побери :)
Мне веб интерфейс удобней кажется. Редко в плагинах такое встречается.
 
ТС. А как же с YAML переместить все в mysql ?
 
PermissionsEx ещё как разрабатывается.
https://github.com/Aeternum-Studios/PermissionsEx
Поэтому, кто очень не хочет переходить на LuckPerms, можно и на PEX остаться. Последнюю стабильную можно скачать здесь - https://github.com/Aeternum-Studios/PermissionsEx/releases
LuckPerms лучше Пекса в любом случае.
 
PermissionsEx ещё как разрабатывается.
https://github.com/Aeternum-Studios/PermissionsEx
Поэтому, кто очень не хочет переходить на LuckPerms, можно и на PEX остаться. Последнюю стабильную можно скачать здесь - https://github.com/Aeternum-Studios/PermissionsEx/releases
Ох уж эти динозавры, никогда не отвяжутся от старья.
 
Это то, что многие ждали! Молодец!
 
Часть третья. Форматы хранения.​
Содержание:
  1. Первый раздел
    1. Часть первая. Быстрый старт.
    2. Часть вторая. Префиксы и суффиксы.
    3. Часть третья. Форматы хранения.
    4. Часть четвёртая. BungeeCord.
    5. Часть пятая. Мелкие, но важные детали.
  2. Второй раздел
    1. Часть первая. Локальные и файловые БД.
Приветствую всех вас в третьей части руководства по настройке LuckPerms. В прошлой я обещал рассказать про BungeeCord, но совсем забыл о такой важной вещи, как формат хранения данных. Почему важной? Ну как же, для работы LP в бандже необходимо всё держать в общей БД. Поэтому перенесём прокси на потом и займёмся чем-нибудь попроще. И первое, что мы сделаем, это перечислим все возможные форматы хранения данных:
  • Удалённые БД — размещаются отдельно и требуют настроек подключения. Такой формат понадобится для BungeeCord/LilyPad/RedisBungee или любого другого прокси-сервера.
    • MySQL
    • MariaDB (предпочтительнее использовать её, а не MySQL)
    • PostgreSQL
    • MongoDB
  • Локальные БД — размещаются в папке LuckPerms и "просто работают".
    • H2 (желательно использовать его, а не SQLite)
    • SQLite
  • Текстовые файлы — все права/пользователи/группы/мета в одном файле, который можно редактировать. Дело вкуса, конечно, но я бы советовал использовать локальные БД. Они и быстрее и поломать там что-либо сложнее. Если не редактировать их напрямую, конечно.
    • YAML (.yml)
    • JSON (.json)
    • HOCON (.conf)
Здесь так много всего, но задержимся подробнее на удалённых БД, их настройка в дальнейшем нам понадобится.
У большинства возникнет вопрос именно к MySQL. Если же у вас другая БД и вы об этом знаете, то у вас были на это однозначные причины и настраивать подключение к ним вы уже умеете. Подробнее здесь.
А мы же продолжим работать с MySQL. Процесс его установки я описывать также не буду, гугл вам поможет. Для руководства же мы будем использовать такие параметры:
ip: 127.0.0.1
port: 3306
user: root
pass: root
db: minecraft (utf8_general_ci)

Но перед тем, как подключать плагин к другой БД, стоит выгрузить из него всю информацию о правах/группах/игроках. Делается это очень просто — запускаете сервер и прописываете такую команду:
/lp export <файл>
Файл можно назвать как угодно, главное запомнить название. В моём случае это будет backup.
Снимок экрана 2018-04-10 в 0.03.22.png
В этот файл LP выгрузит все данные в виде команд, которые сможет потом выполнить автоматически. Останавливаем сервер и переходим к настройке хранения через MySQL. Для этого отправляемся в config.yml и ищем там такие строки. Мой сервер MySQL поддерживает MariaDB, поэтому использовать я буду её.
Настроили? Отлично, двигаемся дальше и запускаем сервер. При удачной настройке процесс запуска будет таким:
Снимок экрана 2018-04-10 в 0.20.24.png
А в БД должны появиться таблицы:
Снимок экрана 2018-04-10 в 0.23.41.png
Подключились, теперь стоит применить все наши права и группы, которые мы сохранили в файл backup. Сделать это можно командой:

/lp import <файл>
И все прописанные в файле команды будут применены.
Снимок экрана 2018-04-10 в 0.32.24.png
На этом всё, с вами был InterWall. И в следующий раз, я очень надеюсь, будем говорить о LuckPerms для прокси-серверов.
 
Последнее редактирование:
Продолжай в том же духе! :good:
 
Назад
Верх