Skip to main content
Menus are custom inventory GUIs that players can interact with. They’re defined in YAML files in the menus/ folder. Each menu file contains:
title
string
required
The displayed title of the inventory. Supports color codes and hex colors.
size
integer
required
The number of slots in the inventory. Must be a multiple of 9 (9, 18, 27, 36, 45, 54).
items
object
required
A map of items to display in the menu.

Item Properties

Each item in the menu can have:
material
material
required
The Minecraft material for the item.
name
string
Display name of the item. Supports color codes and hex colors.
slot
integer
required
The slot position (0-based index). Use -1 for fill items.
lore
array
List of lore lines.
lore:
  - "&7Line 1"
  - "&7Line 2"
amount
integer
default:"1"
Stack size of the item (1-64).
actions
array
Actions to execute when the item is clicked.

Player Heads in Menus

Menus support three types of player heads:
Use a texture URL from minecraft.net:
creative:
  material: PLAYER_HEAD
  url: http://textures.minecraft.net/texture/bcf2105bb737638833033dd8244071e75870e2e11c2617e542e8924fb2b90180
  name: "&cCreative Server"
  slot: 14

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
Connect player to another server (requires BungeeCord):
actions:
  - "[BUNGEE] survival"

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]"

Default Menus

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]"

Socials Menu

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]"

Movement Menu

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: " "

Opening Menus

Via Command

/hubbly menu <menu_name>
Example:
/hubbly menu selector
/hubbly menu socials

Via Item Action

In items.yml:
compass:
  name: "&cCompass"
  material: COMPASS
  actions:
    - "[MENU] selector"

Via Menu Action

Chain menus together:
back_button:
  material: ARROW
  name: "&cBack"
  slot: 0
  actions:
    - "[MENU] main"

Creating Custom Menus

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]"

Example: Settings Menu

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

Build docs developers (and LLMs) love