Voxel Shop beta is live. Expect occasional bugs. Learn more
Minecraft's own dialog screens, written in YAML: text boxes, dropdowns, sliders, buttons and an API.

Spigot and Paper 1.21.7 and newer · Players on 1.21.6+ · Optional resource pack · No client mods
Documentation · Discord · Source code
Since 1.21.6 a server can open a real menu on a player: a screen the game itself draws, with text, items, text boxes, dropdowns, switches, sliders and buttons. Not a chest wearing a picture, and not chat.
Dialog Engine lets you build those menus in YAML, and lets every other plugin build on them. Write a dialog, give it a command, and players open it. Nothing to install on the client, and no resource pack unless you want drawn dialogs like the one above.
{placeholders}.{warnings} >= 3 && perm:staff.mod.args: [target] makes /punish Steve open a dialog about Steve.warps:
command: warps
title: "<gold><bold>Warps"
columns: 2
lists:
places:
- { id: spawn, name: "Spawn" }
- { id: arena, name: "<red>Arena" }
buttons:
- for-each: places
label: "{row.name}"
actions:
- "[player] warp {row.id}"
- "[sound] entity.enderman.teleport"
- "[close]"
exit:
label: "Close"
/warps, and there it is. Three examples come with the plugin: a welcome screen, a settings page with every kind of input, and a paged list of online players.
Ship your dialogs in your plugin's folder so server owners can edit them, and hand them to the engine in one line. Add your own actions, placeholders and lists. Hear every open and every click as an event.
DialogEngineAPI dialogs = DialogEngine.api();
dialogs.registerFolder(this, "myplugin", new File(getDataFolder(), "dialogs"));
dialogs.registerAction(this, "myplugin:give", (ctx, arg) -> { /* ... */ });
dialogs.registerPlaceholders(this, "myplugin_", (viewer, ctx, key) -> /* ... */ null);
dialogs.registerList(this, "myplugin_quests", (viewer, ctx) -> /* rows */ List.of());
dialogs.open(player, "myplugin:menu", Map.of("coins", "120"));
Events: DialogOpenEvent, DialogClickEvent (with the button, the inputs and the actions about to run, all changeable), DialogInputErrorEvent and DialogEngineReloadEvent.
Plain YAML dialogs use the game's own buttons and boxes. When you want a screen that looks like your server, with cards, sidebars, icons, switches, sliders, dropdowns that open, progress bars and players' heads, draw it.
/de edit shop opens the full dialog editor at resourcepack.ai, free and with no account. You get a link in chat; design the screen, press Send to server, and it lands in plugins/DialogEngine/drawn/ and opens with /de open or its own command. The link works once and lasts three hours.
dialog.yml. Edit it by hand and run /de reload: Studio redraws it (this needs the internet).[console] give {player} diamond; [message] <green>Enjoy!pack.public-host in config.yml to your server's address, or host the pack yourself (/de pack writes it out).Most people will have an AI write their dialogs, so the plugin ships a guide written for one. After the first start it is in plugins/DialogEngine/AI-GUIDE.md: the whole format, the rules that catch the usual mistakes, and how to test.
.yml into plugins/DialogEngine/dialogs/. Run /de reload: anything wrong is reported with the file and the line, so paste that back if it needs another go.| /de list | Every dialog, with its command | dialogengine.list |
| /de open <id> [player] [key=value] | Open one on yourself, or on somebody with dialogengine.open.others | dialogengine.open |
| /de info <id> | What a dialog is made of | dialogengine.info |
| /de edit <id> | Draw one in the browser, or make a new one | dialogengine.edit |
| /de pack | Write the drawn dialogs' resource pack to a file | dialogengine.pack |
| /de reload | Read everything again, and say what is wrong | dialogengine.reload |
Every node is op-only by default, and dialogengine.admin grants them all.
DialogEngine.jar into plugins/ on a Spigot or Paper 1.21.7+ server and start it.plugins/DialogEngine/dialogs/. Every folder is a namespace; the examples are in examples/./de reload after an edit.telemetry: false.update-check: false./de edit, and only sends the one dialog you named.Ask on Discord or open an issue on GitHub. Please don't post bugs in the reviews; we can't reply there, and we would rather fix it.
Dialog Engine is free software under the GPL-3.0 licence. The source is on GitHub, and contributions are welcome.
Dialog Engine comes from resourcepack.ai, a web editor for resource packs.