Say goodbye to old-school chest GUI interfaces! DialogMaster is a next-generation Minecraft plugin for Paper and Folia that brings native, client-rendered Dialog screens directly to your players.
Using Minecraft's official Dialog Packet Protocol (introduced in modern Minecraft versions 1.21.8+), it renders sleek, premium, and fully interactive menus directly on the player's client. Eliminate inventory click lag, ghost items, and server-side container menu glitches while offering a modern, high-end user interface that matches triple-A games.
Utilizes Minecraft's built-in client dialog protocol to display pristine informational boxes, purchase prompts, selector grids, and server link hubs. No client mods required!
Eliminates all server-side inventory-based lag. Because menus are rendered by the client, there are no click desyncs, inventory drag exploits, or laggy chest openings.
Embed actual item sprites in your menus, buttons, tooltips, and lists using the
<item:material_name> tag! Renders client-side using Minecraft's item atlas. You can also display player skin heads using the <head:playerName> tag natively.Turn your menus into interactive forms! Confirmation menus support multiple native client inputs:
- Text Fields: Support custom character limits, placeholders, and multi-line text boxes (perfect for report reasons or home names).
- Number Sliders: Native horizontal sliders with configurable min, max, snap steps, and formats (great for pay/withdraw amounts).
- Boolean Toggles: Native client-side on/off switches.
- Single Option Dropdowns: Sleek dropdown menus with customizable option lists (ideal for lang/particle settings).
Control exactly who sees what. Set up
view-requirements to hide/show buttons or click-requirements to block actions based on PlaceholderAPI evaluations (supports ==, !=, >, >=, <, <=, and contains).Define multiple designs for a single button slot. The plugin scans requirements top-to-bottom and automatically renders the first valid layout—perfect for displaying kit cooldown states or rank restrictions!
Populate menus on-the-fly! Generate buttons dynamically for Essentials homes, online players, or friend lists. Use simple modes or configure custom templates with replacement placeholders like
$(home_name) or $(player_name).Showcase your top players! Set up paginated leaderboards for Vault economy or statistics (e.g. kills, mining blocks, playtime). Everything updates in the background off-thread to protect your server TPS.
Inject custom server buttons directly into the client's ESC pause screen and G quick-actions bar at bootstrap time! Players can open the main menu instantly without typing a command.
Enhance chat with Adventure API. Setup beautiful join/quit messages with detailed stats on hover, or let players use the
/share command to showcase their held item with full client tooltips.Built from the ground up to be safe for multithreaded servers. All I/O, database actions, and leaderboard queries run asynchronously, utilizing region-aware schedulers.
1. Drop
DialogMaster.jar into your server's plugins/ directory.2. Make sure you have PlaceholderAPI (and optionally Vault / EssentialsX) installed.
3. Restart your server. Configure your menus in
plugins/DialogMaster/menus/ and type /ydm reload to apply!Leaderboards are powered by ajLeaderboards placeholders directly:
%ajlb_lb_vault_eco_balance_<rank>_alltime_name% ➡ Top balance player name at rank N
%ajlb_lb_vault_eco_balance_<rank>_alltime_value% ➡ Top balance formatted value at rank N
%ajlb_lb_statistic_player_kills_<rank>_alltime_name% ➡ Top killer player name at rank N
%ajlb_lb_statistic_player_kills_<rank>_alltime_value% ➡ Top killer formatted value at rank N
Manage and navigate DialogMaster through commands:
/menu ➡ Opens the main navigation menu. (Permission:
dialogmaster.open)/links ➡ Opens the server links menu dialog. (Permission:
dialogmaster.open)/share ➡ Broadcasts the item in your main hand to chat with hover inspect support. (Permission:
dialogmaster.share)/ydm reload ➡ Reloads configuration files, menus, and caches. (Permission:
dialogmaster.admin)/ydm debug ➡ Toggles debug mode in console for logic checks. (Permission:
dialogmaster.admin)/ydm open <menu> <player> ➡ Opens a specific menu for a player. (Permission:
dialogmaster.admin)/ydm close <player> ➡ Closes any open dialog screen for a player. (Permission:
dialogmaster.admin)Below is an example of a central Main Hub Menu utilizing a multi-action grid layout with customized column sizes, native client-rendered item icons, and multiple button action schemes (menu navigation, web URLs, command execution, clipboard copy, and chat input suggestions):
YAML:
# File: plugins/DialogMaster/menus/main-menu.yml
main-menu:
title: "<blue><bold>Yowsef Studio"
external-title: "<gold>Main Menu"
type: multiAction
columns: 2
command: "/menu"
body:
- type: plain-message
content: "<gray>Welcome, <aqua>%player_name%</aqua>!"
- type: plain-message
content: "<gray>Balance: <gold>$%vault_eco_balance_formatted%"
buttons:
- label: "<item:oak_door> <green>Homes"
tooltip: "<gray>Manage your homes"
width: 150
action: open-menu
target: homes-menu
action-key: "dm:main_menu_open"
- label: "<item:gold_ingot> <yellow>Auction"
tooltip: "<gray>Browse the auction house"
width: 150
action: static-run-command
command: "/ah"
- label: "<item:paper> <blue>Website"
tooltip: "<gray>Opens the server website"
width: 150
action: static-open-url
target: "https://yourserver.net"
- label: "<item:paper> <yellow>Copy IP"
tooltip: "<gray>Copy server IP to clipboard"
width: 150
action: static-copy
target: "play.yourserver.net"
- label: "<item:writable_book> <aqua>Msg Staff"
tooltip: "<gray>Pre-fills chat with message command"
width: 150
action: static-suggest
command: "/msg staff "
- label: "<item:diamond> <green>Pay"
tooltip: "<gray>Send money to a player"
width: 150
action: open-menu
target: pay-menu
action-key: "dm:main_menu_open"
- label: "<item:ender_pearl> <red>Teleport"
tooltip: "<gray>Teleport options"
width: 150
action: open-menu
target: teleport-menu
action-key: "dm:teleport"
- label: "<item:golden_sword> <gold>Leaderboards"
tooltip: "<gray>Server leaderboards"
width: 150
action: open-menu
target: leaderboard-hub
action-key: "dm:leaderboard_open"
- label: "<item:barrier> <red>Close"
tooltip: "<gray>Close the menu"
width: 150
action: close
action-key: "dm:cancel"
Check out our wiki documentation for detailed setup guides, or join our official Discord server for fast support, bug reports, and feature requests!
