- Требуется UtilM
- https://mcdev.su/resources/utilm.73/
- Для версий
- 1.8.x-1.21.x
Плагин для Настраиваемых Меню: Удобство и Возможности
Примечание о Команде Открытия Меню
Использование Консольной Команды для Открытия Меню
Используя этот плагин, администраторы могут создать персонализированный и доступный игровой опыт для всех участников.
Конфигурация плагина:
# Плагин: mcMenu (Конфигурабельные меню)
# Версия: 1.8+
#
# Описание:
# Плагин добавляет конфигурабельные меню.
#
# Зависимости: (плагины без которых этот работать не будет)
# - UtilM https://mvn.vepvep.com/minecraft/me/socrum/minecraft/spigot/plugin/utilm (utilm-x.x.x-jar-with-dependencies.jar)
#
# Опциональные зависимости: (плагины без которых не будет полного функционала, но работать будет)
# - Vault https://www.spigotmc.org/resources/vault.34315/
# Примечание:
# Команда "/menu open (название файла меню)" может быть выполнена игроком, но если в этом меню
# действует проверятель разрешения на открытие, то меню может и не открыться написав сообщение.
#
# Команда "/menu open (название файла меню) (ник игрока онлайн)" предназначена для выполнения консолью и в любом
# случае требудет разрешение на ее выполнение из секции конфигурации "permission.open_menu_to_player", но в свою
# очередь позволяет открыть любое меню игроку принудительно, даже если у него нет описанного в меню разрешения.
message:
reload_success: "&aПлагин перезагружен!"
permission_denied: "&cОтказано в доступе."
this_command_is_only_available_in_game: "&cЭта команда доступна только в игре."
menu_with_specified_id_does_not_exist: "&cМеню с ID: '&b%id%&c' не существует."
player_is_not_online: "&cЭтот игрок сейчас не онлайн."
economy_plugin_not_found: "&cПлагин на экономику отсутствует или не поддерживается."
help:
- "&e/menu reload &7- перезагрузить плагин"
- "&e/menu help &7- показать список команд"
- "&e/menu open &b(название файла меню) &7- открыть меню по названию файла"
- "&e/menu open &b(название файла меню) &b(ник игрока онлайн) &7- открыть меню другому игроку по названию файла"
- "&e/menu igi add &b(придуманный ID) &7- добавить кнопку - внутриигровой предмет держа в руке"
- "&e/menu igi list &7- открыть меню списка кнопок - внутриигровых предметов"
permission:
reload: menu.reload # Разрешение на перезагрузку этого плагина.
open_menu_to_player: menu.open_menu_to_player # Разрешение на открытие меню другому игроку.
menu_igi_add: menu.igi.add # Разрешение на добавление кнопок - внктриигорвых предметов.
menu_igi_list: menu.igi.list # Разрешение на просмотр/удаление списка кнопок - внктриигорвых предметов.
in_game_item_list.yml
in_game_item_list:
- ==: su.mcdev.minecraft.spigot.plugin.mcmenu.ingameitem.InGameItem
itemStack:
==: org.bukkit.inventory.ItemStack
type: DIAMOND_AXE
damage: 780
meta:
==: ItemMeta
meta-type: UNSPECIFIC
enchants:
DAMAGE_ALL: 1
repair-cost: 1
id: custom_axe
menu_1.yml
access_to_open_checker:
enable: false
permission: menu.open.menu_1
message:
permission_denied: "&cОтказано в доступе на открытие меню 1."
# Заголовок меню.
title: "&aНазвание меню 1"
# (Тиков 20 тиков = 1 сек.) Интервал перерисовки меню.
# Значения 0 и ниже включая -1 и тд. отключают отрисовку за исключением случаев когда игрок кликает (оптимизация).
update_interval_ticks: 20
# Макет меню.
layout:
# Сетка макета.
grid:
- "_ _ _ _ _ _ _ _ _"
- "_ _ _ A B C _ _ _"
- "_ _ _ _ _ _ _ _ _"
layout_item_list: # Список предметов-макета.
layout_item_1: # ID предмета-макета.
# Плейсхолдер предмета-макета который можно использовать на сетке макета.
placeholder: "A"
render_pipeline_component_list:
render_pipeline_component_1:
# Компонент отрисовывающий человеко-читаемый в конфигурации предмет.
# Если вы хотите задавать предметы из игры, пожалуйста ознакомьтесь
# с предметом "B" ниже, он задается командой и почти не требует конфигурации.
type: HUMAN_READABLE_ITEM
# Предмет визуализация этого предмета-макета, PAPI поддерживается.
item:
material: ENDER_PEARL # Тип материала кнопки.
# Используйте материалы версии ядра на котором запускаете плагин (по умолничаю: 1.8.8).
# Списки всех материалов для каждой версии:
# https://helpch.at/docs/1.8.8/org/bukkit/Material.html
# https://helpch.at/docs/x.x.x/org/bukkit/Material.html
# ...
display_name: "&bТелепорт на спавн" # Название кнопки.
description: # Описание кнопки.
- "&7Замечательный кнопочный телепорт который направит"
- "&7вас прямиком на спавн, держись, сейчас начнется!"
- ""
- "&eКликните чтобы телепортироваться!"
click_pipeline_component_list:
invoke_console_command_list:
# Компонент выполняющий команды от имени консоли.
type: INVOKE_CONSOLE_COMMAND_LIST
# Список команд которые будут выполнены консолью.
# Встроенные плейсхолдер %player% будет заменен на ник игрока нажавшего на эту кнопку.
# PAPI относительно нажавшего игрока поддерживается.
console_command_list:
- "minecraft:tell %player% &aконсольная &aкоманда &a1"
- "minecraft:tell %player% &bконсольная &bкоманда &b2"
invoke_player_command_list:
# Компонент выполняющий команды от имени игрока.
type: INVOKE_PLAYER_COMMAND_LIST
# Список команд которые будут выполнены игроком.
# Встроенные плейсхолдер %player% будет заменен на ник игрока нажавшего на эту кнопку.
# PAPI относительно нажавшего игрока поддерживается.
player_command_list:
- "spawn"
play_sound:
type: PLAY_SOUND
# Воспроизводимый звук при нажатии.
# Используйте звуки версии ядра на котором запускаете плагин (по умолничаю: 1.8.8).
# Списки всех звуков для каждой версии:
# https://helpch.at/docs/1.8.8/org/bukkit/Sound.html
# https://helpch.at/docs/x.x.x/org/bukkit/Sound.html
# ...
play:
sound: CLICK
sound_category: MASTER # 1.12+
volume: 1.0 # Громкость (от 0.0 до 2.0).
pitch: 1.0 # Искажение (от 0.0 до 2.0).
layout_item_2:
placeholder: "B"
render_pipeline_component_list:
in_game_item:
# Компонент отрисовывающий кнопку за основу которой взят предмет из "/menu igi list".
type: IN_GAME_ITEM
# ID предмета из "/menu igi list", (добавить туда предмет "/menu igi add (придуманный ID)").
in_game_item_id: "custom_axe"
name_changer:
# Компонент который заменяет название предмета отрисованного предыдущим компонентом.
type: NAME_CHANGER
# Новое название.
display_name: "&aЗамененное название"
description_changer:
# Компонент который заменяет описание предмета отрисованного предыдущим компонентом.
type: DESCRIPTION_CHANGER
# Новое описание.
description:
- "&bЗамененное"
- "&cописание"
click_pipeline_component_list:
check_permission_1:
# Компонент проверяющий у кликнувшего наличие разрешения.
type: CHECK_PERMISSION
# Проверяемое разрешение.
permission: "example.permission-1"
# Любой "type: CHECK_PERMISSION" компонент может иметь список из
# "permission_denied_click_pipeline_component_list" компонентов.
# Это замечательно когда например необходимо при отсутствии разрешения
# выполнить другую цепочку действий или например отправить другие сообщение и звук.
permission_denied_click_pipeline_component_list:
send_message:
type: SEND_MESSAGE
message: "&cНельзя нажать по выдуманной причине 1."
play_sound:
type: PLAY_SOUND
play:
sound: VILLAGER_NO
sound_category: MASTER
volume: 1.0
pitch: 1.0
check_permission_2:
type: CHECK_PERMISSION
permission: "example.permission-2"
permission_denied_click_pipeline_component_list:
send_message:
type: SEND_MESSAGE
message:
- "&cНельзя нажать по выдуманной причине 2."
- "&cВторая строка выдуманной причны 2."
play_sound:
type: PLAY_SOUND
play:
sound: VILLAGER_NO
sound_category: MASTER
volume: 1.0
pitch: 1.0
invoke_console_command_list:
type: INVOKE_CONSOLE_COMMAND_LIST
console_command_list:
- "minecraft:tell %player% &cконсольная &aкоманда &a3"
- "minecraft:tell %player% &dконсольная &bкоманда &b4"
invoke_player_command_list:
type: INVOKE_PLAYER_COMMAND_LIST
player_command_list:
- "afk"
send_message_1:
# Компонент отправляющий сообщение в чат игроку кликнувшему предмет.
# Более удобен в использовании, чем выполнение команды "/minecraft:tell".
type: SEND_MESSAGE
message: "&aСообщение компонента send_message_1."
# Любые компоненты могут повторяться.
send_message_2:
type: SEND_MESSAGE
# Поддерживается мультистрочная отправка сообщения.
message:
- "&bПервая строка сообщения компонента send_message_2."
- "&cВторая строка сообщения компонента send_message_2."
play_sound:
type: PLAY_SOUND
play:
sound: CLICK
sound_category: MASTER
volume: 1.0
pitch: 1.0
layout_item_3:
placeholder: "C"
render_pipeline_component_list:
human_readable_item:
type: HUMAN_READABLE_ITEM
item:
material: STONE
display_name: "&aНеобычный валун"
description:
- "&fОтличный камень."
- ""
- "&7Цена: &a$100"
- ""
- "&eКликните чтобы купить!"
click_pipeline_component_list:
has_money:
# Компоенент который проверяет наличие денег у кликнувшего этот предмет.
type: HAS_MONEY
# Сумма наличие которой проверяется (допускается дробное значение, например 0.25 или 0.5).
amount: 100
# Любой "type: HAS_MONEY" компонент может иметь список из
# "not_enough_money_click_pipeline_component_list" компонентов.
# Это замечательно когда например необходимо при отсутствии денег
# выполнить другую цепочку действий или например отправить сообщение и звук.
not_enough_money_click_pipeline_component_list:
send_message:
type: SEND_MESSAGE
message:
- "&cНедостаточно средств."
play_sound:
type: PLAY_SOUND
play:
sound: VILLAGER_NO
sound_category: MASTER
volume: 1.0
pitch: 1.0
withdraw_money:
# Компонент который списывает денеги у кликнувшего этот предмет.
type: WITHDRAW_MONEY
# Сумма которая будет списана (допускается дробное значение, например 0.25 или 0.5).
amount: 100
invoke_console_command_list:
type: INVOKE_CONSOLE_COMMAND_LIST
console_command_list:
- "minecraft:give %player% stone"
send_message_1:
type: SEND_MESSAGE
message: "&aКамень куплен!"
play_sound:
type: PLAY_SOUND
play:
sound: LEVEL_UP
sound_category: MASTER
volume: 1.0
pitch: 1.0