Skip to content

GUI Template

The accessory panel is described by plugins/EmakiAccessory/gui/accessory_gui.yml.

Slots Must Declare type Explicitly

Accessory cells must declare type: "accessory_slot" explicitly. A cell without type is nothing but decoration.

Available Types

typePurpose
accessory_slotAn accessory cell. The key name must equal a slot instance id.
orphan_slotAn orphan cell showing accessories from slots the page no longer declares, for retrieval.
page_enableAn enable cell. Clicking makes the current page the active one; only the active page's accessories take effect.
page_switchA switch cell. The key name must equal the target page's page_id; clicking opens that page.

One layout can be shared by several pages: gui_template in pages/*.yml points at a layout id. When sharing, note that a placed slot instance must be declared in that page's parts, otherwise the cell is unusable for the page.

accessory_slot

The key name must equal a slot instance id in the form <partId>_<index>, with the index starting at 1 and matching that part's count in parts.yml.

For a ring part with count: 2, place both ring_1 and ring_2:

yaml
slots:
  ring_1:
    slots: [12]
    type: "accessory_slot"
    item:
      source: "LIGHT_GRAY_STAINED_GLASS_PANE"
      components:
        custom_name: "<gray>Ring</gray>"
        lore:
          - "<dark_gray>Insert an accessory to activate</dark_gray>"
  ring_2:
    slots: [13]
    type: "accessory_slot"

Each accessory_slot may occupy only one cell. When several are written, only the first takes effect and the rest are logged as warnings.

Slots declared in parts.yml but not placed here are likewise logged as warnings, and the player cannot use them.

A slot's item section defines the placeholder shown while the slot is empty; it is replaced by the real item once an accessory is inserted.

orphan_slot

Accessories in slots the page no longer declares appear here for the player to retrieve, and cannot be put back once retrieved. Shrinking count in parts.yml, deleting a part, or removing a part from a page's parts all produce orphans.

yaml
slots:
  orphan:
    slots: "37-43"
    type: "orphan_slot"
    item:
      source: "GRAY_STAINED_GLASS_PANE"
      components:
        custom_name: "<gray>"
        tooltip_display:
          hide_tooltip: true

An orphan area may occupy several cells. The check is based on whether the owning page declares the slot, so accessories on other pages are never treated as orphans.

Not placing an orphan area loses nothing: the data stays in the file, but players have no in-GUI retrieval entry point and depend on /eacc retrieve <page> or on the configuration being restored.

page_enable

Clicking makes the currently open page the active one. Only the active page's accessories provide attributes, skills, and set piece counts; other pages keep their data without contributing.

yaml
slots:
  page_enable:
    slots: [8]
    type: "page_enable"
    item:
      source: "lime_dye"

page_switch

The key name must equal the target page's page_id; clicking opens that page. Switching only changes the view, not the active page — clicking page_enable is still required to activate the new page.

yaml
slots:
  main:
    slots: [0]
    type: "page_switch"
    item:
      source: "gold_ingot"
  secondary:
    slots: [1]
    type: "page_switch"
    item:
      source: "iron_ingot"

When the target page declares a permission the player lacks, the switch is refused.

Decorative Cells

Cells without type are pure decoration, such as a frame:

yaml
slots:
  frame:
    slots: "0-8,45-53"
    item:
      source: "BLACK_STAINED_GLASS_PANE"
      components:
        custom_name: "<gray>"
        tooltip_display:
          hide_tooltip: true

Top-Level Keys

KeyExampleDescription
id"accessory_gui"Template id, referenced by gui_template in pages/*.yml.
gui_typeCHESTWindow type.
title"<dark_gray>Accessories</dark_gray>"Window title; MiniMessage is supported.
rows6Row count.
slotsSlot definitions.