Перейти к содержимому

Как создать меню

Автор меню

Короткий тур по базовым возможностям. К концу страницы у тебя будет рабочее меню: открывается по команде, на кнопке висит действие, которое забирает деньги и выдаёт предмет.

Все файлы меню - в plugins/AbstractMenus/menus/. Плагин обходит папку рекурсивно, так что вложенные подпапки для организации - ок. Имя файла (без расширения) становится уникальным id меню.

  • Директорияplugins/AbstractMenus
    • config.conf глобальный конфиг плагина
    • Директорияmenus
      • menu.conf создаётся при первом запуске
      • shop.conf
      • Директорияcasino
        • blackjack.conf вложенные папки норм
        • slots.conf
    • variables.db SQLite, не редактировать вручную
  1. Создай файл

    Сделай plugins/AbstractMenus/menus/menu.conf. Два обязательных ключа - title и size.

    menus/menu.conf
    title: "My first menu"
    size: 6
    • title - показывается сверху инвентаря.
    • size - количество строк инвентаря (от 1 до 6).

    Запусти /am reload. В консоли появится:

    [AbstractMenus] Loaded 1 menus
  2. Добавь активатор, чтобы игроки могли открыть меню

    Активатор - всё, что открывает меню: команда, использование предмета, заход на сервер, вход в регион и так далее. Самый простой - command:

    menus/menu.conf
    title: "My first menu"
    size: 6
    activators {
    command: "mymenu"
    }

    /am reload, потом в чате: /mymenu. Откроется пустое меню.

    Пустое меню, которое мы создали

  3. Поставь кнопку

    Кнопки описываются в списке items: [...]. У каждой записи обязательно есть slot и material.

    menus/menu.conf
    title: "My first menu"
    size: 6
    activators {
    command: "mymenu"
    }
    items: [
    {
    slot: 0
    material: DIAMOND_SWORD
    name: "&6Excalibur"
    }
    ]

    Меню с кнопкой Excalibur

  4. Заставь кнопку что-то делать по клику

    Блок click - это список действий. Начни с closeMenu:

    menus/menu.conf
    title: "My first menu"
    size: 6
    activators {
    command: "mymenu"
    }
    items: [
    {
    slot: 0
    material: DIAMOND_SWORD
    name: "&6Excalibur"
    click {
    closeMenu: true
    }
    }
    ]

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

Добавь к предмету блок rules. Если в одном слоте лежит несколько предметов - выигрывает последний, чьи правила прошли:

items: [
{
slot: 0
material: IRON_SWORD
name: "&6Экскалибур"
},
{
slot: 0
material: DIAMOND_SWORD
name: "&6Экскалибур"
rules { level: 10 }
}
]

Игрок 9 уровня видит железный меч. Игрок 10+ уровня - алмазный.

click принимает rules (проверка), а ещё ветки actions и denyActions:

items: [
{
slot: 0
material: DIAMOND_SWORD
name: "&6Экскалибур"
lore: "&7Цена: 100 монет"
click {
rules { money: 100 }
actions {
itemAdd { material: DIAMOND_SWORD, name: "&6Экскалибур" }
takeMoney: 100
}
denyActions {
sound: ENTITY_VILLAGER_NO
}
}
}
]

Что происходит по клику:

  1. У игрока проверяется баланс - есть ли 100 монет.
  2. Если хватает - в инвентарь добавляется Excalibur и списывается 100 монет.
  3. Если нет - проигрывается звук недовольного жителя.

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

Правила в корне меню проверяются до открытия:

title: "Только для админов"
size: 6
rules {
permission: "i.am.admin"
}
denyActions {
message: "&cУ тебя нет прав на это действие!"
}
activators { command: "adminmenu" }

Игроки без i.am.admin получат сообщение вместо меню.