1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем InterWall, 9 апр 2018.

  1. Автор темы
    InterWall

    InterWall Старожил Пользователь

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

    Aquinary Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Aquinary
    Пользуюсь им, очень удобен. Правда, использую не браузерную версию и даже не команды в терминале, а yaml формат.
    [​IMG]
    Более наглядно, более быстро и понятно.
    [​IMG]
     
  3. Автор темы
    InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Это да, такой вариант тоже есть. Но я даже не смотрел в его сторону, при наличии веб-редактора, YAML кажется неудобным. Особенно при наличии H2, которая в разы быстрее.
     
  4. NASA__

    NASA__ Активный участник Пользователь

    Баллы:
    66
    Т.е. тупо запустился и держит всё не в одной базе?) Вот это я понимаю - сложна.
    А вообще штука годная, даже жаль, что все о ней заговорили) Пол года-год назад еле нашёл lp в каких-то туторах или обзорах, не помню.
     
  5. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Забыл расписать про конвертацию из PEX.
     
  6. Автор темы
    InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Часть вторая. Префиксы и суффиксы.
    Содержание:
    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.
     
    Последнее редактирование: 19 ноя 2018
  7. Автор темы
    InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Обновил, спасибо что напомнил.
     
  8. bristol

    bristol Активный участник Пользователь

    Баллы:
    46
    Опа, поздновато конечно, так как я сам разобрался уже. Хотя, почитаю, может что нибудь новое узнаю.
    UPD: Узнал о миграции, а я сидел все ручками перекидывал)
     
  9. Aquinary

    Aquinary Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Aquinary
    Пытался в вебинтерфейс - слишком долго и муторно. Проще в файлике забить одну строку и всё.
    Но это фломастеры, чёрт их побери :)
     
  10. Автор темы
    InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Это да, можно намутить с YAML —> H2/MySQL и не переживать по этому поводу. Но опять же, я бы юзал веб-едитор.
     
  11. bristol

    bristol Активный участник Пользователь

    Баллы:
    46
    Мне веб интерфейс удобней кажется. Редко в плагинах такое встречается.
     
  12. Sitmobedaf

    Sitmobedaf Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    SiT
  13. Roots

    Roots Активный участник Пользователь

    Баллы:
    76
    ТС. А как же с YAML переместить все в mysql ?
     
  14. bristol

    bristol Активный участник Пользователь

    Баллы:
    46
    LuckPerms лучше Пекса в любом случае.
     
  15. MrMagaChannel

    MrMagaChannel Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Ох уж эти динозавры, никогда не отвяжутся от старья.
     
  16. _MasterCapeXD_

    _MasterCapeXD_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Это то, что многие ждали! Молодец!
     
  17. Автор темы
    InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Сделаю, перед банджей про это надо обязательно рассказать.
     
  18. bristol

    bristol Активный участник Пользователь

    Баллы:
    46
    Ого, ты еще про банжу расписать хочешь все?)
     
  19. Автор темы
    InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Часть третья. Форматы хранения.
    Содержание:
    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 для прокси-серверов.
     
    Последнее редактирование: 12 янв 2019
  20. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Продолжай в том же духе! :good:
     

Поделиться этой страницей