# Создание привилегий через PermissionsEx

Создавать привилегии на сервера Minecraft можно с помощью плагинов на права. Мы разберем создание привилегий с помощью [PermissionsEx ](https://dev.bukkit.org/projects/permissionsex)и [LuckPerms](https://luckperms.net/).

## PermissionsEx

### Работа с группами <a href="#group-work" id="group-work"></a>

Файл **permissions.yml** с правами и группами игроков находится в **plugins/PermissionsEx/**. Ниже приведен пример простой группы у которой нет никаких прав. **#** - комментарии к каждой строке.

```
groups: #Группы, с данной строки начинается перечисление существующих групп
  default: #Название группы. Именно оно будет использоваться для выдачи группы.
    permissions: #Список прав, каждое новое право выводится по примеру ниже
    - modifyworld.* #Право
    options: #Опции групп. Например, вы можете сделать эту группу по умолчанию
      default: 'true' #True - означает, что новые игроки будут 
                      #получать данную группу при входе на сервер
      prefix: '&7Игрок &f' #Префикс, который будет выводиться в плагинах с поддержкой Vault
      suffix: '&r' #Суффикс, который будет выводиться в плагинах с поддержкой Vault
    inheritance: [] #Наследование прав от других групп
```

### Создание новой группы <a href="#creating-a-new-group" id="creating-a-new-group"></a>

Предположим, что нам нужна новая группа, с названием vip - она наследует права default и имеет собственный префикс:

```bash
  vip:
    inheritance:
    - default
    permissions:
    - mcstudio.vip
    options:
      prefix: '&9[Вип] &f'
      default: false
```

Как мы видим, группа **vip** будет наследовать права из группы **default**, с помощью **inheritance**.&#x20;

{% hint style="info" %}
Не нужно переписывать права из предыдущей группы, если идёт наследование предыдущей группы, это сократит объем файла и вам будет проще работать с ним
{% endhint %}

### Вес группы <a href="#group-weight" id="group-weight"></a>

После создания новой группы при выдаче через команду **/pex user mcstudio group add vip** всё равно остаётся префикс "Игрок". Нужно добавить параметр в **options** - **weight**.&#x20;

Чем ниже вес - тем группа выше. \
Например,  вес группы default 100, а у группы vip 95, то группа vip будет выше, чем группа default. Таким образом можно установить необходимый приоритет между группами.

Как это выглядит:

```bash
 groups:
  default:
    permissions:
    - modifyworld.*
    options:
      default: true
      prefix: '&f[&7Игрок&f] &f'
      weight: 100
    inheritance: []
   vip:
    inheritance:
    - default
    permissions:
    - mcstudio.vip
    options:
      prefix: '&9[Вип] &f'
      default: false
      weight: 95
```

Это основные параметры, которые необходимы для полноценной работы групп. Перейдём к настройке самих прав.

### Работа с правами  <a href="#working-with-rights" id="working-with-rights"></a>

Каждое право вписывается с новой строки, учитывайте синтаксис, чтобы не было лишних пробелов или символов.

{% hint style="danger" %}
Перед сохранением файла проверьте его на наличие ошибок! Если в нём будут ошибки, то ваши права и группы не будут работать. Проверку можно [сделать тут](https://yaml-online-parser.appspot.com/). В левую часть вставляете содержимое документа, в правой у вас выводятся ошибки. Если их нет, то вам выведет документ в json формате.
{% endhint %}

### Где найти права <a href="#search-for-rights" id="search-for-rights"></a>

Права к каждому плагину хранятся на официальной странице плагина. Для примера мы рассмотрим [EssentialsX](https://www.spigotmc.org/resources/9089/).

Зачастую разработчик оставляет ссылку на Wiki или права (permissions). Дабы не тратить много времени вы можете использовать сочетание клавиш **Ctrl + F** для поиска по странице необходимой информации.

Переходим на [официальную документацию EssentialsX](https://essentialsx.net/wiki/Improvements.html), в левом углу выбираем "Permissions", и попадаем на [страницу с правами и командами](https://essinfo.xeya.me/permissions.html).

![](https://3766306196-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M6fIqTa-jPjn4ArmkJn%2F-M_BaGhixvx8ca85VAtk%2F-M_BcNsuNi8pj7OeNiF9%2Fimage.png?alt=media\&token=e4720070-3cac-4a25-be54-23c4953abf63)

Если рассматривать интерфейс данной страницы, то:

— "**Module**" - модуль в котором есть это право либо команда, например, для использования права "essentials.build" нужно установить модуль EssentialsAntiBuild, он идёт в архиве с самим Essentials;\
— "**Command**" - какая команда отвечает за это право, здесь отображается основная команда, но не алиасы, алиасы для команд можете [найти тут](https://essinfo.xeya.me/commands.html);\
— "**Permissions**" - право, которое нужно для работы команды, но не всегда одного права хватает для этой работы, например, чтобы заработало право "essentials.afk.auto", нам нужно и право "essentials.afk";\
— "**Description**" - краткое описание команды, более детальное описание лучше смотреть на отдельной странице с меню. Используйте поиск для более быстрого поиска необходимого права.

Не все разработчики используют отдельные сайты либо страницы для команд и прав, кто-то выводится права и команды прямо на странице плагина. Некоторые разработчики размещают описание команд и прав на **GitHub**, и подобных сервисах.

{% hint style="warning" %}
Используйте только официальные источники, из нашего [списка рекомендаций](https://wiki.mcstudio.su/info/safety). При использование плагинов из ненадежных источников, вы можете потерять доступ к серверу или ему могут навредить!
{% endhint %}

### Выдача прав <a href="#issuance-of-rights" id="issuance-of-rights"></a>

Для примера выдадим группе default право на использование команды /spawn, а для vip переключение между режимами выживание и креатива, вот как это будет выглядеть:

```bash
 groups:
  default:
    permissions:
    - modifyworld.*
    - essentials.spawn
    options:
      default: true
      prefix: '&f[&7Игрок&f] &f'
      weight: 100
    inheritance: []
   vip:
    inheritance:
    - default
    permissions:
    - mcstudio.vip
    - essentials.gamemode
    - essentials.gamemode.creative
    - essentials.gamemode.survival
    options:
      prefix: '&9[Вип] &f'
      default: false
      weight: 95
```

Если установить только "essentials.gamemode", то игрок сможет использовать команду /gamemode, но не устанавливать себе необходимый ему режим. Если установить "essentials.gamemode и essentials.gamemode.creative", то игрок может переходить только в /gamemode creative

### Запрещение права <a href="#prohibition-of-the-right" id="prohibition-of-the-right"></a>

Помимо выдачи права, можно и запретить право на использование чего-либо. Например, у нас есть право "essentials.enchantments.\*" на выдачу предметов с любыми чарами, но нам нужно отключить **infinity**, который можно назначить луку. Для этого нам нужно перед правом поставить "-", таким образом это будет означать, что данное право отключено, пример:

```bash

   vip:
    inheritance:
    - default
    permissions:
    - mcstudio.vip
    - essentials.enchantments.*
    - -essentials.enchantments.infinity
    options:
      prefix: '&9[Вип] &f'
      default: false
      weight: 95
```

### Группа со всеми правами <a href="#group-with-all-rights" id="group-with-all-rights"></a>

Чтобы создать группу со всеми правами, ей не нужно назначать наследование (inheritance). Вам нужно просто в permissions указать '\*', вот как это выглядит:

```bash
   operator:
    permissions:
    - '*'
    options:
      prefix: '&4Администратор &f'
      default: false
      weight: 1
```

## LuckPerms

Гайд по созданию привилегий через LuckPerms:

{% content-ref url="creates-lp" %}
[creates-lp](https://wiki.mcstudio.su/info/guide/privileges/creates-lp)
{% endcontent-ref %}
