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

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

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

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

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

    Баллы:
    173
    Часть первая. Быстрый старт.
    Содержание:
    1. Часть первая. Быстрый старт.
    2. Часть вторая. Префиксы и суффиксы.
    3. Часть третья. Форматы хранения.
    4. Часть четвёртая. BungeeCord.
    5. Часть пятая. Мелкие, но важные детали.

    Приветствую!
    Сегодня мы с вами будем разбирать плагин, который смог выполнить очень сложную задачу — обойти по всем параметрам привычный нам 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. Очень важно это помнить и смотреть на версию. И обновляться своевременно.

    Это было небольшое отступление, вернёмся к 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. До встречи!
     
    Последнее редактирование: 24 апр 2018 в 00:46
  2. Mr Hosting
  3. Aquinary

    Aquinary Активный участник

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

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

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

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

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

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

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

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

    Баллы:
    173
    Часть вторая. Префиксы и суффиксы.
    Содержание:
    1. Часть первая. Быстрый старт.
    2. Часть вторая. Префиксы и суффиксы.
    3. Часть третья. Форматы хранения.
    4. Часть четвёртая. BungeeCord.
    5. Часть пятая. Мелкие, но важные детали.

    Приветствую во второй части настройки 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.
     
    Последнее редактирование: 22 апр 2018 в 14:54
  8. Автор темы
    InterWall

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

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

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

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

    Aquinary Активный участник

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

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

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

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

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

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

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

    Roots Новичок Пользователь

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    173
    Часть третья. Форматы хранения.
    Содержание:
    1. Часть первая. Быстрый старт.
    2. Часть вторая. Префиксы и суффиксы.
    3. Часть третья. Форматы хранения.
    4. Часть четвёртая. BungeeCord.
    5. Часть пятая. Мелкие, но важные детали.

    Приветствую всех вас в третьей части руководства по настройке 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 для прокси-серверов.
     
    Последнее редактирование: 22 апр 2018 в 14:54
  21. Cool_boy

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

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

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