> For the complete documentation index, see [llms.txt](https://enchantedmobs.superiormc.cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://enchantedmobs.superiormc.cn/for-enchantmentreform/menus/menus-1.md).

# Free Menu Configuration

This page covers the free-menu format used by `main.yml`, `skill-info.yml`, `attribute-info.yml`, `attribute-allocation.yml`, and custom menus. See [Menu Types](/for-enchantmentreform/menus/menus.md) for how to open them, [Built-in Menu Options](/for-enchantmentreform/menus/menus/builtin-options.md) for every option and placeholder, and [Menu Actions](/for-enchantmentreform/menus/menus/actions.md) for action types and parameters.

A free menu's YAML file name is its ID. Open an entry menu with:

```
/enchantmentreform menu <menu-id>
```

`skill-detail` and `attribute-detail` require a selected object. Open them from a list with `open_skill` or `open_attribute`, or append the corresponding ID to the menu command.

## Enablement and permissions

Every menu, including the catalogue, detail menus, and custom menus, supports top-level `enabled` and `permission` options. `enabled` defaults to `true`; `false` prevents opening. `permission` defaults to an empty string, which adds no permission requirement. A non-empty value requires that permission when opening from commands, buttons, or return navigation. The menu command still requires `enchantmentreform.menu`. The default main menu uses `{lang:main-menu-*}` placeholders from `override-lang` in the language files.

```yaml
enabled: true
permission: ''
```

## Layout and content regions

Free menus use a 9-character-per-row `layout` with 1–6 rows; the row count determines inventory size. A character is the ID of a `contents` region or an `items` button; repeating it allocates multiple positions. IDs below these two sections must therefore be exactly one character. There is no `slot` or `slots` option. The catalogue and two detail menus have their own dedicated layout options.

```yaml
title: '&8Character Menu &7{page}/{pages}'
layout:
  - 'FFFFFFFFF'
  - 'FAAAAAAAF'
  - 'FAAAAAAAF'
  - 'PFFFFFFFN'

contents:
  A:
    type: attributes
    mode: information
    item:
      material: AMETHYST_SHARD
      name: '&d&l{name}'
      lore:
        - '&8Attribute'
        - ' '
        - '&fCurrent effect'
        - '&7{current_description}'
        - ' '
        - '&fAfter upgrading'
        - '&7{next_description}'
        - ' '
        - '&eClick for details'
    click-actions:
      LEFT:
        open:
          type: open_attribute
```

Content types are `skills` and `attributes`. Attribute modes are `all`, `information`, `allocation`, and `skill`; skill mode shows every attribute with `skill-menu.show` enabled and no longer filters by skill ID. Both content types support `include` and `exclude` ID lists. All content sections share the menu page number; the largest collection determines the page count.

## Skill and attribute icons

Both content types can use the corresponding configuration file's top-level `icon` as the base item. Icons use the standard item configuration format:

| Content type | Content-section switch | Icon location                                                                                                                      | Fallback material when no icon is configured |
| ------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| `skills`     | `use-skill-icon`       | Top-level `icon` in `skills/*.yml`; see [Skills](/for-enchantmentreform/configuration/skills.md).                                  | `EXPERIENCE_BOTTLE`                          |
| `attributes` | `use-attribute-icon`   | Top-level `icon` in `attributes/*.yml`; see [Custom Attributes](/for-enchantmentreform/configuration/custom-attributes.md#fields). | `NETHER_STAR`                                |

Both switches default to `true`; set one to `false` to ignore the corresponding icons. Attribute icons support every attribute mode, including `allocation`. The menu's `item.material` takes priority over the icon; omit it to retain each skill or attribute's icon while using `item.name` and `item.lore` for shared display text. For example:

```yaml
contents:
  S:
    type: skills
    use-skill-icon: true
    item:
      name: '&a{name}'
      lore:
        - '&7{description}'
  A:
    type: attributes
    mode: allocation
    use-attribute-icon: true
    item:
      name: '&a{name}'
      lore:
        - '&7{current_description}'
```

See [Built-in Menu Options and Placeholders](/for-enchantmentreform/menus/menus/builtin-options.md) for the meaning of every shared, skill, and attribute placeholder.

## Static items and actions

Static items use their one-character key in `layout`. Navigation only appears when its configured character exists.

```yaml
items:
  P:
    hide-on-first-page: true
    item:
      material: ARROW
      name: '&aPrevious page'
    hidden-item:
      material: GRAY_STAINED_GLASS_PANE
      name: ' '
    actions:
      page:
        type: previous_page
  F:
    item:
      material: BLACK_STAINED_GLASS_PANE
      name: ' '
```

Static and content items can use `actions` for every click or `click-actions.<CLICK_TYPE>` for a specific Bukkit click type.

See [Menu Actions](/for-enchantmentreform/menus/menus/actions.md) for the shared menu action types, parameters, and object-context requirements.
