Плагин mcMenu - Кастомные меню в Майнкрафт
mcMenu - Кастомные меню

Плагин mcMenu - Кастомные меню 1.0.9


Требуется UtilM
https://mcdev.su/resources/utilm.73/
Для версий
  1. 1.8.x-1.21.x

Плагин для Настраиваемых Меню: Удобство и Возможности​

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

Примечание о Команде Открытия Меню​

Игроки могут использовать команду /menu open (название файла меню) для доступа к меню. Однако, следует учесть, что при наличии проверок на разрешение открытие меню может не произойти, и игрок получит соответствующее уведомление.

Использование Консольной Команды для Открытия Меню​

Команда /menu open (название файла меню) (ник игрока онлайн) предназначена для выполнения в консоли и требует разрешения из секции конфигурации permission.open_menu_to_player. Эта команда позволяет администраторам открывать меню для любого игрока, вне зависимости от его разрешений, обеспечивая большее управление и гибкость в настройке игрового процесса.

Используя этот плагин, администраторы могут создать персонализированный и доступный игровой опыт для всех участников.

Screen Shot 2024-10-09 at 4.59.16 PM.png
Screen Shot 2024-10-09 at 4.50.19 PM.png
Screen Shot 2024-10-09 at 4.49.11 PM.png


Конфигурация плагина:
YAML:
# Плагин: 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
YAML:
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
YAML:
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
Автор
mcdev
Покупатели
4
Показов
1,578
Первый выпуск
Обновление

Оценки

0.00 звёзд 0 оценок

Другие ресурсы пользователя mcdev

Последние обновления

  1. 1.0.9

    - Добавлена возможность указать список команд в конфигурации меню которые будут открывать это...