
How drawn menus work
The game draws a menu title as text. A resource pack can turn any text character into a picture through its font file. So the pack maps an unused character, for example \uE12C, to a picture of the whole menu. A few more characters are spaces with a negative width that move the picture left, so it lines up with the chest.
Put those characters in the menu title and the player sees your art instead of the grey chest. The slots still work as normal, so DeluxeMenus places items on top of the drawn buttons.
{
"providers": [
{ "type": "bitmap", "file": "mypack:font/menu_main.png", "ascent": 13, "height": 256, "chars": ["\uE12C"] },
{ "type": "space", "advances": { "\uF801": -1, "\uF802": -2, "\uF805": -16, "\uF806": -32, "\uF807": -64 } }
]
}
That is the shape of assets/minecraft/font/default.json. The numbers for ascent and height depend on your picture, and getting them right takes some trial and error.
Step by step
Install the plugins
Put DeluxeMenus and PlaceholderAPI in
pluginsand restart. Both are free. DeluxeMenus will not start without PlaceholderAPI.Send the resource pack
The menu art lives in a resource pack, so every player needs it. Follow our guide to make a resource pack required. Players who decline it see boxes in the menu titles.
Add a menu file
Make a file in
plugins/DeluxeMenus/gui_menus/, for examplemain.yml. This is a shortened copy of a menu we tested:menu_title: "&f\uF805\uE12C\uF807\uF806\uF805\uF802" open_command: - menu register_command: true size: 36 items: 'shop': material: EMERALD slot: 12 tooltip_style: mypack:menu display_name: "&6Shop" lore: - "&7Buy and sell items" left_click_commands: - "[sound] UI_BUTTON_CLICK" - "[openguimenu] shop" 'close': material: PAPER item_model: mypack:button_close slot: 31 display_name: "&6Close" left_click_commands: - "[close]"Keep
&fin front of the glyphs. Glyphs take the text colour, and white keeps the picture's real colours.Register it in config.yml
In
plugins/DeluxeMenus/config.yml, add the menu undergui_menus::gui_menus: main: file: main.ymlReload and open
Run
/dm reload. Open the menu with/menuor/dm open main. If the picture sits a few pixels off, change the space characters in the title and reload.
Drawn buttons and tooltips
item_model(Minecraft 1.21.4 and newer) shows an item with a model from your pack, so a PAPER item can look like a drawn close button. An invisible model over a drawn button gives you a click area that shows nothing.tooltip_style(1.21.2 and newer) gives the hover box your own frame and background.- Older clients ignore both and show the plain item and the normal tooltip.
If it does not work
- Boxes or squares in the title: the player does not have the resource pack, or another pack uses the same characters.
- The art is shifted: the negative space before the picture is wrong. Change it a pixel at a time.
- The title text is cut off or tinted: remove bold or italic codes and keep
&fin front of the glyphs. - Bedrock players see plain menus: players joining through Geyser do not get Java resource packs.
Questions
How do servers make custom GUIs in Minecraft?
They use a chest menu plugin such as DeluxeMenus and a resource pack. The pack draws a picture through a font character in the menu title, and the plugin places clickable items over the drawn buttons.
Do players need to download anything?
Only the server resource pack, which the game downloads when they join. No mods are needed.
Which Minecraft version do custom item models need?
The item_model setting needs Minecraft 1.21.4 or newer. The drawn menu background works from 1.20.5.
Do custom GUIs work for Bedrock players?
No. Players on Bedrock through Geyser do not get Java resource packs and see plain menus.
From our studio
If you would rather skip the pixel work, our GUI packs come with 8 drawn menus, 14 rank badges, tab list and scoreboard art, and the DeluxeMenus and TAB configs we tested them with. We also draw menu packs to order.


