Menu Customization
Every chest GUI IgniteSky opens is backed by an editable file in gui/, one per menu. You can retitle a menu, resize it, recolour its frame, and move, reskin or rename any icon - without touching code and without a separate menu plugin. Edits are picked up on /is admin reload.
How it works
Each menu reads its layout file and falls back to a sensible built-in default for anything the file leaves out. That means a file can be empty, half-filled, or fully customised, and the menu still works. Delete a file entirely and the menu uses its defaults.
With Geyser + Floodgate installed, Bedrock players see these chest menus as native Cumulus forms: every clickable icon becomes a button that runs the same action. No setup is needed and Java players are unaffected; without Floodgate everyone gets the normal chest GUI.
title: "<gradient:#00c6ff:#0072ff>Your Island</gradient>" # MiniMessage; omit for the language-file title
rows: 6 # menu height in rows (1-6)
border: CYAN_STAINED_GLASS_PANE # frame material; omit for no recolour
filler: GRAY_STAINED_GLASS_PANE # backdrop material for empty slots
items:
info:
slot: 13 # where the icon sits (0-based)
material: PLAYER_HEAD # icon material
name: "<gold>My Island" # MiniMessage override; omit to keep the translated name
lore: # MiniMessage lines; omit to keep the translated lore
- "<gray>Everything about your island."
glow: true # add an enchant glint (no real enchantment)Per-menu keys
| Key | Meaning |
|---|---|
title | MiniMessage menu title. Omit to use the language file's title. |
rows | Menu height, 1-6. Omit for the menu's default size. |
border | Frame (outer ring) material. Omit to leave the default framing. |
filler | Backdrop material for otherwise-empty slots. |
items.<key>.slot | 0-based slot for that element. |
items.<key>.material | Icon material. |
items.<key>.name | MiniMessage name override (else the translated name). |
items.<key>.lore | MiniMessage lore lines (else the translated lore). |
items.<key>.glow | true to add an enchant glint. |
Item name and lore are intentionally optional: leave them out and the icon keeps its translated text from lang/<code>.yml, so a layout file can stay purely about slots, materials and glow if you only want to rearrange.
Menus that list generated content - block values, block counts, the bank ledger, public warps, the leaderboard - build those entries from live data, so the file controls the frame (title, size, filler) and the navigation icons rather than every cell.
Which menus
Every menu has a file: main, mode-select, map-select, confirm, members, member-action, invite, bank, banklogs, warps, public-warps, top, upgrades, missions, counts, values, bans, coop, settings, rating, visitors, snapshot, skill-tree, guestbook, cosmetics, prestige, prestige-top. The bundled defaults are written to gui/ on first run, so you always have a working file to edit.
Some surfaces (settings, confirmations, the admin editor) can render as native dialogs instead of chest menus on Paper 1.21.7+. When dialogs are off, or on an older client, they fall back to these chest layouts.
Custom menus (build your own)
Beyond restyling the built-in menus, you can define entirely new menus in menus.yml -slots, items, click actions and requirements -and open them with /is menu <id>. No code, no second plugin. Use it for a server hub, a rules book, an info panel, a custom shop front, or a staff toolbox.
menus:
hub:
title: "<gradient:#3bb2ff:#9b6bff>Server Hub</gradient>"
size: 27
items:
island:
slot: 11
item: { material: GRASS_BLOCK, name: "<green>My Island" }
actions:
go: { type: PLAYER_COMMAND, command: "is home" }
close: { type: CLOSE_MENU }
shop:
slot: 13
item: { material: EMERALD, name: "<yellow>Shop" }
requirements:
perm: { type: PERMISSION, permission: "server.shop" }
actions:
open: { type: PLAYER_COMMAND, command: "shop" }Each item can carry requirements (gates that hide/deny the action) and actions (what a click does). Both are named maps, not lists.
| Actions | Requirements |
|---|---|
CLOSE_MENU · COMMAND · CONSOLE_COMMAND · PLAYER_COMMAND · MESSAGE · ACTION_BAR · PLAY_SOUND · OPEN_MENU · GIVE_ITEM · TAKE_ITEM · TELEPORT · BROADCAST · TITLE · BACK · REFRESH | PERMISSION · NO_PERMISSION · LEVEL · HAS_ITEM · RATE_LIMIT · PLACEHOLDER_EQUALS |
OPEN_MENU chains to another menu id, and RATE_LIMIT lets a button self-throttle (e.g. a daily reward). This complements the built-in menus rather than replacing them.