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](#3140-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
1. **Take backups.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
> 📄 Coming from 3.13.x? Existing `.blu` blueprint files will continue to load alongside the new `.blueprint` JSON 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](https://github.com/BentoBoxWorld/BentoBox/commit/594aaf04281e58c57ff4965196fcad911ef17798)]
`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](https://github.com/BentoBoxWorld/BentoBox/commit/2bba02bb4)]
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](https://github.com/BentoBoxWorld/BentoBox/pull/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 `.blueprint` JSON files instead of zipped `.blu` binaries. Existing `.blu` files 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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/2913)
New PlaceholderAPI placeholders expose the enabled/disabled state of every protection, setting, and world setting flag.
#### ⚙️ MythicMobs Hook: Configurable Delay & Callback — [PR #2929](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/2918) (fixes [#2917](https://github.com/BentoBoxWorld/BentoBox/issues/2917)) — bold/italic/underlined/strikethrough/obfuscated leaking into subsequent text segments.
* **Fix bold formatting leaking past prefix substitution** — [PR #2907](https://github.com/BentoBoxWorld/BentoBox/pull/2907)
* **Fix extra blank line in confirmation prompts** — [PR #2927](https://github.com/BentoBoxWorld/BentoBox/pull/2927) (fixes [#2919](https://github.com/BentoBoxWorld/BentoBox/issues/2919))
* **Preserve addon placeholders across `/bbox reload`** — [PR #2931](https://github.com/BentoBoxWorld/BentoBox/pull/2931), [PR #2932](https://github.com/BentoBoxWorld/BentoBox/pull/2932) (fixes [#2930](https://github.com/BentoBoxWorld/BentoBox/issues/2930))
* **Skip locale files with invalid BCP-47 tags** — [PR #2928](https://github.com/BentoBoxWorld/BentoBox/pull/2928)
* **Hide tooltip clutter in all panels** — [PR #2924](https://github.com/BentoBoxWorld/BentoBox/pull/2924) — banner patterns, potion effects, etc. hidden via the modern `TooltipDisplay` data component API.
* **Fix locale corrections across 22 languages** — [PR #2905](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/2926)
### Other Improvements (3.14.0)
* Improved warning messages for incompatible addons in AddonsManager
* Updated Russian locale translations — [PR #2925](https://github.com/BentoBoxWorld/BentoBox/pull/2925)
* Added test coverage for `visited_island_rank` placeholder — [PR #2909](https://github.com/BentoBoxWorld/BentoBox/pull/2909)
* Extended decoration leak tests to cover all five decoration types — [PR #2920](https://github.com/BentoBoxWorld/BentoBox/pull/2920)
---
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.14.0...3.14.1
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }