Menu and UI actions control the player’s interface, navigate between menus, and handle server connections.
Open a menu defined in the menus/ directory.
The name of the menu file (with or without the menus/ prefix and .yml extension)
The action automatically resolves menu paths:
selector → menus/selector.yml
menus/selector → menus/selector.yml
shop/main → menus/shop/main.yml
Examples
actions:
- "[MENU] selector"
Real-World Usage
From items.yml - Compass item:
compass:
name: "&cCompass"
material: COMPASS
glow: true
lore:
- "&7Right click me to open"
- "&7the server selector!"
actions:
- "[MENU] selector"
From menus/socials.yml - Discord button:
discord:
material: PLAYER_HEAD
name: "&3Discord Server"
slot: 3
actions:
- "[LINK] Click me for the discord;Discord link;discord.com/invite"
Permission Support
Menus can have permissions defined in their configuration:
title: "&cAdmin Panel"
size: 27
permission: "hubbly.admin"
items:
# ...
If a player doesn’t have permission to open a menu, they’ll receive the no_permission_use message from your language file.
CLOSE
Close the player’s currently open inventory/menu.
This action takes no parameters.
Examples
Common Patterns
Execute command and close menu
From menus/movement.yml:none:
material: BARRIER
name: "&cNone"
slot: 19
actions:
- "[PLAYER] hubbly movement none"
- "[CLOSE]"
From menus/selector.yml:fill:
slot: -1 # Fill empty slots
material: BLACK_STAINED_GLASS_PANE
name: " "
actions:
- "[CLOSE]"
The CLOSE action should typically be the last action in a chain, as it immediately closes the inventory.
SLOT
Change which inventory slot the player is holding.
The hotbar slot number (1-9). The player will switch to this slot.
Slot Numbering
- Slots are numbered 1-9 (not 0-8)
- 1 is the leftmost hotbar slot
- 9 is the rightmost hotbar slot
Examples
Use Cases
Give item and auto-select it
actions:
- "[ITEM] compass;1"
- "[SLOT] 1"
- "[MESSAGE] &7Right-click the compass to open the menu"
# Select sword from menu
actions:
- "[CONSOLE] give %player_name% diamond_sword 1"
- "[SLOT] 1"
- "[CLOSE]"
LINK
Send a clickable link to the player in chat.
The message text that will be clickable
Text shown when hovering over the link
The URL to open when clicked
Syntax
[LINK] message;hover_text;url
Parameters are separated by semicolons.
Examples
actions:
- "[LINK] Click me for the discord;Discord link;discord.com/invite"
Real-World Usage
From menus/socials.yml:
items:
discord:
material: PLAYER_HEAD
name: "&3Discord Server"
url: http://textures.minecraft.net/texture/7873c12bffb...
slot: 3
lore:
- "&aJoin the Discord Server!"
actions:
- "[LINK] Click me for the discord;Discord link;discord.com/invite"
tiktok:
material: PLAYER_HEAD
name: "&cTiktok"
slot: 5
lore:
- "&aFollow me on TikTok!"
actions:
- "[LINK] Click me to open TikTok!;TikTok link;tiktok.com"
Color Support
All three parameters support color codes:
actions:
- "[LINK] <#FFD700>Premium Discord;<#FFA500>Click to join;discord.gg/premium"
Make sure your LINK action has exactly 3 parameters separated by semicolons, or it will fail with a warning.
BUNGEE
Connect the player to another server in your BungeeCord network.
The name of the BungeeCord server to connect to
Requirements
- Server must be running on a BungeeCord/Waterfall network
- The
BungeeCord plugin messaging channel must be registered
- Target server must be defined in BungeeCord’s config
Examples
actions:
- "[BUNGEE] survival"
Real-World Usage
From menus/selector.yml - Server selector menu:
title: "&cServer Selector"
size: 36
items:
survival:
material: APPLE
name: "<#CCFFDD>Survival Server"
slot: 12
lore:
- "&aJoin the Survival Server!"
actions:
- "[BUNGEE] survival"
creative:
material: PLAYER_HEAD
name: "&cCreative Server"
slot: 14
lore:
- "&aJoin the Creative Server!"
actions:
- "[BUNGEE] creative"
factions:
material: LEATHER_CHESTPLATE
name: "&cFactions Server"
slot: 22
actions:
- "[BUNGEE] factions"
Automatic Prefix Handling
The action handles both formats:
# Both work the same way:
actions:
- "[BUNGEE] survival"
- "[BUNGEE] server survival" # "server " prefix is stripped
Enhanced Transfer Experience
actions:
- "[SOUND] ENTITY_ENDERMAN_TELEPORT"
- "[TITLE] &aTeleporting...;&7Please wait;10;40;10"
- "[BUNGEE] survival"
actions:
- "[MESSAGE] &7Connecting to &aSurvival &7in 3 seconds..."
- "[SOUND] BLOCK_NOTE_BLOCK_PLING"
# Add 3 second delay via plugin scheduler if needed
- "[BUNGEE] survival"
If the BungeeCord channel is not registered, you’ll see a warning in the console: “Channel BungeeCord is not registered!”
Complete Examples
Server selector with feedback
survival_button:
material: GRASS_BLOCK
name: "&aSurvival Server"
slot: 12
lore:
- "&7Click to join!"
- ""
- "&7Players: &a%bungee_survival%"
actions:
- "[SOUND] UI_BUTTON_CLICK"
- "[MESSAGE] &7Connecting to &aSurvival&7..."
- "[BUNGEE] survival"
# Main menu button
games_menu:
material: DIAMOND_SWORD
name: "&6Games Menu"
slot: 13
actions:
- "[SOUND] UI_BUTTON_CLICK"
- "[MENU] games/main"
# In games/main.yml - Bedwars button
bedwars:
material: RED_BED
name: "&cBedwars"
slot: 11
actions:
- "[SOUND] BLOCK_NOTE_BLOCK_PLING"
- "[MESSAGE] &7Joining &cBedwars&7..."
- "[CLOSE]"
- "[BUNGEE] bedwars-1"