Часть пятая. Мелкие, но важные детали.
Содержание:
- Первый раздел
- Часть первая. Быстрый старт.
- Часть вторая. Префиксы и суффиксы.
- Часть третья. Форматы хранения.
- Часть четвёртая. BungeeCord.
- Часть пятая. Мелкие, но важные детали.
- Второй раздел
- Часть первая. Локальные и файловые БД.
Так, а о чём это мы? Ах да, приветствую!
Надеюсь с настройкой банджи все справились (даже если не настраивали, то не страшно, главное было понять). Так вот, сегодня речь пойдёт о более простых вещах, но это ни в коем разе не уменьшает их важность. Приступим.
Ах да, этот пост — перевод из оригинальной статьи. Кому хочется оригинала с примерами — прошу:
https://github.com/lucko/LuckPerms/wiki/Advanced-Setup
Спецификация прав по серверам и мирам
Вспоминаем конфиг, вот так выглядят необходимые нам строки:
Код:
server: global
include-global: true
global — название вашего сервера. Если есть потребность в особых правах для сервера, стоит поставить сюда другое название.
global же это, своего рода, заглушка и называет сервер "никак".
Параметр
include-global уточняет, будут ли на сервере работать права/группы с пометкой
server=global.
Почему это важно помнить? Да потому что эти параметры и помогают с распределением прав и могут выключить её на этом сервере. Ещё раз,
global — заглушка, не название. Если прописать в конфиге
include-global: false и не поменять название сервера, то ЛЮБЫЕ права из системы будут отклоняться.
Подобные уточнения присутствуют везде, это подводит к следующему пункту.
Расчёт прав в системе
И вот здесь начинаются детали:
Специфические для сервера права будут превалировать над глобальными
Здесь всё понятно. Если, допустим, глобально стоит право
fly.use true, но для сервера
survival оно запрещено (
fly.use false) — право с уточнением сервера будет превалировать над общим/глобальным.
Точно такая же схема и для прав по мирам. У прав для мира приоритет выше, нежели у общих.
Временные права приоритетнее, нежели постоянные
Скажем, если игроку временно выдали право
essentials.gamemode.* true, а постоянно у него прописано
essentials.* false, у игрока будет действовать временное право, поскольку оно приоритетнее постоянного.
По времени тоже есть приоритет. Скажем, если выдано несколько одинаковых временных прав с разной длительностью, будет действовать только то, которое с наименьшей длительностью.
Права по шаблонам и RegEx будут замещаться обычными
Сразу объясняю, по шаблону это права со звёздочкой, которые охватывают весь набор прав из категории.
essentials.* это как раз шаблон на все права от Essentials. Так вот, допустим группе доступно право
essentials.* true, но также присутствует право
essentials.me false. Это значит, что будут доступны все права Essentials, кроме
essentials.me. Думаю, подробнее рассмотреть можно только на практике.
Кстати, уточнённые шаблоны, по типу
essentials.gamemode.*, будут заменять собою менее уточнённые. Поэтому
essentials.gamemode.* false будет запрещать, даже если выставлено
essentials.* true.
Особые права конкретно для игрока будут заменять собою общие
Думаю, тут даже писать не стоит. Если в группе прописано
essentials.me true, а у игрока проставлено
essentials.me false — будет работать только то, которое у игрока.
Сокращения
Если предыдущий раздел был о самой работе с правами, то здесь именно об упрощении. Вот представим ситуацию, что в плагине есть права:
Код:
luckperms.user.setpermission
luckperms.user.unsetpermission
luckperms.group.setpermission
luckperms.group.unsetpermission
И мы хотим назначить кого-то, чтобы ему были доступны все эти команды. Вроде бы просто, достаточно прописать ему эти права и всё. И оно на самом деле так и есть, но просто подумайте, во что превратится работа с таблицей прав, если там таких мелких изменений будет много. Представили? Бррр... я бы не хотел такое видеть, вот и автор LP тоже не в восторге. И он придумал сокращения. Весь набор выше можно представить одной строкой, вот так:
Код:
luckperms.(user|group).(setpermission|unsetpermission)
Согласитесь, выглядит гораздо проще. Практическое применение? А вот допустим киты в Essentials, их же много, правда? Каждый раз смотреть на груду прав на киты из start, armor, tools, food... ужас. LP же предлагает их все запихнуть в одну строку вот так:
Код:
essentials.kits.(start|armor|tools|food)
Всё, и никаких 10-15 прав на все киты. Играться можно сколько угодно.
Но есть же сервера, которые с китами на весь латинский алфавит (или на 4 первые буквы, кому как хочется):
Код:
essentials.kits.a
essentials.kits.b
essentials.kits.c
essentials.kits.d
Ну вот и что тут делать? Можно, конечно, методом выше, но это же ерунда. Буквы то мелкие, а строка получится немаленькая. Для таких тоже придумали сокращение:
Легко? Очень, а с цифрами то как легко, можно поступить также. Котовасия прав с цифрами
Код:
prisonmines.teleport.1
prisonmines.teleport.2
prisonmines.teleport.3
prisonmines.teleport.4
...лёгким движением руки превращается...
Код:
prisonmines.teleport.(1-4)
...в элегантную, а главное простую для понимания, строку.
Regex
А вот здесь всё очень сложно, я такой вещью никогда не пользовался. Скажу лишь, что любая строка regex в LP должна начинаться с "R=", а дальше уже по правилам регулярных выражений. Да, все необходимые символы должны экранироваться (эскейп это ещё называют, не знаком с точной терминологией), если так принято в синтаксисе. Вещь это мощная, но может быть сложной в освоении. Проще говоря, много похожих прав можно запихнуть в одну строку. Подробнее про regex можно прочитать на
википедии, или погуглить самим.
Так, я уже сбился, это всё? Похоже да, на сегодня хватит. С вами был InterWall и скоро мы познакомимся с выдачей временных прав, групп и параметров.