Player Roles avatar

Player Roles [1.21.6] [1.20.6] [1.19.4]

Роли игроков для Fabric

Это простая реализация, позволяющая назначать пользовательские разрешения игрокам через «роли», подобные Discord. Роли и их разрешения определяются в файле JSON, который можно легко изменять и перезагружать во время выполнения для быстрой итерации.

Файл roles.json находится в директории config (<root>/config/roles.json).

everyone — это роль по умолчанию: каждый игрок будет иметь эту роль, и её нельзя удалить. Другие указанные роли функционируют как переопределения поверх роли everyone.

Переопределения

В каждом объявлении роли мы перечисляем набор переопределений. Переопределения — это общая система, которую этот мод использует для изменения поведения игры на основе ролей. В настоящее время поддерживаемые типы переопределений: commands, name_decoration, chat_type, mute, command_feedback, permission_level и entity_selectors.

Важно учитывать, как применяются переопределения, когда несколько ролей нацелены на одни и те же вещи. Подобные конфликты разрешаются путем выбора роли с наивысшим уровнем. Так, в примере: хотя everyone объявляет все команды, кроме help, запрещенными, поскольку admin и spectator имеют более высокие уровни, они переопределят это поведение.

Команды

Переопределение commands используется для управления командами, которые игрок может использовать. Каждая запись переопределения задает шаблон регулярного выражения для сопоставления, а затем стратегию, как реагировать, когда мод встречает этот шаблон.

Например, шаблон .* соответствует каждой возможной команде, а gamemode (spectator|adventure) будет соответствовать команде gamemode только с режимами spectator и adventure. Стратегии, которые можно использовать вместе с этими шаблонами, — allow и deny: allow обеспечит, что игроку разрешено использовать эту команду, а deny предотвратит использование команды игроком.

Например:

"commands": {
  "gamemode (spectator|adventure)": "allow"
}

Переопределение commands дополнительно может использовать результат правила hidden, который позволит использовать команду, скрывая её из предложений команд.

Оформление имени

Переопределение name_decoration изменяет способ отображения имен игроков с ролью. Это можно использовать для переопределения цветов имен, а также для добавления текста перед или после имени. Это имеет более низкий приоритет, чем цвета команд scoreboard.

Оформление имени может быть объявлено следующим образом:

"name_decoration": {
  "prefix": {"text": "[Prefix] ", "color": "green"},
  "suffix": {"text": "-Suffix"},
  "style": ["#ff0000", "bold", "underline"],
  "contexts": ["chat", "tab_list"]
}

Три поля могут быть опционально объявлены:

  • style: принимает список типов форматирования текста или hex-цвета
  • prefix: принимает текстовый компонент, который добавляется перед именем
  • suffix: принимает текстовый компонент, который добавляется после имени
  • contexts: принимает набор возможных контекстов, определяющих, где должно применяться это оформление
    • Принимает: chat и tab_list
    • По умолчанию: применяется ко всем возможным контекстам

Типы чата

Переопределение chat_type позволяет заменять оформление сообщений чата для всех игроков с ролью. Это интегрируется с ванильным реестром minecraft:chat_type, который можно изменить с помощью датапака.

Переопределение chat_type просто объявляет chat_type, который должен использоваться:

"chat_type": "minecraft:say_command"

Этот пример заменит все сообщения для игроков с данной ролью, применяя стиль say_command.

Важно отметить, что ванильный реестр типов чата загружается из датапака при запуске сервера и не может быть перезагружен на лету, как конфигурация ролей игроков.

Объявление пользовательских типов чата

Пользовательские типы чата можно объявить с помощью пользовательского датапака в data/<namespace>/chat_type/<name>.

Например, мы можем объявить data/mydatapack/chat_type/admin.json:

{
  "chat": {
    "decoration": {
      "parameters": ["sender", "content"],
      "style": {},
      "translation_key": "%s: %s <- an admin said this!"
    }
  },
  "narration": {
    "decoration": {
      "parameters": ["sender", "content"],
      "style": {},
      "translation_key": "chat.type.text.narrate"
    },
    "priority": "chat"
  }
}

На который затем можно ссылаться в переопределении, например:

"chat_type": "mydatapack:admin"

Уровень разрешений

Переопределение permission_level устанавливает ванильный уровень разрешений для назначенных игроков. Это полезно для взаимодействия с другими модами, а также с ванильными функциями, которые не поддерживаются этим модом.

Уровень разрешений объявляется так:

"permission_level": 4

Заглушение

Переопределение mute функционирует очень просто, предотвращая ввод сообщений в чат назначенными игроками.

Заглушение объявляется так:

"mute": true

Обратная связь команд

По умолчанию все операторы получают глобальную обратную связь, когда другой игрок выполняет команду. Переопределение command_feedback позволяет определенным ролям получать такую же обратную связь.

Обратная связь команд объявляется так:

"command_feedback": true

Селекторы сущностей

Обычно только источники команд с уровнем разрешений два или выше могут использовать селекторы сущностей. Переопределение entity_selectors позволяет определенным ролям использовать селекторы сущностей.

Селекторы сущностей можно разрешить так:

"entity_selectors": true

Другая конфигурация

Роли дополнительно можно применять к командным блокам или исполнителям функций через файл конфигурации. Например:

{
  "commands": {
    "apply": {
      "command_block": true,
      "function": true
    },
    "overrides": {
    }
  }
}

Также может быть полезно, чтобы роль наследовала переопределения от другой роли. Это можно сделать с помощью объявления includes, ссылаясь на другие роли с более низким уровнем. Например:

{
  "foo": {
    "includes": ["bar"],
    "overrides": {
      "commands": {
        ".*": "allow"
      }
    }
  },
  "bar": {
    "overrides": {
      "name_decoration": {
        "style": "red"
      }
    }
  }
}

С этой конфигурацией роль foo унаследует красное name_decoration.

Применение ролей в игре

После внесения изменений в файл roles.json вы можете перезагрузить его, используя команду /role reload.

Все управление ролями осуществляется через команду role с помощью различных подкоманд. Например:

  • role assign Gegy admin: назначает роль admin игроку Gegy
  • role remove Gegy admin: удаляет роль admin у игрока Gegy
  • role list Gegy: перечисляет все роли, примененные к Gegy
  • role reload: перезагружает файл конфигурации roles.json

Требуемые зависимости

Fabric API avatarFabric APImodmuss50

Скачать Player Roles

 
Тип Скачать Версия Загрузчик Обновлено Размер
Releasev1.6.8+1.20.41.20.4Fabric16 декабря 2023272,1 КБ
Releasev1.6.7+1.20.21.20.2Fabric24 октября 2023272,5 КБ
Releasev1.6.6+1.201.20+1 Fabric1 июля 2023232,4 КБ
Release v1.6.5+1.201.20Fabric8 июня 2023138 КБ
Releasev1.6.4+1.19.41.19.3+1 Fabric15 марта 2023136,6 КБ
Releaseplayer-roles-1.6.3+1.19.31.19.3Fabric10 декабря 2022136,7 КБ
Releaseplayer-roles-1.6.11.19.1Fabric27 июля 2022134,3 КБ
Releaseplayer-roles-1.6.01.19Fabric7 июня 2022134,8 КБ
Releaseplayer-roles-1.5.21.18+2 Fabric23 апреля 2022133 КБ
Releaseplayer-roles-1.5.11.18+1 Fabric16 января 2022132,9 КБ
Пожалуйста авторизуйтесь, чтобы оставить свой комментарий.