# Работа с PermissionsEx

## Дополнительные ссылки

Скачать плагин: [https://dev.bukkit.org/projects/permissionsex/](https://github.com/PEXPlugins/PermissionsEx/releases)

Документация по плагину: <https://github.com/PEXPlugins/PermissionsEx/wiki>

Выдача групп с помощью PermissionsEx: <https://wiki.mcstudio.su/servers/trends/skyblock#privilegii>

## Работа с группами

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

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

### Создание новой группы

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

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

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

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

### Вес группы

Мы создали новую группу, но при выдачи через команду **/pex user mcstudio group add vip**, у нас всё равно остаётся префикс "Игрок". Нам нужно добавить параметр в **options** - **weight**. Чем ниже вес - тем группа выше. Например,  вес группы 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
```

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

## Работа с правами&#x20;

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

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

### Где найти права

Ни для кого не секрет, что права к каждому плагину хранятся на официальной странице плагинов. Для примера мы рассмотрим [EssentialsX](https://www.spigotmc.org/resources/9089/). Зачастую разработчик оставляет ссылку на Wiki или права (permissions). Дабы не тратить много времени вы можете использовать сочетание клавиш **Ctrl + F** для поиска по странице необходимой информации, в нашем случае нужно Wiki. Переходим на [официальную документацию EssentialsX](https://essentialsx.net/wiki/Improvements.html), в левом углу выбираем "Permissions", нас переместит на [страницу с правами и командами](https://essinfo.xeya.me/permissions.html). Давайте рассмотрим интерфейс данной страницы: "**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 %}

### Выдача прав

Для примера выдадим группе 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

### Запрещаем право

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

```bash

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

### Группа со всеми правами

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mw.mcstudio.su/pex.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
