How to add a custom GUI to your Minecraft server

Those drawn menus on big servers are still chest inventories. A resource pack draws a picture over the chest, and a menu plugin puts clickable items in the right slots. Here is how the two fit together, using DeluxeMenus.

By the Chunkwright team. Updated 10 October 2026. Paper or Spigot, Minecraft Java 1.21.4 and newer for everything below (1.20.5 and newer for the drawn background only). Tested on Paper 1.21.11 with DeluxeMenus 1.14.1 and PlaceholderAPI 2.12.3.

A drawn medieval main menu with round gold buttons over a chest inventory
A main menu from our Kingsguard GUI pack, on our Paper 1.21.11 test server. The parchment, banner and button rings are one picture in the menu title.

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

  1. Install the plugins

    Put DeluxeMenus and PlaceholderAPI in plugins and restart. Both are free. DeluxeMenus will not start without PlaceholderAPI.

  2. 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.

  3. Add a menu file

    Make a file in plugins/DeluxeMenus/gui_menus/, for example main.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 &f in front of the glyphs. Glyphs take the text colour, and white keeps the picture's real colours.

  4. Register it in config.yml

    In plugins/DeluxeMenus/config.yml, add the menu under gui_menus::

    gui_menus:
      main:
        file: main.yml
  5. Reload and open

    Run /dm reload. Open the menu with /menu or /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 &f in 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.

Packs that go with this guide

A medieval chest menu with a red banner title and wooden shop cards

Medieval GUI resource pack: 8 drawn menus, 14 rank badges, tab list, scoreboard, boss bars and hotbar in oak, parchment and gold, with DeluxeMenus and TAB configs.

8 menus, 14 rank badges, tab, scoreboard, boss bars, HUD / Java 1.21.4 to 1.21.11

A sci-fi chest menu with cyan neon edges and holo shop cards

Sci-fi GUI resource pack: 8 drawn menus, 14 rank badges, tab list, scoreboard, boss bars and hotbar in dark hull panels and cyan neon, with DeluxeMenus and TAB configs.

8 menus, 14 rank badges, tab, scoreboard, boss bars, HUD / Java 1.21.4 to 1.21.11

A steel prison chest menu with hazard stripe title and painted cell locker shop cards

Prison GUI resource pack: 8 drawn menus, 14 rank badges, tab list, scoreboard, boss bars and hotbar in riveted steel and hazard stripes, with DeluxeMenus and TAB configs.

8 menus, 14 rank badges, tab, scoreboard, boss bars, HUD / Java 1.21.4 to 1.21.11

New free builds by email

One short email when a new free build is out. Nothing else. Unsubscribe from any email.