Menus are custom inventory GUIs that players can interact with. They’re defined in YAML files in the menus/ folder.
Each menu file contains:
The displayed title of the inventory. Supports color codes and hex colors.
The number of slots in the inventory. Must be a multiple of 9 (9, 18, 27, 36, 45, 54).
A map of items to display in the menu.
Item Properties
Each item in the menu can have:
The Minecraft material for the item.
Display name of the item. Supports color codes and hex colors.
The slot position (0-based index). Use -1 for fill items.
List of lore lines.lore:
- "&7Line 1"
- "&7Line 2"
Stack size of the item (1-64).
Actions to execute when the item is clicked.
Menus support three types of player heads:
URL Texture
Player Name
HeadDatabase
Use a texture URL from minecraft.net:creative:
material: PLAYER_HEAD
url: http://textures.minecraft.net/texture/bcf2105bb737638833033dd8244071e75870e2e11c2617e542e8924fb2b90180
name: "&cCreative Server"
slot: 14
Use a specific player’s skin:player_head:
material: PLAYER_HEAD
texture: player
name: "Player Head"
slot: 0
Use HeadDatabase plugin IDs (requires HeadDatabase):hdb_head:
material: PLAYER_HEAD
hdb: 12345
name: "HDB Head"
slot: 0
Leather Armor Colors
Customize leather armor colors using hex codes:
factions:
material: LEATHER_CHESTPLATE
color: 8ad592 # Without the # symbol
name: "&cFactions Server"
slot: 22
Omit the # symbol when specifying hex colors for leather armor.
Custom Model Data
For resource pack support, you can specify custom model data:
survival:
material: APPLE
model_data: 10001
name: "<#CCFFDD>Survival Server"
slot: 12
BungeeCord
Player Command
Link/URL
Connect player to another server (requires BungeeCord):actions:
- "[BUNGEE] survival"
Execute command as player:actions:
- "[PLAYER] hubbly movement none"
- "[CLOSE]"
Open a clickable link in chat:actions:
- "[LINK] Click me for discord;Discord link;discord.com/invite"
Format: [LINK] <hover_text>;<link_text>;<url>
Fill Items
Fill empty slots with a specific item using slot: -1:
fill:
slot: -1
material: BLACK_STAINED_GLASS_PANE
name: " " # Empty name
actions:
- "[CLOSE]"
Server Selector
title: "&cServer Selector"
size: 36
items:
survival:
material: APPLE
name: "<#CCFFDD>Survival Server"
amount: 3
url: http://textures.minecraft.net/texture/355e2dc46399b7b9275221fcdc87c66e58d0d3044dcf62af0465122c1cd7e0bc
model_data: 10001
slot: 12
lore:
- "&aJoin the Survival Server!"
actions:
- "[BUNGEE] survival"
creative:
material: PLAYER_HEAD
texture: http://textures.minecraft.net/texture/bcf2105bb737638833033dd8244071e75870e2e11c2617e542e8924fb2b90180
name: "&cCreative Server"
slot: 14
lore:
- "&aJoin the Creative Server!"
actions:
- "[BUNGEE] creative"
factions:
material: LEATHER_CHESTPLATE
color: 8ad592
name: "&cFactions Server"
slot: 22
lore:
- "&aJoin the Factions Server!"
actions:
- "[BUNGEE] factions"
fill:
slot: -1
material: BLACK_STAINED_GLASS_PANE
name: " "
actions:
- "[CLOSE]"
title: "&6Socials"
size: 9
items:
discord:
material: PLAYER_HEAD
name: "&3Discord Server"
url: http://textures.minecraft.net/texture/7873c12bffb5251a0b88d5ae75c7247cb39a75ff1a81cbe4c8a39b311ddeda
slot: 3
lore:
- "&aJoin the Discord Server!"
actions:
- "[LINK] Click me for the discord;Discord link;discord.com/invite"
tiktok:
material: PLAYER_HEAD
url: http://textures.minecraft.net/texture/2786dc9d65c3b7983e8bb6af588fac92f33720c723e0d29f8b74151344a648a1
name: "&cTiktok"
slot: 5
lore:
- "&aFollow me on TikTok!"
actions:
- "[LINK] Click me to open TikTok!;TikTok link;tiktok.com"
fill:
slot: -1
material: BLACK_STAINED_GLASS_PANE
name: " "
actions:
- "[CLOSE]"
title: "&6Movement"
size: 45
items:
none:
material: BARRIER
name: "&cNone"
slot: 19
lore:
- "&aSet to walk"
actions:
- "[PLAYER] hubbly movement none"
- "[CLOSE]"
djump:
material: GOLD_BOOTS
name: "&cDouble Jump"
slot: 22
lore:
- "&aSet to doublejump"
actions:
- "[PLAYER] hubbly movement doublejump"
- "[CLOSE]"
fly:
material: FEATHER
name: "&rFlight"
slot: 25
lore:
- "&aSet to fly"
actions:
- "[PLAYER] hubbly movement fly"
- "[CLOSE]"
fill:
slot: -1
material: BLACK_STAINED_GLASS_PANE
name: " "
Via Command
Example:
/hubbly menu selector
/hubbly menu socials
Via Item Action
In items.yml:
compass:
name: "&cCompass"
material: COMPASS
actions:
- "[MENU] selector"
Chain menus together:
back_button:
material: ARROW
name: "&cBack"
slot: 0
actions:
- "[MENU] main"
Example: Minigame Selector
title: "<#FF6B6B>Minigame Selector"
size: 27
items:
bedwars:
material: RED_BED
name: "<#FF0000>BedWars"
slot: 11
lore:
- "&7Protect your bed and destroy"
- "&7the enemy beds!"
- ""
- "&aClick to join!"
actions:
- "[BUNGEE] bedwars"
skywars:
material: DIAMOND_SWORD
name: "<#00FFFF>SkyWars"
slot: 13
lore:
- "&7Battle it out on sky islands!"
- ""
- "&aClick to join!"
actions:
- "[BUNGEE] skywars"
parkour:
material: LEATHER_BOOTS
name: "<#FFD700>Parkour"
slot: 15
lore:
- "&7Test your jumping skills!"
- ""
- "&aClick to join!"
actions:
- "[PLAYER] parkour"
- "[CLOSE]"
fill:
slot: -1
material: GRAY_STAINED_GLASS_PANE
name: " "
actions:
- "[CLOSE]"
title: "&6Settings"
size: 27
items:
player_visibility:
material: LIME_DYE
name: "&aPlayer Visibility"
slot: 11
lore:
- "&7Toggle player visibility"
- ""
- "&eClick to toggle"
actions:
- "[PLAYER] hubbly togglevisibility"
- "[CLOSE]"
flight:
material: FEATHER
name: "&bFlight Mode"
slot: 13
lore:
- "&7Toggle flight"
- ""
- "&eClick to toggle"
actions:
- "[PLAYER] fly"
- "[CLOSE]"
movement:
material: GOLD_BOOTS
name: "&6Movement Type"
slot: 15
lore:
- "&7Change movement type"
- ""
- "&eClick to open"
actions:
- "[MENU] movement"
fill:
slot: -1
material: BLACK_STAINED_GLASS_PANE
name: " "
Tips and Best Practices
- Menu files must be placed in the
menus/ folder
- File names should use lowercase and no spaces (use underscores)
- Size must be a multiple of 9 (max 54)
- Slots are 0-based (0 = first slot, 8 = last slot in first row)
Slot Layout Reference:9-slot menu: 0-818-slot menu: 0-1727-slot menu: 0-26 (3 rows)36-slot menu: 0-35 (4 rows)45-slot menu: 0-44 (5 rows)54-slot menu: 0-53 (6 rows - max)
- Use fill items to prevent clicking empty slots
- Space out important items for better visual clarity
- Use consistent naming conventions across menus
- Add descriptive lore to explain what each option does
- Test menus with
/hubbly menu <name> before deployment
- Use color gradients for professional-looking titles