Chest GUIs driven by YAML: one file per menu, MiniMessage titles and item text, left/right/any click actions (player, console, message, or open another menu), optional auto-registered open commands, and an admin reload/list workflow. Paper and Folia 1.21 - 26.x
Support
Report bugs and get support here: https://discord.gg/VvM6k2eBDa
Features
• Folia support – scheduling opens and player actions in a region-safe way
• YAML menus – load every
.yml from the configured menus folder (default gui/menus/); files whose names start with _ are templates only and are not loaded as menus• Menu identity –
menu-id in each file (or filename without .yml if omitted); rows 1–6; optional permission per menu• Titles and items – MiniMessage
title, per-slot material, amount, optional display-name, lore, glowing, custom-model-data, leather dye hex, item-flags, unbreakable• Optional filler –
filler block with enabled and optional material to fill empty slots (legacy single filler material string still supported)• Click handling –
left-click / right-click / any-click with enabled and a commands list; each entry uses type (player, console, message, menu) plus command, message, or menu as required; legacy click-left, click-right, and click list forms still work• PlaceholderAPI – when installed, placeholders in menu text and command strings are resolved for the viewing player
• Dynamic open commands –
command string or commands list in a menu file register /-less labels as player commands (skips if another plugin already owns the label); opening still requires perfdonutguis.use plus the menu’s own permission when set• Bundled examples – sample menus (e.g. guide, media, rules) ship as references you can copy
Commands
/donutguis open (menu) – Open a menu by id (perfdonutguis.use); aliases: /dguis, /dgui, /donutgui
/perfdonutguis reload – Reload config and all menu YAML files (perfdonutguis.admin)
/perfdonutguis list – List loaded menu ids and their registered open commands (perfdonutguis.admin)
/perfdonutguis open (player) (menu) – Open a menu for an online player (perfdonutguis.admin)
(optional) /(label from menu yaml) – Same as opening that menu when registered from YAML (perfdonutguis.use, plus menu permission if set)
