ModsJava
Dialog Engine | Dialog Menus in YAML, with Inputs, Lists and a Developer API
Java mod listed for Minecraft 1.21–26.x. Downloads from the MC Java Mods app on Android.
⬇ Download on SpigotWhat is it?
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. No resource pack, nothing to install on the client.
What a dialog can do
- ✔ Inputs: text boxes and text areas, dropdowns, switches and sliders, with what the player entered available to every action as {placeholders}.
- ✔ Checks: required fields, minimum lengths and patterns. A failed check shows the dialog again with the player's words still in it and your message on top.
- ✔ Actions: run commands as the player or console, send messages, titles and sounds, open another dialog carrying the values over, go back, refresh, turn pages, set values, wait, and stop on a condition.
- ✔ Conditions: show a line, an input or a button only when {warnings} >= 3 && perm:staff.mod.
- ✔ Lists and pages: a button per online player, per warp, per anything, paged with Next and Previous.
- ✔ Player heads and items drawn in the dialog, with their tooltips.
- ✔ Dialogs about somebody: args: [target] makes /punish Steve open a dialog about Steve.
- ✔ PlaceholderAPI everywhere, if you have it.
- ✔ Safe by design: every button is bound on the server to the screen the player saw. Nothing a player can type in chat presses one, and anything a player typed is shown as text, never as colours or clicks.
A dialog
Code (Text):
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"
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"
For developers
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.
Code (Text):
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"));
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"));
Making dialogs with AI
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.
- Give your AI agent (Claude Code, Cursor, Codex) your server folder, or paste the guide into ChatGPT or Claude.
- Ask for the screen you want: "a /rules dialog with an Accept button that runs /spawn", "a shop for my three kits".
- It writes a .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.
Commands
| Command | What it does | Permission |
| /de list | Every dialog, with its command | dialogengine.admin |
| /de open <id> [player] [key=value] | Open one on somebody | dialogengine.admin |
| /de info <id> | What a dialog is made of | dialogengine.admin |
| /de reload | Read everything again, and say what is wrong | dialogengine.admin |
Installing
- Drop DialogEngine.jar into plugins/ on a Paper 1.21.7+ server and start it.
- Your dialogs go in plugins/DialogEngine/dialogs/. Every folder is a namespace; the examples are in examples/.
- /de reload after an edit.
Support
Ask on Discord. Please don't post bugs in the reviews; we can't reply there, and we would rather fix it.
Made by ResourcePack AI
Dialog Engine comes from resourcepack.ai, a web editor for resource packs.
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.21, 26.1, 26.2
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
Dialog Engine | Dialog Menus in YAML, with Inputs, Lists and a Developer API is a free Minecraft Java mod. Compatible with Minecraft 1.21, 26.1, 26.2. Downloaded 25 times (via Spigot). Download it and open it directly in the game.