Release 3.21.0
A player-experience release. BentoBox gains a Dialogs API — real modal UI built on Minecraft 26's native dialogs — and uses it for four high-friction flows: command confirmations, the /island go destination picker, team invites, and a first-join game-mode chooser. On top of that, /island go <name> now forgives typos, wrong case, and partial home names instead of dumping the full list.
Compatibility
✔️ Paper Minecraft 1.21.5 – 26.2
✔️ Java 25+
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Start the server.
- ⚙️ A new
island.dialogsconfig section is added on first run —confirmations,go-picker, andteam-invitesdefault on;game-mode-selectiondefaults off. Dialogs require Minecraft 26+; on older servers every flow automatically falls back to the classic chat/command behaviour, so no action is needed there. - 🔡 New dialog locale keys (
general.dialogs.*plus dialog/picker keys under the confirmation,island go, and team-invite commands) were added to every bundled language. If you maintain custom locale files, regenerate or add these keys.
Highlights
- ⚙️ 🔡 Dialogs — sensitive-command confirmations, the
/island gopicker, team invites, and first-join game selection can now appear as modal dialogs the player can't misread or scroll past, with automatic fallback on pre-26 servers. - Forgiving
/island gomatching —myisland,hom, or a stray double-space now teleports you where you meant, instead of failing an exact case-sensitive match. - 🔡 uk.yml cleanup — removed duplicated placeholder panel sections from the Ukrainian locale.
New Features
⚙️ 🔡 Dialogs API and dialog-driven flows
A new public world.bentobox.bentobox.api.dialogs package wraps Paper's modal dialog system (Minecraft 26+) alongside the Panels API: DialogBuilder (fluent title/body/buttons, localized via User), DialogButton (label, tooltip, main-thread onClick), BBDialog (show(User)), and Dialogs.isSupported() for graceful degradation. Everything is Adventure Component-based end-to-end so click actions survive.
Four flows now use it, each behind its own toggle in the new consolidated island.dialogs config section, and each falling back to the previous behaviour if the dialog can't be built or shown (older server, error):
| Flow | Config key | Default |
|---|---|---|
Sensitive-command confirmations show [Confirm]/[Cancel] instead of "type the command again" |
island.dialogs.confirmations |
on |
A bare /island go with several islands/homes opens a button-per-destination picker |
island.dialogs.go-picker |
on |
Receiving a team invite auto-opens an [Accept]/[Decline] dialog |
island.dialogs.team-invites |
on |
| Brand-new players get a non-dismissable "choose your game" dialog when several game modes are installed | island.dialogs.game-mode-selection |
off (intrusive by design) |
⚙️ Config note: the whole
island.dialogssection is new. On servers older than Minecraft 26 the toggles are ignored and the classic behaviour is used regardless.
🔡 Locale note: the new dialog keys were translated into all 22 bundled locales, preserving each file's style.
Addon developers get the same API for their own confirmations and pickers — check Dialogs.isSupported() and provide a fallback, exactly as core does.
Forgiving name matching for /island go
/island go <name> used to require an exact, case-sensitive match against island and home names — any miss dumped the whole list. It now resolves the typed name in decreasing order of confidence: exact match, then case/colour/whitespace-insensitive match, then unique case-insensitive prefix (hom → Home). Anything ambiguous still falls through to the existing list rather than guessing, and the resolved canonical name is used for the teleport so named homes stay accurate.
Other Improvements
🔡 Ukrainian locale cleanup
Removed duplicated placeholder panel sections from uk.yml.
Legend
- 🔡 Locale files may need regenerating or updating.
- ⚙️ Config options have been added, renamed, or removed.
- 🔺 Special attention needed.
What's Changed
- ⚙️ 🔡 Add Dialogs API and wire it into confirmations, go picker, team invites & first-join (#3021) by @tastybento in #3033
- Forgiving name matching for /island go (#3024) by @tastybento in #3031
- 🔡 Remove duplicated placeholder panel sections in uk.yml locale by @tastybento
Full Changelog: 3.20.0...3.21.0