Источник — ссылка
В этой статье я расскажу как настроить плагин под названием ChestCommands. Ниже вы ведите разделы, которые вам помогут в настройке. Настоятельно рекомендую ознакомится с каждым из них.
1.Базовая настройка (введение)
В этом разделе вы узнаете, как структурировано меню и как его изменить. В данном разделе вы узнаете о структуре меню и как правильно его изменять. Пожалуйста, внимательно прочитайте это, прежде чем приступать к дальнейшей настройке!
- Изменение существующего меню
Все меню находятся в папке plugin/ChestCommands/menu/название_меню. Для редактирование откройте файл меню в редакторе (рекомендуется Notepad ++).
- Создание нового меню
Самый простой способ: скопировать и вставить существующее меню, изменить настройки, а также добавить / удалить или отредактировать элементы. В названиях файлов меню не рекомендуется использовать CAPS, большие буквы и т.п, нужно писать маленькими английскими буквами, пример правильного названия — test.yml.
- Настройки меню
Вы можете найти эти настройки в верхней части меню YML-файла, в разделе конфигурации «menu-settings».
name: ‘&1Menu’ (обязательно)
Это имя, которое будет отображаться при открытии меню в качестве названия пользовательского инвентаря. Оно не может быть длиннее 30 символов (включая цвета). В данном параметре вы можете использовать форматирование и менять цвета текста, например, &1Menu — будет выглядеть так — Menu.
rows: 6 (обязательно)
Данный параметр устанавливает количество строк, из которых будет состоять инвентарь меню с элементами. Значение должно быть от 1 до 6 (двойной сундук). Если значение будет выше 6, клиенты игроков не будут отображать строки правильно (скорее всего меню просто будет недоступно).
command: ‘menu’ (необязательно)
Это команда, которая вызывает меню. Используется для открытие меню введя команду в чат, в нашем случае для открытие меню понадобится ввести — /menu. Вы можете использовать несколько команд, разделяя их точкой с запятой, например: ‘menu; m; mainmenu’.
auto-refresh: 5 (необязательно)
Как часто меню будет обновлять свое содержание. Обратите внимание, что деньги автоматически обновляются после каждой транзакции.
open-with-item: (необязательно)
id: ‘wool: 1’ — используется для открытия меню с помощью указного предмета. Может потребоваться data (в нашем случае data — 1).
right-click: true — true, если меню нужно открыть, щелкнув правой кнопкой мыши на предмет.
left-click: false — true, если меню нужно открыть, щелкнув левой кнопкой мыши элемент.
- Предметы меню (элементы)
Не используйте прописные буквы, цветовые коды или символы во внутреннем имени (см. ниже) и помните, что оно не должно совпадать с именем другого элемента в том же меню. Каждый элемент состоит из внутреннего имени (никак не видимого для игроков) и параметров, которые могут назначать команды, название, описание предметов и многое другое. Пример параметров одного предмета (элемента меню):
spawn-item: (уникальное название, которое не будет видно для игрока)
ID: bed (ID предмета, можно указывать как буквами так и цифрами)
COMMAND: ‘spawn’ (команда, которая будет выполнятся при нажатии)
NAME: ‘&aReturn to spawn’ (название, которое будет видно игроку, можно указывать цвета и использовать форматирование)
LORE: (описание предмета)
— ‘This is the lore of the item.’
— ‘These lines appear below the name.’
POSITION-X: 1
POSITION-Y: 1
➥ положение предмета (элемента) в меню
NAME, COMMAND, ID, … называются «параметрами». Каждый элемент может иметь различные параметры. Узнайте больше о каждом возможном параметре можно в разделе №2.
Каждый предмет (элемент) в меню должен иметь как минимум ID, POSITION-X и POSITION-Y.
2. Параметры предметов (элементов меню)
Эта страница содержит список возможных которые, которые можно использовать для каждого предмета (элемента).
Для каждого элемента строго необходимы три параметра: ID, POSITION-X, POSITION-Y.
ID
Идентификатор элемента меню. Вы можете использовать как числовые, так и буквенные идентификаторы, но я рекомендую использовать буквенный для лучшей читаемости. Список идентификаторов: здесь (без учета регистра и нижнего подчеркивания).
Пример:
ID: stone
При желании вы можете использовать data, но тогда всё нужно будет поместить в кавычки.
Пример (10x черная шерсть):
ID: 'wool:15, 10'
POSITION-X и POSITION-Y
Это два из трёх обязательных параметров элементов меню. Они устанавливают положение элемента в меню.
Пример:
POSITION-X: 5
POSITION-Y: 1
NAME
Этот параметр устанавливает отображаемое имя элемента (в первой строке, когда вы наводите на него курсор). Вы можете использовать цветовые коды и символы.
Пример:
NAME: '&6This is a colored name!'
LORE
Данный параметр устанавливает строки, которые появляются под именем. Вы можете использовать цветовые коды и символы.
Пример:
LORE:
- 'Description of the item'
- 'Some other details'
- '&cImportant note'
ENCHANTMENT
Этот параметр устанавливает чары, которые будут появляться на предмете, в основном используются только для эффекта свечения.
Пример:
ENCHANTMENT: 'fire aspect, 1'
Уровень не является обязательным. Вы можете использовать несколько чар, разделяя их точкой с запятой:
Пример:
ENCHANTMENT: 'sharpness, 5; durability, 10; silk touch'
COLOR
Этот параметр устанавливает цвет кожаной брони, не более того. Формат цвета: ‘<red>, <green>, <blue>’. Каждый цвет должен быть между 0 и 255.
Пример:
COLOR: '255, 0, 0'
SKULL-OWNER
Данный параметр устанавливает владельца головы, только если это голова игрока (skull:3). Для отображения различных текстур / текстов головы.
Пример:
SKULL-OWNER: 'Mr_dsa1'
COMMAND
Этот параметр устанавливает команду. Он поддерживает различные команды, которые не будут перечислены здесь. Обычная команда (без префиксов) выполняется от игрока, который щелкнул по значку. С помощью команд можно делать разные магазины и т.п, подробнее смотреть тут.
Пример:
COMMAND: 'spawn'
PRICE
Данный параметр устанавливает цену на предмет (выполнение команды). Команды не будут выполнены, если у игрока, который нажал, недостаточно денег на счету. Пожалуйста, посмотрите здесь, как настроить экономику.
Пример:
PRICE: 100.0
LEVELS
Этот параметр устанавливает цену в уровнях опыта для предметов. Команды не будут выполнены, если у игрока, который нажал, недостаточно уровней. При выполнение уровни игрока будут удалены (как при чаре предмета).
Пример:
LEVELS: 5
REQUIRED-ITEM
Данный параметр устанавливает обязательный предмет, без него команды не будут выполняться. Формат такой же, как у ID. При выполнении команду у игрока будет удаляться указанный предмет из инвентаря.
Пример (30x оранжевое стекло):
REQUIRED-ITEM: 'stained glass:1, 30'
KEEP-OPEN
Этот параметр устанавливает, должно ли меню закрываться после нажатия на элемент (по умолчанию false). Значение может быть как true, так и false.
Пример:
KEEP-OPEN: true
PERMISSION
Данный параметр устанавливает, требуется ли определенное разрешение для щелчка по элементу и выполнения команд. Разрешение может быть выбрано произвольно. Вы можете отрицать это, поставить минус (-) перед разрешением, чтобы потребовать от пользователя не иметь этого разрешения (например: ‘-my.custom.permission’)
Пример:
PERMISSION: 'my.custom.permission'
VIEW-PERMISSION
Точно такое же, как параметр выше, но пользователь без этого разрешения просто не сможет увидеть элемент. Можно отрицать (игроку нужно не иметь разрешения my.custom.permission): ‘-my.custom.permission’.
Пример:
VIEW-PERMISSION: 'my.custom.permission'
PERMISSION-MESSAGE
Данный параметр связан также с разрешением, он изменяет сообщение, когда пользователь нажимает на элемент не имея соответствующего разрешения (стандартное сообщение «no permission» настраивается в config.yml).
Пример:
PERMISSION-MESSAGE: '&cYou must be VIP to use this item!'
3. Действия при нажатии
В данном разделе будут описаны возможные действия при нажатии на элемент меню. Ничего более.
Открытие других меню
Если команда открывает другое меню (меню из из другого плагина), установите KEEP-OPEN: true.
Переменные
Переменные могут использоваться в COMMAND, LORE и NAME.
{player} (будет заменен именем игрока, который нажал на элемент).
{world} (название мира, в котором находится игрок).
{online} (онлайн на сервере).
{max_players} (количество слотов сервера).
{money} (сумма денег, должен быть установлен Vault).
Обычные команды
Команды не должны быть написаны с «/» перед ними, кроме некоторых команд WorldEdit (например //wand). Пример выполнения команды /spawn игроком при нажатии на элемент меню.
Пример:
COMMAND: 'spawn'
Выполнение команд через консоль
Будьте осторожны с этим, так как команда будет выполнятся через консоль сервера. Чтобы выполнить команду из консоли сервера, используйте ‘console:’ перед командой.
Пример:
COMMAND: 'console: say Hello world!'
Выполнение команд как OP
Будьте осторожны с этой командой. Чтобы выполнить команду как OP, поставьте перед командой ‘op:’.
Пример:
COMMAND: 'op: say Hello world!'
Выполнение нескольких команд
Разделите несколько команд точкой с запятой «;». Пример заставляет игрока выполнять команды в следующем порядке: / spawn, затем / me.
Пример:
COMMAND: 'spawn; me I have been teleported to the spawn!'
Вывести сообщение игроку
Как и в предыдущих примерах, поместите ‘tell:’ перед строкой, чтобы отправить ее игроку. Вы можете использовать цветовые коды и символы.
В примере сообщение будет красным.
Пример:
COMMAND: 'tell: &cHello man!'
Сделать объявление
Работает также как и ‘tell:’, только сообщение увидят все игроки.
Пример:
COMMAND: 'broadcast: {player} is awesome!'
Воспроизведение звуков
Звук состоит из трех параметров (обязательный только первый), разделенных запятыми. Формат выглядит так: ‘<soundName>, [pitch], [volume]’
Список звуков: тут.
Пример:
COMMAND: 'sound: ghast scream, 2.0, 0.5'
Выдача предметов
Базовая команда для выдачи предметов. Вы можете изменить только значение данных и количество предметов, для более сложных вещей используйте команду vanilla. В приведенном ниже примере игроку дается 10 черных шерсти (значение data — 15).
Пример:
COMMAND: 'give: wool:15, 10'
Выдача денег
COMMAND: ‘give-money: 100.0’
Данная команда выдаст деньги игроку (100$), который нажал на элемент. Для работы нужен плагин Vault (подробнее об экономике в разделе №4).
Пример:
COMMAND: 'give-money: 100.0'
Открытие других меню
Для открытие другого меню из ChestCommands используйте — ‘open: <filename>’, где <filename> — это имя файла меню. Меню будет открыто, если оно существует и правильно настроено, в противном случае отобразится сообщение об ошибке. Игрокам нужно правильное разрешение, чтобы открыть это меню (подробнее об разрешениях в разделе №6).
Пример:
COMMAND: 'open: example.yml'
Команды BungeeCord
Вы можете использовать ‘server: <target>’. Пр нажатии пользователь попытается подключиться к указному серверу. Если вы не знаете, что такое BungeeCord, игнорируйте этот тип команды.
Пример:
COMMAND: 'server: hub'
Сообщение Dragon Bar (с помощью плагина BarAPI)
Чтобы отправить сообщение для панели вверху (также называемая boss bar), у вас должен быть установлен плагин BarAPI. Формат ‘dragon-bar: <время-в-секундах> | <сообщение>’. В приведенном ниже примере панель будет отображаться в течение 10 секунд для игрока, который щелкнет по элементу, отображая его ник.
Пример:
COMMAND: 'dragon-bar: 10 | &aHello, {player}!'
4. Настройка экономики (игровой валюты)
Требования
Vault (необходимо обновить до последней версии!)
Совместимый плагин на экономику (iConomy, BOSEconomy и т.п.)
Настройка
Поместите Vault и совместимый плагин для экономики в папку ваших плагинов (если они еще не установлены).
Теперь вы можете начать пользоваться параметром PRICE
и действием give-money:
.
5. Таблички с меню
Создание таблички с меню
- Разместите табличку.
- В первой строке напишите [Menu] (вам нужно разрешение «chestcommands.sign»)
- Во второй строке напишите имя файла меню (можно писать без «.yml»).
Проверка
Если меню с табличкой правильно создано, первая строка табличке станет СИНЕЙ.
В случае ошибки первая строка станет КРАСНОЙ, а в чате появится сообщение об ошибке.
5. Специальные символы
Список символов, которые можно использовать по умолчанию, например в командах «tell», в имени и в описании элемента:
<3
= ❤
[*
] = ★
[**
] = ✹
[p] = ●
[v] = ✔
[+
] = ♦
[++
] = ✦
[x] = █
[/] = ▌
[cross] = ✠
[arrow_right] = →
[arrow_left] = ←
[arrow_up] = ↑
[arrow_down] = ↓
Чтобы добавить новые символы, откройте файл placeholder.yml и добавьте новую строку в следующем формате: textToReplace: replaceString
Пример:
[special]: \u2726 Special Item \u2726
Строка выше будет выглядеть так — ✹ Special Item ✹. Вы можете использовать любой символ Unicode.
6. Разрешения (permissions)
Команда | Разрешение (permission) | Описание |
---|---|---|
/chestcommands или /cc | — | Основная команда. Информация о версии, разработчике и помощи. |
/cc help | chestcommands.command.help | Список команд. |
/cc reload | chestcommands.command.reload | Перезагрузка плагина. |
/cc open <file> | chestcommands.command.open | Открывает любое меню напрямую. Вам также нужны разрешения для открытия меню. |
/cc open <file> [ник] | chestcommands.command.open.others | Открывает меню для указного игрока. Разрешения при открытии игнорируются. |
/cc list | chestcommands.command.list | Список правильно загруженных меню. |
— | chestcommands.update | Получать уведомления об обновлениях при подключении. |
— | chestcommands.open.filename.yml | Разрешение на открытие меню (filename.yml — название меню) |
— | chestcommands.economy.bypass | Игнорировать установленную цену. |
— | chestcommands.sign | Требуется для создания табличек с меню. |
7. Покупка / продажа (создание мини-магазина)
Обязательно прочитайте 3 и 4 пункты!
Выдать деньги игроку — ‘COMMAND: ‘givemoney: <number>’.
Забрать деньги у игрока — ‘PRICE: <number>’.
Выдать предмет — ‘COMMAND: ‘give: <id>[:data],[amount]’
Забрать предмет — ‘REQUIRED-ITEM: <id>[:data],[amount]’.
Всё это нужно добавлять в параметры элемента меню.
Примеры:
Покупка предмета
С помощью примера ниже игрок сможет купить 1 алмаз за 100$.
COMMAND: ‘give: 264’
PRICE: 100
NAME: ‘Buy a diamond’
ID: 264
POSITION-X: 1
POSITION-Y: 1
Продажа предмета
С помощью примера ниже продать 64 блоков земли и получить за это 10$.
COMMAND: ‘givemoney: 10’
REQUIRED-ITEM: 3, 64
NAME: ‘Sell dirt’
ID: 3
POSITION-X: 1
POSITION-Y: 1
Также можете посмотреть мое видео:
Ну вот и всё. На этом статья заканчивается. Если у вас будут какие либо вопросы можете писать в группу ВК.