> For the complete documentation index, see [llms.txt](https://edseries-plugins.gitbook.io/p/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edseries-plugins.gitbook.io/p/edperks/essential/guis.md).

# GUIs

EdPerks ships two menus in `plugins/EdPerks/guis/`:

| File             | Menu                                | Opened by                              |
| ---------------- | ----------------------------------- | -------------------------------------- |
| `tool-perks.yml` | **Tool Perks** — roll & buy tickets | `/perks`, `/edperks open`              |
| `perk-index.yml` | **Perk Index** — the catalogue      | the "Perks Index" button in Tool Perks |

Both use EdPerks' GUI framework: a `title`, a number of `rows`, an optional `open-sound`, and a `contents` map of items. Items support placeholders, click requirements and [action strings](/p/edperks/extra/action-types.md).

***

## Tool Perks menu (`tool-perks.yml`)

The main menu. It shows the player's live tool in the centre, a roll button, a pity tracker, the perk-index link, and store buttons.

### Menu-level keys

```yaml
title: '&8Tool Perks'
rows: 5
open-sound: 'BLOCK_ENDER_CHEST_OPEN'
internal-gui: 'tool-perks'
on-close-action: '[return]'
tool-slot: 22
animation-slots: [12, 13, 14, 21, 23, 30, 31, 32]
roll-animation-ticks: 60
roll-animation-period: 3
```

| Key                     | Meaning                                                                                                                               |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `internal-gui`          | **Do not change.** Binds this file to EdPerks' built-in Tool Perks logic.                                                             |
| `on-close-action`       | Action run when the menu closes. `[return]` opens the host's home menu (see [Action Types](/p/edperks/extra/action-types.md#return)). |
| `tool-slot`             | The centre slot where the player's held tool is displayed.                                                                            |
| `animation-slots`       | The slots around the tool that the roll animation spins through.                                                                      |
| `roll-animation-ticks`  | Total length of the roll animation, in ticks (`60` = 3s).                                                                             |
| `roll-animation-period` | Ticks between each animation frame.                                                                                                   |

### Default items

| Item                          | Slot               | Purpose                                                                                            |
| ----------------------------- | ------------------ | -------------------------------------------------------------------------------------------------- |
| `background`                  | `0-44`             | Filler glass panes.                                                                                |
| `pity-luck`                   | `4`                | Shows pity progress (`%edperks_total_rolls%`, `%edperks_rolls_until_pity%`, `%edperks_pity_max%`). |
| `perks-index`                 | `19`               | `[menu] perk-index` — opens the catalogue.                                                         |
| `tool-placeholder`            | `22`               | Shown when the player isn't holding a perkable tool. Replaced by the live tool otherwise.          |
| `roll`                        | `25`               | `[roll]` — performs a roll. Shows `%edperks_tickets%`.                                             |
| `buy-1` / `buy-10` / `buy-25` | `39` / `40` / `41` | Ticket store buttons (see [Perk Tickets](/p/edperks/essential/tickets.md)).                        |

***

## Perk Index menu (`perk-index.yml`)

A read-only catalogue listing every loaded perk, grouped by tier, with each perk's levels and chance expanded into the lore.

```yaml
title: '&8Perk Index'
rows: 5
open-sound: 'ITEM_BOOK_PAGE_TURN'
internal-gui: 'perk-index'
main-menu: 'tool-perks'
perk-slots: '10-16,19-25,28-34'

contents:
  'background':
    material: 'PURPLE_STAINED_GLASS_PANE'
    name: '&r'
    slots: '0-44'
```

| Key            | Meaning                                                                                                                |
| -------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `internal-gui` | **Do not change.** Binds this file to the built-in Perk Index logic.                                                   |
| `main-menu`    | The menu to return to (the Tool Perks menu).                                                                           |
| `perk-slots`   | The slots the perk catalogue fills, in load order (grouped by tier). Provide at least as many slots as you have perks. |

Each perk's icon is built from its own file (`material`/`texture`, `display-name`, `lore`), so you style perks in `perks/<id>.yml`, not here. See [Creating a Perk](/p/edperks/essential/perks/creating-a-perk.md).

***

## Item options reference

Every entry under `contents:` accepts:

| Key                         | Description                                                                  |
| --------------------------- | ---------------------------------------------------------------------------- |
| `material`                  | Bukkit material, `player-<name>`, or `texture-<base64>`.                     |
| `amount`                    | Stack size shown (default `1`).                                              |
| `name`                      | Display name; supports `&` colours and placeholders.                         |
| `lore`                      | A list (or single string) of lore lines; supports placeholders.              |
| `glow`                      | `true`/`false` — adds an enchant glint.                                      |
| `slots`                     | Slot(s): single (`4`), list (`[1,2,3]`) or range (`10-16`), comma-separated. |
| `custom-model-data`         | Integer model data for resource packs.                                       |
| `durability`                | Item durability/damage value.                                                |
| `view-permission`           | Only show the item if the player has this permission.                        |
| `view-requirement`          | A condition that must pass for the item to show.                             |
| `click-requirement`         | A condition that must pass for clicks to run.                                |
| `left-click-actions`        | [Actions](/p/edperks/extra/action-types.md) run on left-click.               |
| `right-click-actions`       | Actions run on right-click.                                                  |
| `shift-left-click-actions`  | Actions run on shift+left-click.                                             |
| `shift-right-click-actions` | Actions run on shift+right-click.                                            |
| `any-click-actions`         | Fallback actions for any click with no specific handler.                     |

Action lists may also be written as a single `;`-separated string. See [Action Types](/p/edperks/extra/action-types.md) for the full list of `[action]` handlers.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://edseries-plugins.gitbook.io/p/edperks/essential/guis.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
