Русский

Кастомизация GUI

Начиная с версии аддона 2.1, появилась возможность использовать FrameOpenEvent и FrameTag.

Один из возможных вариантов использовать FrameOpenEvent – это вызов frame в объявлении ивента:

my_gui:
    type: world
    events:
        on frame clanlist open:
        - determine passively cancelled # Отмена ивента с возможностью дальнейшего исполнения скрипта.
        - inventory open d:my_inventory_script # Открытие нашего инвентаря, более подробное описание чуть позже.

Здесь frame задано как clanlist. Список доступных frame'ов можно посмотреть тут.

Другая идея – использование имени класса через JavaReflectedObject:

my_gui:
    type: world
    events:
        on frame open:
        - define frame <context.frame.reflected_internal_object.simple_class_name> # Задаем новую переменную `frame`
        - if <[frame]> == "MainFrame": # Если `frane` == "MainFrame", то:
            - determine passively cancelled # Отмена ивента с возможностью дальнейшего исполнения скрипта.
            - inventory open d:my_inventory_script # Открытие нашего инвентаря, более подробное описание чуть позже.

Пример

MyGUI.dsc
my_gui:
    type: world
    events:
        on frame open:
            - define frame <context.frame.reflected_internal_object.simple_class_name>
            - if <[frame]> == "MainFrame":
                - determine passively cancelled
                - inventory open d:my_inventory_script

my_inventory_gui_world:
    type: world
    events:
        after player clicks big_button_item in my_inventory_script:
        - narrate "<&[base]>Wow! You pressed the button!"
        after player clicks my_inv_gui_cancel_item in my_inventory_script:
        - inventory close

my_inventory_script:
    type: inventory
    inventory: chest
    title: <&9><bold>My Inventory GUI Sample
    gui: true
    slots:
    - [] [] [] [] [] [] [] [] []
    - [] [] [] [] [big_button_item] [] [] [] []
    - [] [] [] [] [] [] [] [] [my_inv_gui_cancel_item]

big_button_item:
    type: item
    material: beacon
    display name: <&2>The Big Button
    lore:
    - <&7>Clan: <&c><player.clan.color_tag>
    - <&7>Your Rank: <clanplayer[player.uuid].rank_display_name>

my_inv_gui_cancel_item:
    type: item
    material: barrier
    display name: <&c>Cancel
    lore:
    - <&7>Click here to not press the button.

Более подробно про кастомное меню описано в Denizen гайдах.

Last updated