
BentoBox
SkyBlock, OneBlock, Boxed, SkyGrid, AcidIsland, CaveBlock, Poseidon, StrangerRealms - and more! These are just some of the island-based game modes that BentoBox powers. From the author of the original ASkyBlock.
3.14.2
release15 апреля 2026 г.A small bug-fix release for 3.14.0. If you're upgrading from 3.13.x or earlier, see the 3.14.0 changes below — they all apply to this release.
Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.12 ✔️ Paper Minecraft 26.1.1 – 26.1.2 ✔️ Java 21+
Upgrading
- Take backups. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Restart the server.
🔡 Locale file rename: If your server has locale files named with underscores (e.g.
pt_BR.yml), BentoBox will automatically rename them to the BCP-47 hyphen form (pt-BR.yml) on first startup. No manual action needed — check your logs for the rename notice.
3.14.2 Bug Fixes
Fix hex colour codes broken by BungeeCord round-trip
The &#RRGGBB hex colour format stopped working in 3.14.1. The root cause was a double-conversion: translateColorCodes serialises hex colours to the BungeeCord §x§R§R§G§G§B§B repeated-character format, but legacyToMiniMessage (called when rendering the message) didn't recognise that format — so &x was silently dropped and each following &R digit was misread as a named colour code (&2 → dark green, &3 → dark aqua, …), producing completely wrong colours. Fixed by normalising the BungeeCord format back to &#RRGGBB before processing.
🔡 Accept underscore locale filenames instead of ignoring them
[d2dd28e2]
Locale files named with underscores (e.g. pt_BR.yml, en_US.yml) are not valid BCP-47 language tags and were silently ignored since 3.14.0, causing those translations to go missing. BentoBox now automatically renames them to the correct hyphen form (pt-BR.yml) on startup and logs a warning. If a correctly-named file already exists, the underscore copy is reported as a duplicate and skipped.
Fix spurious "defaultRank below minimumRank" warnings
[bdc20675]
SETTING and WORLD_SETTING flags (such as the PVP flag) were incorrectly triggering a startup warning about defaultRank being below minimumRank. These flag types legitimately use -1 as a disabled state (Island.isAllowed treats >= 0 as enabled), so the rank-clamping check now only applies to PROTECTION flags.
3.14.2 Other Changes
- Add Paper Minecraft 26.1.2 (1.21.12) to the compatibility list.
Legend
- 🔡 locale files may need to be regenerated or updated.
What's Changed
- Fix hex colour codes broken by BungeeCord round-trip by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2944
- 🔡 Accept underscore locale filenames instead of ignoring them by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2944
- Fix spurious "defaultRank below minimumRank" warnings by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2944
- Add Minecraft 26.1.2 / 1.21.12 compatibility by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2944
Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.14.1...3.14.2
3.14.1
release12 апреля 2026 г.A small bug-fix release for 3.14.0. If you're upgrading from 3.13.x or earlier, see the 3.14.0 changes below — they all apply to this release.
Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.11 ✔️ Paper Minecraft 26.1.1 ✔️ Java 21+
Upgrading
- Take backups. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Restart the server.
📄 Coming from 3.13.x? Existing
.blublueprint files will continue to load alongside the new.blueprintJSON format introduced in 3.14.0 — no migration step required.
🔡 Coming from 3.13.x? All 22 non-English locale files were corrected in 3.14.0. If you use customised locale files, regenerating them is recommended.
3.14.1 Bug Fixes
Fix </green> leaking as literal text in flag setting tooltips
[594aaf04]
User.convertToLegacy was splitting mixed MiniMessage/legacy strings on \n before parsing, so a multi-line tag span like <green>foo\nbar</green> was processed as two independent lines — the second line had a closing tag with no opening, and MiniMessage rendered </green> as literal text in the lore. The whole string is now parsed as a single unit so the tag span stays balanced. The now-unnecessary <green>...</green> wrapper around [description] in the flag description/menu/setting layouts has also been dropped from every bundled locale file.
Fix lava-tip hologram showing raw <orange> MiniMessage tags
[2bba02bb]
The 3.14.0 obsidian-scooping lava-tip locale entry used <orange>, which is not a valid MiniMessage named colour — Minecraft's named-colour set tops out at <gold>. MiniMessage left the unknown tag as literal text, so the hologram rendered <orange>Scoop this up with a bucket</orange> verbatim. Switched to <gold> to match the Minecraft colour palette and the rest of the locale conventions.
3.14.1 Other Changes
Flag.Builder minimumRank API
[PR #2936]
New Flag.Builder.minimumRank(int) lets addons declare the lowest rank that may be selected for a PROTECTION flag (defaults to VISITOR_RANK, fully backwards-compatible). The auto-assigned CycleClick listener is constructed with the configured minimum so the settings-panel click-cycle won't let players select ranks below it. build() clamps defaultRank up to minimumRank (with a logged warning) so a misconfigured flag still has a selectable default. Adds Flag.getMinimumRank() and Flag.getClickHandler() getters. Binary-compatible — additive only.
Internal: expanded test coverage
Several internal subsystems received substantial test-coverage improvements (no behaviour change):
IslandsManager(51% → 64.6%)LocalesManager(40% → 49.2%)YamlDatabaseHandler(13% → 72%)AddonsManager(26% → 46%)BlueprintsManager,BlueprintClipboard,SafeSpotTeleport,WebManager,Util,ItemParser
Documentation: CLAUDE.md now documents the MiniMessage ↔ legacy round-trip pitfalls that produced the two bugs above.
3.14.0 changes
The full 3.14.0 changelog is reproduced below for anyone upgrading from 3.13.x or earlier.
Release Highlights
- ⚙️ Island Defaults tab in Admin Settings — A new GUI tab lets admins view and edit default island protection flags directly from the settings panel — no config editing required.
- 🔡 Message delivery type tags — Locale strings now support
[actionbar],[title],[subtitle], and[sound:name:volume:pitch]tags, letting you control exactly how messages are displayed to players. - ⚡ Chunk pre-generation — A new background chunk pre-generation system warms island chunks ahead of time, eliminating lag spikes on first visit. Disabled by default.
- 💡 Obsidian scooping lava tip — A floating hologram appears above newly formed scoopable obsidian, teaching players they can scoop it. Disappears when scooped or after a configurable timeout.
- 🔡 Flag state placeholders — New placeholders expose every flag's enabled/disabled state for use with PlaceholderAPI (e.g.,
%bskyblock_flag_PVP_OVERWORLD%). - 📄 Plain JSON blueprints — Blueprints are now stored as human-readable
.blueprintJSON files instead of zipped.blubinaries. Existing.blufiles are loaded automatically with full backward compatibility. - 🔺 Minecraft 26.1.1 region purge support — Island deletion now handles Minecraft 26.1.1's updated world file structure.
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
New Features (3.14.0)
📄 Plain JSON Blueprint Format — PR #2911
Blueprints have been switched from a zipped binary .blu format to plain JSON .blueprint files. This makes blueprints human-readable, diffable, and easy to edit in any text editor. Existing .blu files are detected and loaded automatically — no migration step required.
⚙️ Island Defaults Tab in Admin Settings GUI — PR #2912
A new "Island Defaults" tab has been added to the Admin Settings panel, letting admins view and modify default protection flags for new islands directly through the GUI.
🔡 Message Delivery Type Tags — PR #2910
Locale strings now support [actionbar], [title], [subtitle], and [sound:name:volume:pitch] tags placed at the start of locale values to control how messages are shown to players.
⚡ Chunk Pre-Generation Manager — PR #2916
A new chunk pre-generation system can warm island area chunks in the background, eliminating lag when players first visit. Disabled by default in config.yml.
💡 Obsidian Scooping Lava Tip Hologram — PR #2915
When scoopable obsidian forms (lava + water on an island), a small floating hologram now appears above the block to teach players they can pick it up. Removed when scooped or after a configurable duration. (See 3.14.1 fix above for the <orange> tag bug.)
🔡 Flag State Placeholders — PR #2913
New PlaceholderAPI placeholders expose the enabled/disabled state of every protection, setting, and world setting flag.
⚙️ MythicMobs Hook: Configurable Delay & Callback — PR #2929
The MythicMobs integration now supports a configurable delay for mob spawning and a callback that fires once the mob has been spawned.
🔺 Minecraft 26.1.1 Region Purge Support — PR #2902
Island deletion's region file purge now handles Minecraft 26.1.1's updated world file structure.
Bug Fixes (3.14.0)
- Fix MiniMessage formatting on panel items — PR #2903 — default italic and cross-nested tag handling in the legacy-to-MiniMessage converter.
- Fix bold and decoration leaking across legacy round-trip — PR #2918 (fixes #2917) — bold/italic/underlined/strikethrough/obfuscated leaking into subsequent text segments.
- Fix bold formatting leaking past prefix substitution — PR #2907
- Fix extra blank line in confirmation prompts — PR #2927 (fixes #2919)
- Preserve addon placeholders across
/bbox reload— PR #2931, PR #2932 (fixes #2930) - Skip locale files with invalid BCP-47 tags — PR #2928
- Hide tooltip clutter in all panels — PR #2924 — banner patterns, potion effects, etc. hidden via the modern
TooltipDisplaydata component API. - Fix locale corrections across 22 languages — PR #2905
- Preserve mid-text spaces in legacy/MiniMessage round-trip
- Support MiniMessage in welcome sign locale entries
- Defer island saves while settings panel is open — PR #2926
Other Improvements (3.14.0)
- Improved warning messages for incompatible addons in AddonsManager
- Updated Russian locale translations — PR #2925
- Added test coverage for
visited_island_rankplaceholder — PR #2909 - Extended decoration leak tests to cover all five decoration types — PR #2920
Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.14.0...3.14.1
3.14.0
release10 апреля 2026 г.BentoBox Changelog
[3.14.0] — 2026-04-10
Release Highlights
- ⚙️ Island Defaults tab in Admin Settings — A new GUI tab lets admins view and edit default island protection flags directly from the settings panel — no config editing required.
- 🔡 Message delivery type tags — Locale strings now support
[actionbar],[title],[subtitle], and[sound:name:volume:pitch]tags, letting you control exactly how messages are displayed to players. - ⚡ Chunk pre-generation — A new background chunk pre-generation system warms island chunks ahead of time, eliminating lag spikes on first visit. Disabled by default.
- 💡 Obsidian scooping lava tip — A floating hologram appears above newly formed scoopable obsidian, teaching players they can scoop it. Disappears when scooped or after a configurable timeout.
- 🔡 Flag state placeholders — New placeholders expose every flag's enabled/disabled state for use with PlaceholderAPI (e.g.,
%bskyblock_flag_PVP_OVERWORLD%). - 📄 Plain JSON blueprints — Blueprints are now stored as human-readable
.blueprintJSON files instead of zipped.blubinaries. Existing.blufiles are loaded automatically with full backward compatibility. - 🔺 Minecraft 26.1.1 region purge support — Island deletion now handles Minecraft 26.1.1's updated world file structure.
Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.11
✔️ Paper Minecraft 26.1.1
✔️ Java 21+
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Restart the server.
- Existing
.blublueprint files will continue to work — they are loaded transparently alongside the new.blueprintformat. - You should be good to go!
📄 Blueprint migration note: Blueprints are now saved in plain JSON
.blueprintformat. Your existing.blufiles will continue to load, but new saves will use the new format. This makes blueprints easy to inspect, version-control, and share.
🔡 Locale note: All 22 non-English locale files received corrections for mistranslations, broken tags, and untranslated strings. If you use customised locale files, regenerating them is recommended.
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
New Features
📄 Plain JSON Blueprint Format
[PR #2911]
Blueprints have been switched from a zipped binary .blu format to plain JSON .blueprint files. This makes blueprints human-readable, diffable, and easy to edit in any text editor. Existing .blu files are detected and loaded automatically — no migration step required. New blueprint saves use the .blueprint extension.
Includes filename length validation to guard against excessively long blueprint names on disk.
⚙️ Island Defaults Tab in Admin Settings GUI
[PR #2912]
A new "Island Defaults" tab has been added to the Admin Settings panel. This lets admins view and modify the default protection flag settings for new islands directly through the GUI, without needing to edit configuration files manually.
🔡 Message Delivery Type Tags
[PR #2910]
Locale strings now support delivery type tags that control how messages are shown to players:
[actionbar]— display as an action bar message[title]— display as a title[subtitle]— display as a subtitle[sound:name:volume:pitch]— play a sound alongside the message
Tags are placed at the start of locale values and are stripped before rendering the text content.
⚡ Chunk Pre-Generation Manager
[Commits]
A new chunk pre-generation system can warm island area chunks in the background, eliminating lag when players first visit. The system defers work until after server load and runs asynchronously to avoid main-thread stalls. Disabled by default in config.yml — enable it if your server has the resources.
💡 Obsidian Scooping Lava Tip Hologram
[PR #2915]
When scoopable obsidian forms (lava + water on an island), a small floating hologram now appears above the block to teach players they can pick it up. The hologram is removed immediately when the obsidian is scooped, or after a configurable duration.
🔡 Flag State Placeholders
[PR #2913]
New PlaceholderAPI placeholders expose the enabled/disabled state of every protection, setting, and world setting flag. Useful for scoreboards, tab lists, and addon integrations.
⚙️ MythicMobs Hook: Configurable Delay & Callback
[PR #2929]
The MythicMobs integration now supports a configurable delay for mob spawning and a callback that fires once the mob has been spawned, enabling addons to interact with spawned MythicMobs entities.
🔺 Minecraft 26.1.1 Region Purge Support
[PR #2902]
Island deletion's region file purge now handles Minecraft 26.1.1's updated world file structure, ensuring island chunks are properly cleaned up on the newer Paper builds.
Bug Fixes
Fix MiniMessage formatting on panel items
[PR #2903]
Fixed default italic being applied to panel items and corrected cross-nested tag handling in the legacy-to-MiniMessage converter.
Fix bold and decoration leaking across legacy round-trip
Fixed bold, italic, underlined, strikethrough, and obfuscated decorations leaking into subsequent text segments when MiniMessage content is round-tripped through legacy colour codes. A custom component walker now emits §r resets where Adventure's built-in serializer does not.
Fix bold formatting leaking past prefix substitution
[PR #2907]
Fixed bold text from [prefix] substitutions continuing into the message body by appending a §r reset after the prefix.
Fix extra blank line in confirmation prompts
Fixed an unwanted blank line appearing in conversation-style confirmation prompts.
Preserve addon placeholders across /bbox reload
[PR #2931] [PR #2932] Fixes #2930
Addon-owned and game-mode placeholders are no longer lost when running /bbox reload.
Skip locale files with invalid BCP-47 tags
[PR #2928]
Locale files with names that aren't valid BCP-47 language tags are now silently skipped instead of causing errors or blank entries in the locale selection panel.
Hide tooltip clutter in all panels
[PR #2924]
Banner patterns, potion effects, and other item-specific tooltip data are now hidden in all BentoBox GUI panels using the modern TooltipDisplay data component API.
Fix locale corrections across 22 languages
[PR #2905]
Mistranslations, broken colour/formatting tags, untranslated strings, and typos corrected across all 22 non-English locale files.
Preserve mid-text spaces in legacy/MiniMessage round-trip
Fixed spaces being collapsed when converting between legacy and MiniMessage formatting, preserving intended whitespace in translated strings.
Support MiniMessage in welcome sign locale entries
Welcome signs on island creation now correctly render MiniMessage-formatted locale strings.
Defer island saves while settings panel is open
[PR #2926]
Island data is no longer saved on every settings click. Saves are deferred until the settings panel is closed, and a click cooldown prevents accidental rapid toggling.
Other Improvements
- Improved warning messages for incompatible addons in AddonsManager
- Updated Russian locale translations [PR #2925]
- Added test coverage for
visited_island_rankplaceholder [PR #2909] - Extended decoration leak tests to cover all five decoration types [PR #2920]
What's Changed
- Support Minecraft 26.1.1 world file structure in region purge by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2902
- Fix MiniMessage formatting: default italic on panel items and tag nesting by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2903
- 🔡 Fix all 22 locale files: mistranslations, broken tags, untranslated strings by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2905
- Fix bold formatting leaking past prefix substitution by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2907
- Add test coverage for
visited_island_rankplaceholder by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2909 - 🔡 Add message delivery type tags (actionbar, title, subtitle, sound) by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2910
- 📄 Switch blueprints from zipped .blu to plain JSON .blueprint format by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2911
- ⚙️ Add Island Defaults tab to Admin Settings GUI by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2912
- 🔡 Add flag state placeholders for game mode addons by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2913
- 💡 Add lava tip hologram when scoopable obsidian forms by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2915
- Fix bold (and other decorations) leaking across legacy round-trip by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2918
- Extend decoration leak tests by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2920
- Hide additional item tooltips in panels via TooltipDisplay API by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2924
- Update Russian text by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2925
- Defer island saves while settings panel is open; click cooldown by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2926
- Fix #2919: extra blank line in confirmation prompts by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2927
- Skip locale files with invalid BCP-47 tags by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2928
- ⚙️ Make MythicMobs spawn delay configurable by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2929
- Preserve addon placeholders across /bbox reload by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2931
- Don't clear gamemode addon placeholders on reload by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2932
Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.13.0...3.14.0
3.13.0
release4 апреля 2026 г.BentoBox Changelog
[3.13.0] — 2026-04-04
New Release Highlights
- 🔺 Paper 26.1.1 (Minecraft 26.1.1) support — BentoBox now recognises Paper's new year-based versioning scheme (
26.x.x) and no longer shows a compatibility warning. The version parser has been updated to handle the newgetBukkitVersion()format. BentoBox remains fully compatible with Paper 1.21.5 – 1.21.11 servers. - ⚙️ 🔡 PAUSE_MOB_GROWTH protection flag — Minecraft 26.1.1 introduces golden dandelions that can pause or unpause baby mob growth. A new island protection flag lets island owners control who can use this feature. Defaults to members only. Supports both main-hand and off-hand interactions.
- 🔡 MiniMessage locale migration — All locale files have been migrated from legacy
§/&colour codes to Paper's MiniMessage format (<green>,<bold>, etc.), with full backward compatibility for existing custom translations. The format of MiniMessage messages can be found here.
Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.11
✔️ Paper Minecraft 26.1.1
✔️ Java 21+
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Restart the server.
- You should be good to go!
🔡 Locale migration note: All 23 locale files have been migrated to MiniMessage formatting. If you have customised locale files, BentoBox will still handle legacy
§/&codes, but regenerating your locale files is recommended to take advantage of MiniMessage features.
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
New Features
🔺 Paper 26.1.1 Support
[PR #2897]
Paper has adopted a new year-based versioning scheme starting in 2026 (e.g., 26.1.1 instead of 1.21.12). BentoBox's ServerCompatibility version parser has been updated to handle the new getBukkitVersion() format (26.1.1.build.14-alpha), which includes a .build.N suffix that the old parser couldn't strip. V26_1_1 has been added to the supported versions enum as COMPATIBLE.
BentoBox continues to compile against the Paper 1.21.11 API and remains compatible with all currently supported 1.21.x versions.
⚙️ 🔡 PAUSE_MOB_GROWTH Protection Flag
Minecraft 26.1.1 added the ability to use a golden dandelion on a baby mob to pause or resume its growth. A new PAUSE_MOB_GROWTH island protection flag controls who can do this. The flag defaults to members and above; visitors are blocked.
The listener checks PlayerInteractEntityEvent for a player holding GOLDEN_DANDELION in either hand targeting a baby Ageable mob. Uses Enums.getIfPresent for the flag icon material so BentoBox remains backward compatible with 1.21.x servers where the item doesn't exist.
Translations added to all 23 locale files.
🔡 MiniMessage Locale Migration
[PR #2894] See: https://docs.papermc.io/adventure/minimessage/format/
All locale files have been migrated from legacy §/& colour codes and ChatColor API usage to Paper's native MiniMessage format. This enables richer formatting (gradients, hover text, click events) and aligns with Paper's direction of deprecating legacy formatting.
Backward compatibility is maintained: existing custom locale files using legacy codes will continue to work. Multiple follow-up fixes ensured edge cases were handled correctly:
- Mixed MiniMessage/legacy content no longer shows raw tags
- Multi-line translations preserve newlines correctly in panel lore
- Flag panel rank colours render correctly
- Conversation prompts display properly
- Rank display maintains backward compatibility with legacy locale files
Bug Fixes
Fix ItemStack quantity > 99 crash during serialization
[PR #2895]
Fixed a crash when serialising an ItemStack with a quantity greater than 99. The quantity is now clamped to a valid range before serialization.
Deduplicate lock/ban notification messages
[PR #2892]
Fixed an issue where players would receive repeated lock/ban notification messages when standing at an island boundary, causing chat spam.
Fix hex color codes breaking subsequent legacy color codes
[PR #2893]
Fixed a bug where hex colour codes (e.g., &#FF0000) would corrupt subsequent legacy & colour codes in the same string.
What's Changed
- Fix spam messages on blocked island by deduplicating notifications in LockAndBanListener by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2892
- Fix hex color codes breaking subsequent legacy color codes by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2893
- 🔡 Migrate locale formatting from legacy & codes to MiniMessage by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2894
- Fix ItemStack quantity > 99 crash during serialization by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2895
- 🔺 Add Paper 26.1.1 support by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2897
- ⚙️ 🔡 Add PAUSE_MOB_GROWTH protection flag by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2898
- Enhance PauseMobGrowthListener to support off-hand interactions by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2900
Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.12.0...3.13.0
BentoBox 3.12.0
release1 апреля 2026 г.BentoBox Changelog
[3.12.0] — 2026-03-28
New Release Highlights
- 🗺️ ⚙️ Web-map integrations — BentoBox now ships with built-in BlueMap and Dynmap hooks that display island markers and area overlays on your web map automatically. A public Map API lets addon authors target any web-map plugin.
- ⚙️ 🔡 SPAWN_PROTECTION world flag — Prevents players from dying to the void at spawn. Configurable per game-mode via the world settings panel.
- ⚙️ 🔡 WIND_CHARGE protection flag — Controls whether visitors can fire wind charges on islands. Defaults to blocked for visitors.
- ⚙️ 🔡 Expel fallback command — A new
expelCommandconfig key (default:spawn) specifies the command run when an expelled player has no island or spawn point to fall back to. - ⚙️ 🔡 Blueprint paste commands — Blueprint bundles can define a list of commands that run when the blueprint is pasted, enabling automation on island creation.
- 🔡 Blueprint GUI pagination — The blueprint management panel now paginates so large blueprint libraries are no longer cramped onto a single screen.
- ⚙️ 🔡 Admin max team-size command — A new
/bbox admin setmaxteamsize <player> <size>command lets you override the maximum team size on a per-island basis without editing config files. - 🔡 Clickable home list — The
/is homeslist is now clickable; selecting a home name in chat runs the go-home command automatically. - ⚙️ 🔡 Force-field fling — Players are now flung away from island force-fields when they walk into them, rather than just being teleported (improves feel on flying game modes).
- ⚙️ Obsidian-scooping abuse fix — Two new config knobs (
obsidianScoopingCooldownandobsidianScoopingRadius) prevent rapid lava/obsidian duplication exploits.
Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.1
✔️ Java 21
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Restart the server.
- You should be good to go!
⚙️ Config migration note: Three new keys are added to
config.yml(expelCommand,obsidianScoopingRadius,obsidianScoopingCooldown). BentoBox will add them automatically on first start.
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
New Features
⚙️ BlueMap & Dynmap Web-Map Integration
[PR #2861] [PR #2883] [PR #2884] [PR #2885]
BentoBox now ships with hooks for BlueMap and Dynmap. When either plugin is installed, island markers and (for BlueMap) coloured area overlays are added to the live web map automatically, without any configuration required.
A new generic Map API (world.bentobox.bentobox.api.map) lets addon authors register their own web-map implementations, so any mapping plugin can be supported in the future.
Additional Map API polish after initial merge:
- Map hooks now register before addons enable, so addons can create markers during
onEnable(). Island population is deferred toBentoBoxReadyEventwhen islands are fully loaded. addPointMarker()now accepts aniconNameparameter; Dynmap maps this to its icon registry (with fallback to"default") and all 85 built-in Dynmap icon names are documented inMapManagerJavadoc.- Dynmap point marker labels support HTML markup (e.g. coloured owner names) via
isMarkupLabel=true.
⚙️ 🔡 SPAWN_PROTECTION World Setting Flag
[PR #2865]
A new SPAWN_PROTECTION world setting flag prevents players at spawn from falling into the void. When enabled, the spawn area is treated as protected ground and void-death is suppressed. Useful for game modes where the spawn platform is exposed.
⚙️ 🔡 WIND_CHARGE Protection Flag
[PR #2855]
A new WIND_CHARGE island protection flag controls who can use wind charge items on an island. By default visitors are blocked, preventing griefing through knockback.
⚙️ 🔡 Expel Fallback Command
[PR #2846]
A new expelCommand setting in config.yml (default: spawn) specifies the console command run when an expelled player has no home island and no known spawn point. Previously such players would be stuck.
⚙️ Blueprint Paste Commands
[PR #2852]
Blueprint bundles now support an optional commands list. Each command is run (as the server console) when the bundle's blueprint is pasted, making it easy to trigger automation or economy actions on island creation.
🔡 Blueprint GUI Pagination
[PR #2867]
The blueprint management GUI now paginates. Servers with large numbers of blueprints will see next/previous page navigation buttons instead of a single overflowing panel.
⚙️ 🔡 Admin Max Team-Size Command
A new /bbox admin setmaxteamsize <player> <size> command lets server admins override the maximum team size for a specific island at runtime, without touching config files.
🔡 Clickable Home List in Chat
[PR #2879]
The /is homes listing in chat is now clickable. Clicking a home name runs the go-home command for that home automatically, saving players from typing.
🔡 Force-Field Fling
Players who walk into an island force-field (locked island boundary) are now physically flung back rather than teleported, giving a more natural feel, especially on flying game modes.
🔡 Bypass Lock Notification
[PR #2869]
Admins and players with the bypass permission now receive a notification message when they enter a locked island, so it is clear that the lock has been overridden.
Geo-Limit Projectiles
[PR #2863]
Projectiles (arrows, tridents, etc.) are now included in the geo-limit settings panel, giving island owners granular control over which projectile types visitors are allowed to fire.
Paginated Help Command
[PR #2859]
/is help now supports a page number argument (/is help 2) so large command lists do not flood chat.
/island lock Command
[PR #2858]
A new /island lock shortcut command lets island owners toggle the island lock without opening the settings panel.
Bug Fixes
Lava Bucket / Obsidian Duplication
[PR #2842] [PR #2856] [PR #2860]
Fixed an exploit where players could rapidly scoop buckets of lava from obsidian to duplicate it. A per-player cooldown (obsidianScoopingCooldown, default: 1 minute) and a proximity radius check (obsidianScoopingRadius, default: 5 blocks) now prevent abuse. Both values are configurable in config.yml.
Player XP Not Resetting
[PR #2866]
Fixed a bug where player XP was not being reset when joining a team or creating a new island via the no-teleport code path.
Sugar Cane, Cocoa Beans & Nether Wart Protection Flags
[PR #2870]
Sugar cane was not registered under the HARVEST flag and was not protected against premature breaking. Sugar cane, cocoa beans, and nether wart were also missing from CROP_PLANTING protection. They now all respect the correct flag settings.
Purge Unowned Islands NPE
[PR #2843]
Fixed a NullPointerException in the purge-unowned-islands command that occurred when an island's world was null.
End/Nether Explosion Crash
[PR #2844]
Fixed a NullPointerException in StandardSpawnProtectionListener that occurred when an explosion happened in a standard End or Nether world that was not managed by BentoBox.
Island Settings Comparator
[PR #2864]
Fixed an inconsistent comparator in the island settings panel that could throw a IllegalArgumentException under certain flag ordering conditions.
Color Codes in Multi-Line Translated Strings
[PR #2877]
Fixed color/formatting codes being stripped from the second and subsequent lines of multi-line locale strings.
Players Falling into the Void on New Island Creation
[PR #2890]
Fixed a bug where players could fall into the void immediately after a new island was created if the teleport destination hadn't solidified yet. homeTeleportAsync now performs a safe-spot check before teleporting and retries with exception handling if the location lookup fails, preventing void deaths on fresh islands.
Configuration Changes
Three new settings in config.yml:
| Key | Default | Description |
|---|---|---|
expelCommand | spawn | Console command run when an expelled player has no destination |
obsidianScoopingRadius | 5 | Block radius (0–15) checked for nearby obsidian during bucket use |
obsidianScoopingCooldown | 1 | Minutes before a player can scoop obsidian again (minimum: 1) |
Internal / Developer Changes
- Added a generic Map API (
api/map) so addon authors can integrate with any web-map plugin. - Extensive SonarCloud quality pass: sealed classes,
ChatColorremoval, lambda/@Overridestyle, variable-shadowing fixes, cognitive-complexity reductions (see PR #2875). - Removed unnecessary
publicmodifiers from JUnit 5 test classes and methods (PR #2849). - Added
CLAUDE.mdproject guidance file for AI-assisted development (PR #2848). - Resolved all previously failing and skipped tests; test suite is now fully green (PR #2872).
- Added public API method for reading Why-debug flag messages from
FlagListener(PR #2857).
What's Changed
- Fix lava bucket duplication exploit with obsidian scooping cooldown by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2842
- Fix NPE in purge unowned command when island world is null by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2843
- Fix NPE in StandardSpawnProtectionListener for end/nether explosions by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2844
- Fix error message when setting home by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2845
- ⚙️ 🔡 Add expelCommand config for expelled player fallback by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2846
- Add Copilot instructions setup by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2848
- chore: remove public modifiers from JUnit 5 test methods by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2849
- ⚙️ Run commands when blueprint bundle is pasted by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2852
- Fix black glass description by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2853
- ⚙️ 🔡 Add AdminTeamSetMaxSizeCommand by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2851
- ⚙️ 🔡 Show team size in admin info and add coop/trust placeholders by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2854
- ⚙️ 🔡 Add WIND_CHARGE island protection flag by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2855
- ⚙️ Add configurable obsidian scooping radius by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2856
- Add public API for Why debug reporting in FlagListener by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2857
- 🔡 Add /island lock command by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2858
- 🔡 Add pagination to DefaultHelpCommand by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2859
- ⚙️ Add configurable obsidian scooping cooldown duration by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2860
- ⚙️ Add BlueMap hook for island markers by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2861
- Add projectile support to geo-limit-settings by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2863
- Fix island settings comparator by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2864
- ⚙️ 🔡 Add SPAWN_PROTECTION world setting flag by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2865
- Fix player XP not resetting on team join or island creation by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2866
- 🔡 Add pagination to blueprint management GUI by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2867
- Fix BSkyBlock end world protection by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2868
- 🔡 Add bypass lock notification message by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2869
- Fix sugar cane / cocoa beans / nether wart protection flags by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2870
- Fix all failing and skipped tests by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2872
- Fix BlueMap hook registration error by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2874
- Fix SonarCloud issues (low / medium / high) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2875
- Fix color codes in multi-line translated strings by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2877
- 🔡 Make home list clickable in chat by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2879
- Merge force-field fling feature by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2880
- Fix translation hover text by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2882
- ⚙️ Add Dynmap hook for island border display by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2883
- Add area markers and public API to BlueMapHook by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2884
- ⚙️ Add generic Map API for web-map addon integration by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2885
- Fix players falling into void on new island creation by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2890
- Release 3.12.0 by @tastybento
Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.11.2...3.12.0