Picture-tile server menus with arbitrary button sizes for Minecraft Bedrock Edition — no client mods, no experimental toggles. Just a resource pack (JSON UI) on top of the completely standard server Form API, with a tiny demo plugin for Nukkit-MOT.
| Main menu | Auction screen |
|---|---|
![]() |
![]() |
Bedrock's Form API officially gives you only a vertical list of identical buttons. This project shows how to turn that same form into a hand-laid grid of differently-sized picture tiles — a big feature tile, a 2×2 grid, a wide bottom bar — while the server keeps receiving ordinary form responses.
- The server sends a completely ordinary
SimpleForm(title + content + buttons). Any server software that can send forms works: Nukkit / Nukkit-MOT, PocketMine-MP, etc. - The resource pack overrides
ui/server_form.json. Each custom screen is gated on the exact form title ('BedrockIslands','Islands§r','Island Settings','Auction House'): if the title matches, the default button list is hidden and a custom tile panel is rendered instead. Any other form on the server renders normally. - Every tile is an image plus an invisible button bound to the form's button collection by
collection_index N— pressing the tile fires form buttonN, so the server-side click handler is a plaingetClickedButtonId(). - Tiles have hover/press overlay states, and can even swap art based on the button text — the same slot renders
donate.pngwhen the button saysDonateandsettings.pngwhen it saysIsland Settings(same trick powers theMake Public/Make Privatetoggle). - The first line of the form content becomes the status/balance line at the top of the panel.
- Grab
MenuDemo.jarandtile-menu-ui.zipfrom Releases — or build them (below). - Drop
MenuDemo.jarintoplugins/,tile-menu-ui.zipintoresource_packs/. - In
server.properties:force-resources=on. - Join and type
/menu.
The demo is deliberately non-functional: tiles only navigate between the four screens; nothing else happens. It exists to showcase the UI technique.
# plugin (needs JDK 17+ and a Nukkit-MOT jar)
NUKKIT_JAR=/path/to/nukkit-mot.jar plugin/build.sh
# resource pack
cd resource-pack && zip -r ../tile-menu-ui.zip . -x '.*'Everything lives in resource-pack/ui/server_form.json:
- Change the title gates to your own form titles (they must match exactly, including formatting codes — that's why one screen is
Islands§r). - Lay out tiles with nested
stack_panels; each tile is abi_pic_buttoninstance with$bg(texture),$slot/$btn(sizes) andcollection_index(which form button it fires). - Keep your server-side buttons in the same order as the
collection_indexvalues — the art is positional. - Button art sizes used here are in
textures/ui/menu/(rendered at 2× and downscaled by the client).
Меню из картинок-плиток разного размера для Bedrock-серверов без модов на клиенте: ресурс-пак перехватывает стандартную серверную форму по точному заголовку и рисует вместо списка кнопок свою сетку плиток; клики возвращаются серверу как обычные индексы кнопок. В комплекте демо-плагин для Nukkit-MOT (/menu, четыре экрана, без игровой логики).
MIT
⭐ If this saved you from writing your own JSON UI from scratch — please star the repo!

