DialogForge logoDialogForge

Installation

Requirements, the install steps, what happens on the first run and what the plugin folder looks like afterwards.

Installing DialogForge takes about two minutes. The only thing you have to get right is the Paper version.

Requirements

Server softwarePaper only
Minimum version1.21.7, build 17 or newer
Maximum tested26.2
Java21
Client1.21.6 or newer, to see a dialog at all
PlaceholderAPIOptional, soft-depend

Spigot, Bukkit and Purpur are not supported and will not be. The Dialog API this plugin is built on is Paper's own, and Paper hardforked at 1.21.4, before it existed, so it has no equivalent on those platforms.

Why 1.21.7 build 17

The dialog feature itself arrived in Minecraft 1.21.6. Paper's own Dialog API followed a version later, in 1.21.7, and only from build 17 onwards. DialogForge is compiled against that exact release on purpose: compiling against a newer artifact would make it easy to use API that an older supported server does not have. Paper is forward compatible, so the same jar loads on everything up to the current 26.x line.

A version timeline from Minecraft 1.21.6, where dialogs arrived, through Paper 1.21.7 build 17, where the Dialog API arrived and DialogForge is compiled against, to 26.2, the newest version tested, with one jar covering the whole span.

The Dialog API is still marked experimental in the 1.21.7 javadocs. That is an IDE level warning rather than something DialogForge can opt out of, and it means a Paper update is the most likely place a future break comes from.

Install

Get the jar

See Download for where to buy it and how to get the latest build.

Stop the server

Shut it down fully before adding the jar.

Drop in the jar

Move the DialogForge jar into your plugins/ folder.

Start the server

DialogForge checks for Paper and for the Dialog API classes before anything else. Either check failing logs one line and disables the plugin, so a healthy start is silent on that front.

Try it

Run /guide in game. It opens the shipped server guide, a working menu you can read straight away and copy from for your own.

First run

The first start writes config.yml, all three shipped language files under lang/, and five example menus under menus/: guide.yml, rules.yml, settings.yml, staff.yml and faq.yml. Every line of every file is commented. faq.yml is the one drawn in the panel layout, and it reads as a plain list until the font pack is in place.

Storage is set up at the same time. With the default SQLite backend that means creating data.db in the plugin's own folder. Nothing else is needed.

PackService also runs on every enable, writing the panel resource pack to plugins/DialogForge/pack/. It does this whether or not you use the panel layout, see Layout modes for what to do with it.

Plugin folder

config.yml
en.yml
fr.yml
es.yml
guide.yml
rules.yml
settings.yml
staff.yml
faq.yml
DialogForge-Panel.zip
data.db
PathWhat it holdsPage
config.ymlLayout, panel, permissions, storage and every other global settingConfiguration
lang/*.ymlEvery message DialogForge sends, English always kept as the fallbackMessages & language
menus/*.ymlOne file per menu, subfolders allowedMenus
backgrounds/Images declared under backgrounds: in config.ymlBackgrounds
icons/Images declared under icons: in config.ymlIcons
pack/The panel resource pack, written on every enableLayout modes
data.dbThe SQLite database, only when storage.type is sqliteStorage

Upgrading

Stop the server, replace the jar, start it again. config.yml is read through BoostedYAML, so new keys arrive with their comments and the values you already set are kept exactly as you left them.

Reloading without a restart

auto-reload.enabled is on by default. Editing config.yml, a language file or anything under menus/ and saving it reloads the plugin on its own within interval-ticks, no command needed. Anyone with a menu open at the time is shown the same page again once the files have been read.

/dialogforge reload does the same thing on demand, and needs dialogforge.reload.

Optional integrations

WhatWhyWhere
PlaceholderAPIEvery expansion on the server becomes usable in menu textPlaceholders
ItemsAdderMerge the panel font into the pack ItemsAdder already servesLayout modes
MySQLShared player state across a networkStorage
Any permissions pluginoptional and required permission modesPermissions

On this page