Custom GUI Menus
What makes CustomGUIMenus different
Lightning Performance - Optimized caching system with zero inventory lag
Visual Menu Builder - Create stunning GUIs with simple YAML configs
Hot-Reload System - Update menus without server restarts
Multi-Language Ready - Built-in locale system (EN/ES/FR/DE included)
Multi-Command Actions - Execute multiple commands with single click
Dynamic Placeholders - Full PlaceholderAPI & built-in variables
Advanced Actions - Commands, messages, menu navigation, and more
Permission Control - Per-menu and per-item permission support
Sound Effects - Customizable click sounds and feedback
Fill System - Auto-fill empty slots with custom items
Ready-to-Go Setup
Pre-configured example menus included:
• mainmenu.yml - Central hub with navigation
• shop.yml - Advanced shop with multi-command purchases
• help.yml - Information and commands display
Why choose CustomGUIMenus?
0% Performance Impact - Async loading & smart caching
Active Development - Regular updates & new features
Developer-Friendly API - Clean integration for custom plugins
Backwards Compatible - Supports both single & multi-command formats
No Dependencies - Works standalone (PlaceholderAPI optional)
Perfect for every server type
Survival • Skyblock • Prison • RPG • Creative • Minigames • Hub/Lobby • Networks
Requirements
Minecraft 1.21 | Java 21+ | Paper/Spigot
For older versions (1.19-1.20), use Java 17 and adjust api-version
❤️ Support ❤️
If you enjoy this plugin, please consider leaving a ⭐ Rating and Review on Spigot!
For bug reports or feature requests, please use the Discussion Thread.
Discord: warrior0190
![[IMG]](//proxy.spigotmc.org/cad2bc93fe0f3b692662191af2164f16afbfc989/68747470733a2f2f692e696d6775722e636f6d2f5a3036426677362e6a706567)
![[IMG]](//proxy.spigotmc.org/60ebb52eb20034e37e4cbb2c8a1be9b386756d63/68747470733a2f2f692e696d6775722e636f6d2f554874763355412e6a706567)
What makes CustomGUIMenus different
Lightning Performance - Optimized caching system with zero inventory lag
Visual Menu Builder - Create stunning GUIs with simple YAML configs
Hot-Reload System - Update menus without server restarts
Multi-Language Ready - Built-in locale system (EN/ES/FR/DE included)
Multi-Command Actions - Execute multiple commands with single click
Dynamic Placeholders - Full PlaceholderAPI & built-in variables
Advanced Actions - Commands, messages, menu navigation, and more
Permission Control - Per-menu and per-item permission support
Sound Effects - Customizable click sounds and feedback
Fill System - Auto-fill empty slots with custom items
Ready-to-Go Setup
- Drop in plugins/ → Restart → Create amazing GUIs!
Spoiler: config.yml - Config file
# CustomGUIMenus Configuration
#
# Default locale to use (must match a file in the locales folder)
locale: en_US
# Settings for empty slot filling
fill-item:
# Material for fill items
material: BLACK_STAINED_GLASS_PANE
# Display name for fill items (use " " for empty)
name: " "
# Should the menu close when clicking outside the inventory?
close-on-click-outside: true
# Sound settings
sounds:
click:
# Enable click sounds
enabled: true
# Sound to play (see https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html)
sound: UI_BUTTON_CLICK
# Volume (0.0 - 1.0)
volume: 0.5
# Pitch (0.5 - 2.0)
pitch: 1.0
# Debug mode - shows extra information in console
debug: false
# PlaceholderAPI support
# Set to true if you have PlaceholderAPI installed
placeholder-api: false
# Menu settings
menu-settings:
# Should menus update when opened (re-parse placeholders)?
update-on-open: true
# Maximum number of menus that can be loaded
max-menus: 100
# Permission settings
permissions:
# Should the plugin check for menu-specific permissions?
# If true, players need customguimenus.menu.<menu-name> to open menus
check-menu-permissions: false
# Default permission for menus without a specific permission set
default-menu-permission: ""
# Advanced settings (don't change unless you know what you're doing)
advanced:
# Async menu loading
async-loading: false
# Cache menu instances
cache-menus: true
# Menu cache duration in seconds (if cache-menus is true)
cache-duration: 300
#
# Default locale to use (must match a file in the locales folder)
locale: en_US
# Settings for empty slot filling
fill-item:
# Material for fill items
material: BLACK_STAINED_GLASS_PANE
# Display name for fill items (use " " for empty)
name: " "
# Should the menu close when clicking outside the inventory?
close-on-click-outside: true
# Sound settings
sounds:
click:
# Enable click sounds
enabled: true
# Sound to play (see https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html)
sound: UI_BUTTON_CLICK
# Volume (0.0 - 1.0)
volume: 0.5
# Pitch (0.5 - 2.0)
pitch: 1.0
# Debug mode - shows extra information in console
debug: false
# PlaceholderAPI support
# Set to true if you have PlaceholderAPI installed
placeholder-api: false
# Menu settings
menu-settings:
# Should menus update when opened (re-parse placeholders)?
update-on-open: true
# Maximum number of menus that can be loaded
max-menus: 100
# Permission settings
permissions:
# Should the plugin check for menu-specific permissions?
# If true, players need customguimenus.menu.<menu-name> to open menus
check-menu-permissions: false
# Default permission for menus without a specific permission set
default-menu-permission: ""
# Advanced settings (don't change unless you know what you're doing)
advanced:
# Async menu loading
async-loading: false
# Cache menu instances
cache-menus: true
# Menu cache duration in seconds (if cache-menus is true)
cache-duration: 300
Spoiler: en_US.yml - Locale file
prefix: '&8[&6CustomGUI&8] '
messages:
no-permission: '&cYou don''t have permission to do that!'
menu-not-found: '&cMenu ''%menu%'' not found!'
player-only: '&cThis command can only be used by players!'
reload-success: '&aConfiguration reloaded successfully!'
menu-opened: '&aOpened menu: %menu%'
invalid-usage: '&cUsage: /gui <open|reload> [menu]'
console-cannot-open: '&cConsole cannot open GUI menus!'
messages:
no-permission: '&cYou don''t have permission to do that!'
menu-not-found: '&cMenu ''%menu%'' not found!'
player-only: '&cThis command can only be used by players!'
reload-success: '&aConfiguration reloaded successfully!'
menu-opened: '&aOpened menu: %menu%'
invalid-usage: '&cUsage: /gui <open|reload> [menu]'
console-cannot-open: '&cConsole cannot open GUI menus!'
Pre-configured example menus included:
• mainmenu.yml - Central hub with navigation
• shop.yml - Advanced shop with multi-command purchases
• help.yml - Information and commands display
Spoiler: Example Shop Menu Configuration
Example Shop Menu Configuration
title: "&a&lShop Menu"
rows: 4
fill-empty: true
items:
11:
material: GOLDEN_APPLE
name: "&6Golden Apple"
lore:
- "&7Price: &a$100"
- "&7"
- "&e► Click to purchase!"
action: command
action-data:
- "eco take %player% 100"
- "give %player% golden_apple 1"
- "playsound minecraft:entity.experience_orb.pickup player %player%"
title: "&a&lShop Menu"
rows: 4
fill-empty: true
items:
11:
material: GOLDEN_APPLE
name: "&6Golden Apple"
lore:
- "&7Price: &a$100"
- "&7"
- "&e► Click to purchase!"
action: command
action-data:
- "eco take %player% 100"
- "give %player% golden_apple 1"
- "playsound minecraft:entity.experience_orb.pickup player %player%"
Spoiler: Possible GUI Actions
Supported Actions
• command - Execute console commands
• player-command - Execute as player
• console-command - Force console execution
• open - Open another GUI menu
• close - Close current menu
• message - Send player message
• broadcast - Server-wide message
• none - Decorative items
Built-in Placeholders
• %player% - Player name
• %displayname% - Display name
• %world% - Current world
• %x%, %y%, %z% - Coordinates
• %health% - Current health
• %food% - Food level
• %level% - Experience level
• %exp% - Total experience
• Plus full PlaceholderAPI support!
• command - Execute console commands
• player-command - Execute as player
• console-command - Force console execution
• open - Open another GUI menu
• close - Close current menu
• message - Send player message
• broadcast - Server-wide message
• none - Decorative items
Built-in Placeholders
• %player% - Player name
• %displayname% - Display name
• %world% - Current world
• %x%, %y%, %z% - Coordinates
• %health% - Current health
• %food% - Food level
• %level% - Experience level
• %exp% - Total experience
• Plus full PlaceholderAPI support!
Why choose CustomGUIMenus?
0% Performance Impact - Async loading & smart caching
Active Development - Regular updates & new features
Developer-Friendly API - Clean integration for custom plugins
Backwards Compatible - Supports both single & multi-command formats
No Dependencies - Works standalone (PlaceholderAPI optional)
Perfect for every server type
Survival • Skyblock • Prison • RPG • Creative • Minigames • Hub/Lobby • Networks
Spoiler: Commands & Permissions
Commands & Permissions
/gui - Main command
/gui open <menu> - Open specific menu
/gui list - List available menus
/gui reload - Reload configuration
Permissions:
• customguimenus.use - Basic usage
• customguimenus.admin - Full access
• customguimenus.menu.<name> - Specific menu access
/gui - Main command
/gui open <menu> - Open specific menu
/gui list - List available menus
/gui reload - Reload configuration
Permissions:
• customguimenus.use - Basic usage
• customguimenus.admin - Full access
• customguimenus.menu.<name> - Specific menu access
Requirements
Minecraft 1.21 | Java 21+ | Paper/Spigot
For older versions (1.19-1.20), use Java 17 and adjust api-version
❤️ Support ❤️
If you enjoy this plugin, please consider leaving a ⭐ Rating and Review on Spigot!
For bug reports or feature requests, please use the Discussion Thread.
Discord: warrior0190
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.21
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
Custom GUI Menus | 1.21 is a free Minecraft Java mod. Compatible with Minecraft 1.21. Downloaded 165 times (via Spigot). Download it and open it directly in the game.