BentoBoxСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (58)
release
3.23.4
3.23.417 окт. 2026 г.2,9 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Что нового
## Release Highlights
* **Safe End arrival without the obsidian platform**: with `create-obsidian-platform: false`, going through an End portal could drop the player into the void. Players now land on the nearest safe spot, or in a pod if there is none.
* ✨ **Use your own inventory while a panel is open**: players can move items, drop them and use bundles in their own inventory while a BentoBox panel such as `/island settings` is open. Shift-clicks, double-clicks and drags that could push items into a panel stay blocked, so items can't be lost.
* **Addon config fix**: `saveConfig()` no longer crashes for an addon that has no `config.yml`.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.3
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. You should be good to go!
There are no new locale keys and no `config.yml` or panel template changes in this release.
---
## New Features
### ✨ Player Inventory Clicks While a Panel Is Open
[[PR #3100](https://github.com/BentoBoxWorld/BentoBox/pull/3100)]
This brings back the goal of [#2767](https://github.com/BentoBoxWorld/BentoBox/issues/2767) without the problems that got it reverted in 3.11.1 ([#2776](https://github.com/BentoBoxWorld/BentoBox/issues/2776)). While a panel is open, players can pick up, place, swap, drop (Q / Ctrl+Q) and use bundles in their own inventory. Any action that could move an item into the panel is still blocked: shift-click, double-click to collect, and drags that touch a panel slot. A click on a panel slot while holding an item is always cancelled.
> 🧩 **Addon developers:** `PanelListener` has a new default method, `allowsPlayerInventoryClicks()`, which returns `false`. Panels with a listener therefore see inventory clicks exactly as before, so icon pickers in the core and in Challenges and Biomes are unchanged. Override it to return `true` to opt in. The change is binary compatible.
---
## Bug Fixes
### End Portal Could Drop Players into the Void
[[PR #3101](https://github.com/BentoBoxWorld/BentoBox/pull/3101)]
When the End obsidian platform was turned off, the server teleported the player straight to the portal destination, whether or not there was a floor. BentoBox now cancels unsafe End arrivals and sends the player to the nearest safe spot, then the highest block, then a pod. Repeat portal events fired while the player stands in the portal are also cancelled, so the player is not sent to the vanilla End spawn. Arrivals that are already safe still teleport instantly, and nothing changes when the platform is on. Safe-spot pods now teleport the player to the centre of the block, not its edge.
### Addon `saveConfig()` NullPointerException
[[commit fb446a7](https://github.com/BentoBoxWorld/BentoBox/commit/fb446a7af)]
`Addon.getConfig()` returned `null` when the addon had no `config.yml`, so `saveConfig()` threw an error. It now returns an empty configuration, as Bukkit's `JavaPlugin.getConfig()` does.
---
## What's Changed
* Let players use their own inventory while a panel is open by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3100
* Safe End arrival when the obsidian platform is off by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3101
* Fix Sonar S2259: null addon config and MongoDB connector by @tastybento
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.23.3...3.23.4
release
3.23.3
3.23.33 окт. 2026 г.4,8 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Что нового
## Release Highlights
* 🐛 **Obsidian scooping dupe fixed**: scooping obsidian back into lava could give a player both the obsidian and the lava bucket. Updating is recommended for every server with OBSIDIAN_SCOOPING enabled.
* ⚙️ **Customisable Command Ranks panel**: the Command Ranks panel opened from `/island settings` now uses a template, `panels/command_ranks_panel.yml`, and gains paging.
* ✨ **Settings panel improvements**: `/island settings` remembers the player's Basic/Advanced/Expert choice, Command Ranks hides sub-commands the player has no permission for, and the Break Spawners icon loses the stray vanilla spawn egg tooltip.
* 🐛 **Multiverse auto-load respected**: BentoBox no longer resets `auto-load` to false on every startup for worlds Multiverse already knows about.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.3
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server. The new `command_ranks_panel.yml` template is written to `plugins/BentoBox/panels/` on first run.
5. You should be good to go!
> ⚙️ **Panel note:** `command_ranks_panel.yml` is a new file. Nothing existing is overwritten, and a game mode addon may ship its own copy in its `panels/` folder, which takes precedence for that game mode. There are no new locale keys and no `config.yml` changes.
### Legend
- ⚙️ config options have been removed, renamed, or added.
---
## New Features
### ⚙️ Template-Editable Command Ranks Panel
[[PR #3096](https://github.com/BentoBoxWorld/BentoBox/pull/3096)] Closes [#3095](https://github.com/BentoBoxWorld/BentoBox/issues/3095)
The Command Ranks panel is now laid out by `panels/command_ranks_panel.yml`, in the same way as the settings panel. The template supports `COMMAND`, `NEXT` and `PREVIOUS` buttons, and the `COMMAND` button's icon, title and description can be customised. The default template looks the same as the old panel, but now pages at 45 commands; the old panel silently dropped every command after the 49th.
### 🧩 `PlayerDeathsChangedEvent` for Addons
[[PR #3093](https://github.com/BentoBoxWorld/BentoBox/pull/3093)]
The admin `deaths set|add|remove|reset` commands now fire `PlayerDeathsChangedEvent`, which gives the world, the player, the action, the requested amount and the old and new counts. The event lets Level, which tracks death handicaps per island, follow admin changes. It is not fired for natural deaths.
## Bug Fixes
### 🐛 Obsidian Scooping Lava/Obsidian Dupe
[[PR #3098](https://github.com/BentoBoxWorld/BentoBox/pull/3098)]
With OBSIDIAN_SCOOPING, right-clicking a lone obsidian block with an empty bucket gives back lava. BentoBox checked the block and the bucket at the moment of the click but handed out the lava one tick later without checking again. If the obsidian was mined within that tick, the player got both the obsidian and the lava. If the bucket was moved out of the hand, lava could be given without an empty bucket being used up. Both are now re-checked before the lava is given, and the scooping message and sound only play when the lava is actually given.
### 🐛 Multiverse `auto-load` Is No Longer Reset on Every Startup
Fixes [#3097](https://github.com/BentoBoxWorld/BentoBox/issues/3097)
Since 3.22.0 the Multiverse hook set `auto-load: false` on every BentoBox world at every startup. Admins who set it back to `true`, so that plugins enabling after Multiverse could use the worlds during their own startup, saw the change reverted on the next boot. Auto-load is now turned off only when BentoBox first imports a world, and an existing Multiverse entry is left as the admin configured it. The default is unchanged. This applies to both the Multiverse 4 and 5 hooks.
### 🐛 Settings Panel Fixes
[[PR #3094](https://github.com/BentoBoxWorld/BentoBox/pull/3094)] Fixes [#3092](https://github.com/BentoBoxWorld/BentoBox/issues/3092)
* The Break Spawners icon no longer shows vanilla's "Interact with Spawn Egg: Sets Mob Type" tooltip.
* Command Ranks no longer lists sub-commands the player has no permission for, such as `/ob border` when `oneblock.island.border` is denied. Ops still see everything.
* `/island settings` opens in the Basic/Advanced/Expert mode the player last chose, and the Protection and Settings tabs share a single mode. The admin panel still opens in Expert.
---
## What's Changed
* Fire PlayerDeathsChangedEvent from admin deaths commands by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3093
* Settings panel improvements (#3092) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3094
* ⚙️ Template-editable Command Ranks panel (#3095) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3096
* Only set Multiverse auto-load false on first import (#3097) by @tastybento
* Fix obsidian scoop lava/obsidian dupe by re-validating before giving lava by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3098
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.23.1...3.23.3
release
3.23.1
3.23.125 сент. 2026 г.1,7 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3paper, purpur
Что нового
## Release Highlights
* 🎮 **Minecraft 26.3 "Wilderness Bound" support** — BentoBox now runs on Paper 26.3, and protects the new content: cushions (place, break and sit) and straw beds are covered by the existing PLACE_BLOCKS, BREAK_BLOCKS, RIDING and BED flags. The poplar wood set, poplar boats and shelves, wool and concrete stairs and slabs, shelf mushrooms, red shrubs and the new explorer maps needed no new flags.
* ⚙️🔡 **Customisable settings panels** — `/island settings` and `/admin settings` are now template-driven panels, laid out by `panels/settings_panel.yml` and `panels/admin_settings_panel.yml`, like the other BentoBox menus. Tab layout, pinned flags, the panel title and the order of a flag's lore can all be customised. Defaults are pixel-identical to the old panels.
* 🐛 **Deleted islands no longer count against a player** — after an island reset or admin delete, the island stayed in the per-player index until restart, blocking transfers and confusing `/admin delete`.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.3
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server. The two new panel templates are written to `plugins/BentoBox/panels/` on first run.
5. You should be good to go!
> ⚙️ **Panel note:** the settings panels are only customisable once the templates exist in your data folder. If you keep your own edited copies of the other panel templates, the new `settings_panel.yml` and `admin_settings_panel.yml` are additional files; nothing existing is overwritten. A game mode addon may also ship its own copy in its `panels/` folder.
> 🔡 **Locale note:** one new key, `panels.settings.title`, sets the title of the settings panel separately from the tab button names. Custom locale files without it fall back to the bundled text; the flag lore layout (`protection.panel.flag-item.description-layout`) is unchanged unless you opt into the new `[ranks]` and `[tooltips]` placeholders.
> 🔺 **Paper 26.3 note:** at the time of this release Paper 26.3 is only available as alpha builds. BentoBox compiles against and was tested on build 41. Older 1.21.x and 26.x servers are unaffected.
### Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
---
## New Features
### 🎮 Minecraft 26.3 Support
[[PR #3090](https://github.com/BentoBoxWorld/BentoBox/pull/3090)]
Paper 26.3 is recognised as a compatible server version. The release adds protection for the new *cushion* entity, which is neither a block, a hanging nor a vehicle and so was invisible to every existing listener: placing one requires PLACE_BLOCKS, hitting or shooting one requires BREAK_BLOCKS, and sitting on one requires RIDING. The new *straw bed* is deliberately kept out of Minecraft's bed tag (villagers may not claim it), so it is now matched explicitly and protected by the BED flag; without this a visitor could sleep in, and consume, an island's straw beds. Everything else new in 26.3 is already covered by the tag-based checks. There are no new flags, so no locale changes come from this feature.
### ⚙️🔡 Template-Driven Settings Panels
[[PR #3087](https://github.com/BentoBoxWorld/BentoBox/pull/3087)] [[PR #3088](https://github.com/BentoBoxWorld/BentoBox/pull/3088)] Closes [#3081](https://github.com/BentoBoxWorld/BentoBox/issues/3081)
`/island settings` is now built from `panels/settings_panel.yml` and `/admin settings` from `panels/admin_settings_panel.yml`, the same mechanism as the other customisable panels. Button types are `TAB`, `FLAG` (a paged list, or a single flag pinned to a slot with `data.flag`), `MODE`, `RESET`, `NEXT` and `PREVIOUS`. The panel title is a separate locale entry from the tab button names, so the two can be styled independently, which was the original request in #3081. A flag's lore layout may now place the rank list and the click hints with `[ranks]` and `[tooltips]`, and a template can override a flag's name and lore per panel.
The admin panel uses one template for both its forms: the world tabs (`WORLD_SETTING`, `WORLD_DEFAULTS`, `ISLAND_DEFAULTS`) fall back to the island tabs when `/admin settings <player>` is used, and the `admin.set-world-defaults` permission still gates the world-defaults tabs. All existing behaviour is kept: permission checks, hidden flags with op override, sort order, click cooldowns, reset confirmation and the read-only world view off-island. If a template cannot be loaded the previous panel is shown and an error is logged.
For addon developers the API is additive only: `TemplatedPanelBuilder.island(Island)`, `TemplatedPanel.regenerate(...)`, `Flag.toPanelItem(..., ItemTemplateRecord)`, `Flag.toPanelItemForRank(...)`, `SettingsTab.getIsland(Panel)` and the `PanelListener` cooldown hooks. `TabbedPanel` and `SettingsTab` are unchanged.
---
## Bug Fixes
### Soft-deleted islands still counted as a player's island
[[PR #3086](https://github.com/BentoBoxWorld/BentoBox/pull/3086)]
When an island was deleted by a reset or `/admin delete`, only the owner was cleared; the island stayed in the in-memory per-player index until the server restarted. As a result an admin could not transfer an island to the former owner ("player already owns N islands") and `/admin delete` could report that the player had no island. The island is now removed from every player's index as soon as it is deleted, while its location stays reserved for the region purge.
### Templated panel `fallback:` never rendered
[[PR #3087](https://github.com/BentoBoxWorld/BentoBox/pull/3087)]
A template button's `fallback` record was rendering its own fallback rather than itself, so the option never worked. No shipped template used it before; the settings templates now rely on it.
---
## Other Improvements
* Build moved to Gradle 9.8.0 so the paperweight snapshot used for the 26.x dev bundles resolves again; this only affects building BentoBox itself, not running it or compiling addons against it. [[ae12e5206](https://github.com/BentoBoxWorld/BentoBox/commit/ae12e5206)]
---
## What's Changed
* Support Minecraft 26.3 and protect cushions and straw beds by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3090
* ⚙️🔡 Make the island settings panel template-driven (#3081) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3087
* ⚙️ Make the admin settings panel template-driven (#3081) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3088
* Fix soft-deleted islands still counting towards a player's islands by @daniel-skopek in https://github.com/BentoBoxWorld/BentoBox/pull/3086
## New Contributors
* @daniel-skopek made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/3086
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.23.0...3.23.1
release
3.23.0
3.23.019 сент. 2026 г.1 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
This release makes `/[admin] setrank` a reliable console tool for promoting and demoting team members, fixes a metadata bug that could flood the console with `NoSuchElementException` on every player move, and moves the build off a Maven host that had gone offline.
## Release Highlights
* 🔡 **`/[admin] setrank` works from the console** — ranks can be given by keyword (`member`, `sub-owner`, `trusted`, `coop`), translated name, or number; the right island is picked when the target owns one island and is a member of another; and an island can be named by its `x,y,z` centre.
* 🐛 **Metadata console spam fixed** — player and island metadata maps are now thread-safe. Previously a corrupted map threw `NoSuchElementException` on every `PlayerMoveEvent` (seen via Border's move listener) until the server was restarted.
* 🔧 **Build no longer depends on `maven.devs.beer`** — the ItemsAdder API now comes from Maven Central, and the Oraxen and Nexo repositories are scoped so an outage at one vendor host cannot block unrelated artifacts.
### Compatibility
✔️ Paper Minecraft 1.21.x – 1.21.11 (26.2)
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. You should be good to go!
> 🔡 **Locale note:** `commands.admin.setrank` gained three new keys (`cannot-set-owner`, `already-rank`, `admin-changed-rank`), `unknown-rank` now takes `[rank]` and `[ranks]` placeholders, and `parameters` and `description` were reworded. All 24 bundled locales are updated. If you maintain a custom locale file, add the new keys or those messages will show the raw key.
> 💡 **`setrank` behaviour change:** with no island argument, the command now acts on the island the target is a *member* of rather than their primary island, so it can no longer accidentally demote an owner. Setting the `owner` rank is refused with a pointer to `setowner`. If the target is on several team islands, the island centres are listed so one can be chosen with `x,y,z`.
### Legend
- 🔡 locale files may need to be regenerated or updated.
---
## New Features
### 🔡 Console-Ready `/[admin] setrank`
[[PR #3079](https://github.com/BentoBoxWorld/BentoBox/pull/3079)]
The syntax is now `/[admin] setrank <player> <rank> [island owner | x,y,z]` and stays backwards compatible. The rank argument previously matched only the translated display name; it now accepts the rank keyword (any addon rank reference without the `ranks.` prefix), the translated name, or the numeric value, case-insensitively, and an unknown rank lists the valid choices. Setting `owner`, `mod` or `admin` ranks through the member map is refused because it left the island inconsistent. Island selection without an argument uses the island the target is a member of but does not own, and an island can be named by its centre coordinates when an owner has several islands. Tab completion was off by one and now completes the correct argument. The affected player is told their rank changed, and a no-op change is reported instead of silently succeeding.
---
## Bug Fixes
### Metadata Maps Are Thread-Safe
[[PR #3082](https://github.com/BentoBoxWorld/BentoBox/pull/3082)]
`Players.getMetaData()` probed whether its map was immutable by writing to it on every read. The backing map was a plain `HashMap`, so any concurrent touch could corrupt it, after which every read threw `NoSuchElementException`. Addons such as Border read player metadata on every `PlayerMoveEvent`, so a corrupted map spammed the console until restart. Player and island metadata are now copied once into a `ConcurrentHashMap` and never mutated on read. `setMetaData` copies the caller's map, so immutable maps are accepted and the caller's map is never changed. `putMetaData(key, null)` now removes the key.
---
## Other Improvements
* ItemsAdder API is resolved from Maven Central as `beer.devs:itemsadder-api` (4.0.17); the `maven.devs.beer` repository is removed. Oraxen and Nexo repositories are scoped with `exclusiveContent` to the groups they host. [[PR #3083](https://github.com/BentoBoxWorld/BentoBox/pull/3083)]
---
## What's Changed
* 🔡 Make admin setrank a full console team-rank tool by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3079
* Make player and island metadata maps thread-safe by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3082
* Resolve ItemsAdder from Maven Central and scope Oraxen and Nexo repos by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3083
* Share the metadata map-copy helper between Players and Island by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3085
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.22.4...3.23.0
release
3.22.4
3.22.46 сент. 2026 г.2,7 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
This is a bug fix and performance release. It fixes a crash in the region purge, a tab-completion bug introduced by Brigadier registration, and makes player heads resolve through the server instead of the web. `/[admin] info` can now show every island a player has.
## Release Highlights
* 🐛 **Purge crash fixed** — `/[admin] purge <days> confirm` no longer fails with `IslandEvent may only be triggered synchronously`. Island events are now fired on the main thread after the async file deletion.
* 🐛 **Sub-command labels no longer change** — typing `/ob h` no longer renamed the shared `go` command to `h` for every player in tab completion and help.
* 🔡 **`/[admin] info <player>` shows every island** — all of a player's islands in the world are listed, and a new optional `[island name]` argument picks one. The info block now prints the island name.
* ⚙️ **Performance improvements** — fewer allocations in bounds checks, map sweeps and blueprint copies, a shared GSON instance, and a new optional cap on per-island history entries.
* 🐛 **Player heads use server profiles** — heads are resolved from the server's own profile cache first, so panels such as TopBlock show real heads instead of falling back to Steve after Mojang rate limits.
### Compatibility
✔️ Paper Minecraft 1.21.x – 1.21.11 (26.2)
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. You should be good to go!
> ⚙️ **New config option:** `island.history.max-entries` has been added to `config.yml`. The default is `0`, meaning unlimited, so existing servers keep their current behaviour. Set a positive number to cap how many history entries each island keeps; the oldest entries are dropped first. Note that capping can undercount the historical-members placeholder once old `JOINED` entries are dropped.
> 🔡 **Locale note:** `commands.admin.info.parameters` now reads `<player> [island name]` and a new key `commands.admin.info.island-name` was added. All 24 bundled locales are updated. If you maintain a custom locale file, add the new key or the admin info block will show the raw key for the island name line.
### Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
---
## New Features
### 🔡 Show Every Island in `/[admin] info <player>`
[[PR #3074](https://github.com/BentoBoxWorld/BentoBox/pull/3074)]
`/[admin] info <player>` used to report only the player's primary island. It now prints the admin info block for every island the player has in the world, owned and team islands alike. A new optional `[island name]` argument shows a single island, using the same forgiving name matching as `/[player] go` (exact, then case- and space-insensitive, then unique prefix), and multi-word names work without quotes. An unknown name lists the valid ones. Tab completion offers the target player's island and home names, and each info block now prints the island name so multiple blocks can be told apart. `IslandGoCommand.resolveName` is now public so addons can reuse it.
### ⚙️ Island History Cap
[[PR #3073](https://github.com/BentoBoxWorld/BentoBox/pull/3073)]
Long-lived islands accumulate history (log) entries without bound in memory and in the database. The new `island.history.max-entries` setting caps the number of entries kept per island, dropping the oldest first. It defaults to unlimited.
---
## Bug Fixes
### Purge Crashed With "IslandEvent may only be triggered synchronously"
[[PR #3077](https://github.com/BentoBoxWorld/BentoBox/pull/3077)]
The age-based purge deleted region files on an async task and then fired the `DELETED` and `PURGED` island events from that same thread. Paper rejects synchronous events fired off the main thread, so the first fully reaped island threw, the command reported failure, and the island's database row was left behind after its region files were already gone. The service now performs the disk work asynchronously and hops the event firing and cache/database removal onto the main thread, waiting for it to finish so the result and summary log are accurate. The daily housekeeping deleted sweep was never affected because it defers its database work to shutdown.
### Sub-Commands Renamed to the Alias a Player Typed
[[PR #3076](https://github.com/BentoBoxWorld/BentoBox/pull/3076)] Fixes [#3075](https://github.com/BentoBoxWorld/BentoBox/issues/3075)
When a player typed an alias such as `/ob h`, the shared sub-command object had its label changed to `h`, so tab completion and help showed `/ob h` for everyone until someone typed a different alias. Brigadier registration in 3.22.0 made this far more visible because suggestions call tab completion on every keystroke. The redundant label mutation is removed; the typed alias is still passed to the command as before, and the `home` / `h` aliases are unchanged.
### Player Heads Fall Back to Steve After Rate Limits
[[PR #3070](https://github.com/BentoBoxWorld/BentoBox/pull/3070)]
Heads requested by player name were always resolved through mc-heads or the Mojang API, even for players the server already knew, and those lookups get rate limited. Online players now get their head synchronously from their live profile, and everyone else is resolved through Paper's own profile cache first. The mc-heads and Mojang paths remain as fallbacks. No API changes; addons do not need to recompile.
---
## Other Improvements
* Performance: bounds checks no longer allocate a `Vector` (7x faster), map sweeps use iterators instead of streams (3x faster, zero allocation), and a shared GSON instance replaces per-call construction. [[PR #3073](https://github.com/BentoBoxWorld/BentoBox/pull/3073)]
* Resolved open SonarCloud and deeper-SAST reliability findings across the codebase.
---
## What's Changed
* Fire purge IslandEvents on the main thread by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3077
* Stop renaming sub-commands to the alias a player typed by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3076
* 🔡 feat(admin): show every island in /[admin] info <player>, add [island name] arg by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3074
* ⚙️ refactor: performance improvements by @reecepbcups in https://github.com/BentoBoxWorld/BentoBox/pull/3073
* Use server-provided player profiles for heads by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3070
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.22.3...3.22.4
release
3.22.3
3.22.322 авг. 2026 г.2,6 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
Thhis is mostly a bug fix and API related update.
## Release Highlights
* 🔲 **Dialog grid layout** — `DialogBuilder` can now lay buttons out in a configurable number of columns with per-button widths, enabling grids, maps, and pickers without leaving the API. Used in the latest ChunkBlock.
* ⚙️ **bStats metrics opt-out** — new `general.metrics` toggle lets server owners disable BentoBox's anonymous usage statistics independently of the global bStats switch.
* 🛡️ **Paper 26.2 & Adventure 5** — BentoBox now compiles and runs against Paper 26.2, bringing Adventure 5 API changes that addon authors should be aware of.
* 🐛 **Player head 429 spam fixed** — heads with missing textures no longer trigger repeated Mojang session-server lookups that flood the console with rate-limit errors.
* 🐛 **YAML numeric type widening** — config values like `20` written without a decimal point now correctly load into `double`, `float`, and `long` fields instead of throwing `ClassCastException`.
### Compatibility
✔️ Paper Minecraft 1.21.x – 1.21.11 (26.2)
✔️ Java 21+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. You should be good to go!
> ⚙️ **New config option:** `general.metrics` has been added to `config.yml` (default `true`). Set it to `false` and restart to disable BentoBox's bStats telemetry. The global switch in `plugins/bStats/config.yml` still works as before.
> 🔺 **Addon authors — Adventure 5 changes:** Paper 26.2 ships Adventure 5, which seals `Component` (Mockito can no longer mock it) and replaces `ClickEvent.value()` with `payload()`. See [PR #3067](https://github.com/BentoBoxWorld/BentoBox/pull/3067) for the full removal list and migration notes. Addons already deployed against a 26.2 server may already be affected at runtime; recompiling against BentoBox 3.22.3 will surface any issues at compile time.
### Legend
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
---
## New Features
### 🔲 Dialog Grid Layout
[[PR #3066](https://github.com/BentoBoxWorld/BentoBox/pull/3066)]
`DialogBuilder#columns(int)` lays a multi-action dialog's buttons out in a grid instead of the default two-wide list. `DialogButton` gains a width parameter (1–1024) matching Paper's `ActionButton` sizing, plus `withWidth(int)` for resizing existing buttons. Existing callers are unaffected — omitting columns and width preserves the client's default behaviour.
### ⚙️ bStats Metrics Opt-Out
[[PR #3065](https://github.com/BentoBoxWorld/BentoBox/pull/3065)]
A new `general.metrics` setting (default `true`) in `config.yml` lets server owners disable BentoBox's bStats telemetry without touching the global bStats config. When set to `false`, no metrics collector is registered and no data is submitted. Changing this setting requires a server restart.
---
## Bug Fixes
### Player Head Texture-Less Profile Spam
[[PR #3063](https://github.com/BentoBoxWorld/BentoBox/pull/3063)]
Opening a panel with player heads (e.g. a top-ten list) could flood the console with HTTP 429 errors from `sessionserver.mojang.com`. This happened because `HeadGetter` delivered profiles without texture data, causing the server to re-resolve them on every panel open. Now, heads without a usable texture degrade to a plain head instead of triggering repeated lookups, and a failed fetch no longer evicts a cached head that already has a working texture.
### YAML Numeric Type Widening
[[PR #3068](https://github.com/BentoBoxWorld/BentoBox/pull/3068)]
YAML types a number by how it is written: `20` loads as `Integer` regardless of the declared field type. A `double` config field written without a decimal point reached the setter as an `Integer`, and inside collections, generic erasure hid the mismatch until the first read threw `ClassCastException`. A new `widen()` helper now correctly promotes `Integer` to `Double`, `Float`, or `Long` as needed, while deliberately refusing to silently narrow `Double` to `Integer` or `Long`.
### Literal Color Names in Panels
A previous refactor replaced deprecated `ChatColor` constants with `NamedTextColor` in string concatenations, but `NamedTextColor.WHITE.toString()` returns the word `"white"`, not a color code — so the Management panel showed addon names like `"whiteChallenges"`. Fixed by using MiniMessage tags instead.
---
## Other Improvements
* 🔺 **Paper 26.2 & Adventure 5** — Compiled against Paper 26.2 (`build.111-stable`) with MockBukkit 4.116.1. See the addon author note above for API removals. [[PR #3067](https://github.com/BentoBoxWorld/BentoBox/pull/3067)]
* Removed workarounds for 26.2 symbols that were missing at compile time — `SULFUR_CUBE` is now `static final` again, and tests use the real entity type directly (−87 lines). [[PR #2994](https://github.com/BentoBoxWorld/BentoBox/pull/2994)]
* Published JSON Schemas (draft 2020-12) for the `.blueprint` and blueprint-bundle file formats, covering blocks, spawners, entities, display entities, and item frames.
* Referenced the new org-wide privacy policy, AI policy, and contributing guidelines from the README.
---
## What's Changed
* 🔲 Lay dialog buttons out in a grid: columns and button width by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3066
* ⚙️ Add general.metrics config toggle to opt out of bStats by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3065
* Do not put texture-less profiles on player heads by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3063
* Fix: widen YAML-loaded numbers to the declared numeric field type by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3068
* 🔺 Compile against Paper 26.2 now that MockBukkit supports it by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3067
* Drop the workarounds for 26.2 symbols missing at compile time by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2994
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.22.2...3.22.3
release
3.22.2
3.22.210 авг. 2026 г.2,1 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
# BentoBox 3.22.2
A bug-fix patch on top of 3.22.0. Four fixes, all of them for things players hit directly: name lookups resolving to the wrong account, Bedrock players' panel clicks being swallowed, an addon whose dependency is missing leaving broken commands behind, and nether returns dropping players on somebody else's island.
No new features, no config keys, no locale changes. If you are on 3.22.0, this is a drop-in replacement.
> There is no 3.22.1 release. The version was incremented twice during development; 3.22.2 is the first build published from it.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.2
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Start the server.
5. 🔺 BentoBox now deletes stale `Names` records — old name→UUID entries that were dropped from memory but never removed from the database. Existing databases heal themselves as players log in; no manual migration is needed, but take the backup in step 1 before you let it run.
---
## Highlights
* 🔺 **Player name lookups no longer resolve to a stale account** — `/is team trust <name>` and `/is info <name>` could silently answer for a UUID that had not held that name in months.
* **Bedrock players can use panels again** — Geyser expands one tap into several Java click packets, and the click cooldown was eating the one that mattered.
* **A disabled addon no longer leaves live, broken commands behind** — an addon dropped for a missing dependency kept its commands registered, and every subcommand threw an NPE.
* **Returning from a standard nether puts you on your own island** — not on whichever island sits nearest 0,0.
---
## Bug Fixes
### 🔺 Player names resolve to the right account
[[PR #3057](https://github.com/BentoBoxWorld/BentoBox/pull/3057)] — Fixes [#3052](https://github.com/BentoBoxWorld/BentoBox/issues/3052)
`/ob team trust Oli713664` reported no such player, and `/ob info Oli713664` answered "that player does not have an island" for a player who has one.
Capitalization was the visible symptom but not the cause. `setPlayerName` removed the superseded `Names` record from the in-memory cache and **never deleted it from the database**, so every leftover was reloaded on restart, and `getUUID` took `findFirst()` over an unordered list — a name could resolve to a UUID that had not held it for months. On a case-sensitive file system a leftover `oli713664.json` and the current `Oli713664.json` both matched, and whichever the directory listing yielded first won. That also explains the misleading second symptom: the lookup returned a *stale* UUID rather than `null`.
Three changes:
- **`nameCache` is keyed on the lower-cased name.** Minecraft names are unique ignoring case, so there is exactly one entry per name and the match no longer depends on how it was spelled when stored. It also moves from an `ArrayList` — mutated by the join listener while commands read it — to a `ConcurrentHashMap`, turning a linear scan of every name ever seen into a single hash lookup.
- **Stale records are deleted.** `setPlayerName` removes any record still pointing at this player under another spelling, and `removePlayer` drops the name lookup too.
- **`getUUID` consults the online player first**, then the cache, then the server's own user cache for players BentoBox has never recorded.
Every step is in-memory, so resolving a name still never blocks the caller — the `getOfflinePlayerIfCached` variant is used deliberately, as it returns `null` on a miss instead of asking Mojang.
> 🔺 **Data note:** the stale-record purge runs on login and only when a player's stored name actually differs from their current one — once per rename, not once per join.
### Bedrock players' panel clicks are no longer eaten
[[PR #3058](https://github.com/BentoBoxWorld/BentoBox/pull/3058)] — Fixes [#3049](https://github.com/BentoBoxWorld/BentoBox/issues/3049)
A Bedrock player opened `/is settings`, tapped any button, and got `general.errors.slow-down` with nothing happening — on the *first* tap, even after waiting, with the default 250 ms `panel.click-cooldown-ms`.
Bedrock's inventory model sends a whole transaction per tap, and Geyser expands it into a sequence of Java click packets that arrive in the same tick. Packet 1 opened the cooldown window; packet 2 hit it. This became fatal in 3.22.0 when the check moved to `PanelListenerManager` as an early `return` ahead of the click handler, so whichever packet lost the race was discarded outright — and the packet that landed on the button was not necessarily the one that arrived first.
Clicks in the same tick as the window opened are now treated as one physical gesture: the first click that can actually do work is let through, the rest are dropped **silently**, and a no-op click on a filler icon or the player's own inventory no longer consumes the window the real click needs. Clicks in a later tick but still inside the cooldown are unchanged — rejected, with the notice sent at most once per window. Spam protection is intact at one action-bearing click per tick.
`onTimeout(User, Panel)` keeps its signature and behaviour; a three-argument overload carries the new flag, and `TabbedPanel.isActionableSlot(int)` is new. Both additive.
### A dropped addon no longer leaves broken commands registered
[[PR #3060](https://github.com/BentoBoxWorld/BentoBox/pull/3060)] — Fixes [#3059](https://github.com/BentoBoxWorld/BentoBox/issues/3059)
Reported on Discord: `/ch` on a server with ChunkBlock installed but not the Level addon it depends on answered "An unexpected error occurred while running the command" with an NPE, for every subcommand.
A game mode addon builds its commands in `onLoad()`, and `CompositeCommand`'s constructor registers them with the Bukkit command map immediately — but the world is only attached later, in `enableAddon`. `sortAddons()` spots the missing dependency after `onLoad()` has run: it unregistered the addon's flags and dropped it from the addon list, but **left the commands registered**. `/ch` stayed live with a null world, and `getWorldSettings(null)` threw on the first lookup. The same hole existed for an addon abandoned as incompatible, or one that threw during load or enable.
- **`AddonsManager#withdrawAddon`** now takes back listeners, flags *and* commands, and is called from all three abandonment paths. Previously only flags were unregistered, and only on the missing-dependency path.
- **`CommandsManager#unregisterCommands(Addon)`** is the new method backing it. Brigadier keeps its nodes — it has no removal API — but a node whose label no longer resolves is refused by its `requires` predicate, so it disappears from clients too.
- **`CompositeCommand#call`** refuses outright when a command belongs to a `GameModeAddon` and has no world, logging which addon is not enabled. BentoBox's own world-less commands such as `/bentobox` are unaffected.
- **`IslandWorldManager#getWorldSettings`** builds its "non-game world" message lazily; it used to evaluate `world.getName()` eagerly, so a null world threw inside the very string meant to explain the problem.
`CommandsManager#unregisterCommands(Addon)` is new and additive, so binary compatibility is unaffected.
### Returning from a standard nether lands you on your own island
[[PR #3061](https://github.com/BentoBoxWorld/BentoBox/pull/3061)] — Fixes [AOneBlock#549](https://github.com/BentoBoxWorld/AOneBlock/issues/549)
With a shared nether and `create-and-link-portals: false` — AOneBlock's default — a player who went through a nether portal and came back was always dumped on the island near 0,0, usually somebody else's, where they had no build rights. `/ob home` worked fine, so the island data was never the problem.
`handleFromStandardNetherOrEnd` resolved the destination from the island's spawn point only, and `Optional.map` collapses to empty when the mapper returns `null` — so an island with no spawn point was indistinguishable from having no island at all, and execution fell through to the world-spawn fallback. An island only gets a spawn point when its blueprint contains a `{spawn here}` sign; AOneBlock's default blueprint is a single bedrock block, so the fallback fired every single time. BSkyBlock was unaffected because it defaults to island nethers and never reaches this branch.
The destination now falls back to the island's home location, which is `@NonNull` and defaults to the protection centre. The end-exit-portal path already did the equivalent via `getSafeRespawnLocation`.
---
## Other Improvements
* **Local builds no longer stamp a doubled `-LOCAL` marker into `plugin.yml`** — `/bentobox version` on a local build reported `…-SNAPSHOT-LOCAL-LOCAL`. Development-only; CI and release builds were never affected ([`fa401ee`](https://github.com/BentoBoxWorld/BentoBox/commit/fa401ee8b)).
* **Expanded the Building from Source section of the README** ([`5124f00`](https://github.com/BentoBoxWorld/BentoBox/commit/5124f00c7)).
* **Corrected the version-numbering notes in `CLAUDE.md`** ([`dcfe89f`](https://github.com/BentoBoxWorld/BentoBox/commit/dcfe89f28)).
---
## Legend
| Marker | Meaning |
|---|---|
| 🔡 | Locale files may need regenerating or updating |
| ⚙️ | Config options added, renamed or removed |
| 🔺 | Special attention needed |
---
## What's Changed
* 🔺 Resolve player names without depending on stored capitalization by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3057
* Stop the panel click cooldown eating Bedrock players' clicks by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3058
* Withdraw an addon's commands when the addon never enables by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3060
* Send players returning from a standard nether to their own island by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3061
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.22.0...3.22.2
release
3.22.0
3.22.01 авг. 2026 г.1,6 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
# BentoBox 3.22.0
A commands-and-visibility release. BentoBox now registers its commands with **Paper's Brigadier API**, so players see subcommands and completions *while* they type rather than only after pressing enter or TAB. Alongside it, six new bStats charts finally answer which addon versions are actually deployed and which commands players struggle with, and worlds that generate no structures now protect themselves from the `/locate`-style searches that could freeze a server outright.
It also carries two fixes worth upgrading for on their own: data queued by addons **during shutdown is no longer discarded**, which was silent, intermittent data loss on every restart, and BentoBox commands are back in the Bukkit command map, so NPCs, signs and GUI plugins can run them again.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.2
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Start the server.
5. ⚙️ A new `general.brigadier-commands` option is added on first run, defaulting **on**. If another plugin conflicts with Brigadier registration, set it to `false` to fall back to the legacy command map — BentoBox also falls back automatically if it cannot hook the registrar.
6. 🔺 In worlds whose generator places no structures (classic void skyblock, AOneBlock), structure searches are now suppressed automatically with no configuration. If you have a converted world that contains pre-existing structures, force-enable them per structure in the game mode's own `structures` settings.
7. 🔡 A new Traditional Chinese (`zh-TW`) locale is included. No existing locale keys changed, so custom locale files need no work.
---
## Highlights
* 🔺 **Addon data queued during shutdown is no longer discarded** — silent, intermittent data loss on every restart, affecting nine bundled addons.
* ⚙️ 🔺 **Brigadier command registration** — subcommands and completions now appear as the player types, with an off-switch if it clashes with another plugin.
* **Six new bStats charts** — addon and game mode versions, addon API levels, non-default settings, and how/where commands fail.
* 🔺 **Structureless worlds protect themselves** — no more main-thread freezes from cartographer trades, dolphins or treasure maps searching a void world to the border.
* **`/island settings` works out in the world** — instead of "You do not have an island!", players see what the world's protection rules let them do where they are standing.
* **`Island.setFlag` writes are no longer discarded** — setting a protection rank on an island that had no entry for that flag silently did nothing, which is every freshly created island.
* **Repeated warnings stay throttled** — a player alternating between two limit messages no longer bypasses the 4-second notification cooldown.
* **BlueMap marker sets stay in their own worlds** — an addon's marker set no longer appears in the sidebar of every other map on the server.
* **Multiverse tidy-up** — BentoBox worlds get `auto-load: false` even when Multiverse already knew about them, and dead seed-world registrations are gone.
* 🔡 **Traditional Chinese (`zh-TW`) locale** contributed by @qwe664.
---
## New Features
### ⚙️ 🔺 Brigadier command registration
[[PR #3036](https://github.com/BentoBoxWorld/BentoBox/pull/3036)] — Closes [#3023](https://github.com/BentoBoxWorld/BentoBox/issues/3023) (phases 1 and 2)
The `SimpleCommandMap` reflection in `CommandsManager` is replaced with registration through Paper's Brigadier API, and the `CompositeCommand` subcommand tree is exposed to clients. The practical effect for players is that `/island t…` offers `team` in the chat bar immediately, instead of the client knowing nothing until enter or TAB.
Paper only permits Brigadier registration inside its `COMMANDS` lifecycle callback, which fires *before* addons are enabled — so game mode commands such as `/island` and `/acid` do not exist yet at that point. `BrigadierCommandRegistrar` therefore captures the live `CommandDispatcher` inside that window and registers nodes into it afterwards as addons come up. Design consequences worth knowing:
- **No stale references.** Nodes never capture a `CompositeCommand`; they resolve it by label on every use, so a `/bentobox reload` that swaps command objects leaves nothing behind.
- **Aliases and the `plugin:label` form are redirects**, not duplicated trees — a game mode admin tree runs to dozens of nodes and every one is sent to every client.
- **Console still sees player-only commands**, so `/ai` from console reports "This command is only available in-game" rather than Brigadier's generic unknown-command error.
- **The literal tree is depth-capped at 4.** Deeper subcommands still work — they fall through to a greedy argument — they are just not pre-advertised.
> ⚙️ **Config note:** guarded by the new `general.brigadier-commands` (default `true`). Turning it off restores the legacy command map path, which is kept intact as the fallback.
Still to come in phase 3: tooltips on subcommand names, and typed arguments (red-underline validation, quoting-free multi-word island names).
### Addon version, feature adoption and command failure metrics
[[PR #3038](https://github.com/BentoBoxWorld/BentoBox/pull/3038)] — Closes [#3022](https://github.com/BentoBoxWorld/BentoBox/issues/3022)
Six new bStats charts, all of them already configured on [bstats.org/plugin/bukkit/BentoBox/3555](https://bstats.org/plugin/bukkit/BentoBox/3555):
| Chart | What it answers |
|---|---|
| `addonVersions` / `gameModeVersions` | Which *version* of each addon and game mode is deployed |
| `addonApiVersions` | Which BentoBox API levels addons in the wild are built against |
| `features` | Which settings servers change away from their defaults |
| `commandFailures` | How commands fail, by kind |
| `commandFailurePaths` | Which commands fail most |
Previously we knew *that* a server ran Level, not *which* Level — leaving no way to see how long the tail is after a release, or to judge when a breaking API change is safe. The settings chart reports only deviations from default, so every bar is a signal: a default-off setting appears under its own name when enabled (`chunk-pregen`), and a default-on setting appears as `no-<name>` when disabled (`no-brigadier-commands`). 24 settings are covered.
> **Privacy:** only the failure *kind* and a stable command key (derived from the hard-coded permission, e.g. `bskyblock.island.team.invite`) are submitted — never arguments, player names, or anything typed. bStats data is public. Distinct keys are capped at 200 between submissions and only the busiest 20 sent.
Three charts were also removed: the `addons`, `gameModeAddons` and `hooks` advanced pies had no matching chart IDs on bstats.org, so every submission was discarded on arrival — which is why the Hooks pie never showed anything. The `addonsBar`, `gameModeAddonsBar` and `hooksBar` charts carry identical data and do work.
### 🔺 Automatic structure-search suppression in structureless worlds
[[PR #3035](https://github.com/BentoBoxWorld/BentoBox/pull/3035)]
A production server froze repeatedly and entered a reboot loop: a cartographer villager levelling up rolled an explorer-map trade, which runs `findNearestMapStructure` synchronously on the main thread. In a void world the structure can never be found, so the search evaluates jigsaw placement and full noise columns out to the radius cap and blows past the 60-second watchdog. The level-up never saves, so after the auto-restart the same villager triggers the same search — indefinitely.
`StructureListener` now asks the world's `ChunkGenerator` whether it places structures at all. If it does not, every structure search in that world is suppressed with **no configuration needed** — such a search is always the pathological scan-to-the-cap case, never a success.
- A per-world `structures` entry of `true` still force-enables a structure, as an escape hatch for converted worlds containing pre-existing structures.
- Game modes that *do* generate structures are unaffected: SkyGrid, Boxed (`allow-structures`), CaveBlock (overworld) and AcidIsland (`make-structures`) all report `true`. AOneBlock and BSkyBlock report `false` and get automatic protection. **No addon changes required.**
> ⚙️ **Config note:** the `world.disabled-structures` comments now explain how to list valid structure keys in-game (tab-complete `/locate structure `) and give a concrete example for admins still on released versions.
### `/island settings` opens out in the world
[[PR #3055](https://github.com/BentoBoxWorld/BentoBox/pull/3055)] · [[PR #3056](https://github.com/BentoBoxWorld/BentoBox/pull/3056)]
`/island settings` used to answer "You do not have an island!" whenever the player was not standing on one and owned none — out in the wilderness, or in a game mode where players never own islands at all. That is the moment a player most wants to ask *what rules apply where I am standing?*
The panel now opens anyway, with a single read-only **World Protections** tab listing each protection flag as active or disabled for the world. That is the same value an admin edits on their own World Protections tab, and it is what actually governs a player off-island: with no island under them, `FlagListener` resolves a protection flag to the world's on/off switch rather than to any rank. Can I break blocks out here, can I place them — answered without asking an admin.
The settings tab is not shown in that case: settings are island-level and there is no island to configure. Nothing is clickable, and a player standing on or owning an island sees exactly the panel they always did.
---
## Bug Fixes
### 🔺 Database writes queued during shutdown were discarded
[[PR #3044](https://github.com/BentoBoxWorld/BentoBox/pull/3044)]
Queued writes are drained by an async repeating task that stops the moment BentoBox is disabled, after which `store(...)` silently dropped anything still queued. The server disables Pladdons *before* BentoBox, so everything an addon persisted from `onDisable()` was queued into a pipeline about to be abandoned — whether the drain task got a tick in first was a race, which is why this presented as intermittent data loss with nothing in the log.
Nine bundled addons save state in `onDisable` and all nine are Pladdons: **Boxed, AOneBlock, Raft, Challenges, Limits, DragonFights, CheckMeOut, ControlPanel, InvSwitcher**. Third-party Pladdons doing the same were affected identically. Reproduced end to end with InvSwitcher: pick up items, restart while still connected, and the shutdown save never landed — then the stale stored inventory was re-applied on join, making it an active rollback rather than just a lost write.
Shutdown writes are now drained before the database is closed.
### 🔺 BentoBox commands unusable from NPCs, signs and GUI plugins
[[PR #3051](https://github.com/BentoBoxWorld/BentoBox/pull/3051)] — Fixes [#3050](https://github.com/BentoBoxWorld/BentoBox/issues/3050)
Registering commands with Brigadier replaced the Bukkit command map registration outright, which took BentoBox commands out of the map every *other* plugin dispatches through. An NPC running `/oneblock go` for a player answered with the server's no-permission message and ran nothing, while typing the same command by hand worked and operators saw nothing wrong.
On Paper the command map is a facade over the Brigadier dispatcher, and it synthesises a Bukkit view of whatever node it finds there. A node registered outside Paper's own command API carries no `APICommandMeta`, so that view is a `VanillaCommandWrapper` — which demands `minecraft.command.<label>` and reports the no-permission message before the command ever runs. Anything resolving commands through the map was affected: NPC plugins, command signs, GUI plugins.
Commands are now registered with the command map as well, and first, so Brigadier merges the subcommand tree onto Paper's node instead of replacing it. Clients still get the literal tree, and the command map still hands back the real `CompositeCommand`, which checks its own permissions and reports for itself.
> This only ever affected 3.22.0 development builds. Anyone running one can drop the `general.brigadier-commands: false` workaround after upgrading.
### Late-registered addon subcommands missing from completions
[[PR #3040](https://github.com/BentoBoxWorld/BentoBox/pull/3040)] — Fixes [#3039](https://github.com/BentoBoxWorld/BentoBox/issues/3039)
A top-level command's Brigadier children are baked in when its node is built, which happens before addons register their subcommands — so every addon subcommand missed the tree. They still *ran*, and still appeared in `/<gamemode> help`, but the client was never told they exist. `refreshTrees()` now rebuilds every registered top-level command at the end of `enableAddons()` and again after `allLoaded()`, relying on Brigadier merging same-named literals rather than replacing them.
The change-detection this relied on compared child counts read back from `dispatcher.getRoot()`, which returns Paper's *wrapped* node while the merge lands on the NMS copy — so the count never changed and the refreshed tree was never pushed to clients. [PR #3051](https://github.com/BentoBoxWorld/BentoBox/pull/3051) resolves that as well: the refresh now compares the tree as it was built, which is the tree that was grafted on, so late subcommands reach clients as intended.
### Permission-hidden subcommands failing with a Brigadier parse error
[[PR #3042](https://github.com/BentoBoxWorld/BentoBox/pull/3042)] — Fixes [Border#179](https://github.com/BentoBoxWorld/Border/issues/179)
`/oneblock border color green` produced an unhandled `CommandException` and never changed the border colour. Permission checks live in each literal's Brigadier `requires` predicate, and Brigadier *silently skips* a literal the source cannot use — so a player without the permission dead-ended at `color` with a red `INCORRECT_ARGUMENT` instead of "you do not have permission", and the line never reached `CompositeCommand`. Worse, the did-you-mean handler then suggested back the very line that had just failed, and re-dispatching it threw out of a scheduled task.
A command line of ours that Brigadier refuses to parse is now dispatched through the command tree, which checks its own permissions and reports for itself. The suggester never offers a line identical to what was typed, and dispatch failures are logged rather than escaping.
### BlueMap marker sets attached to every map on the server
[[PR #3041](https://github.com/BentoBoxWorld/BentoBox/pull/3041)]
`createMarkerSet()` put every new marker set into *every* map, so an addon registering a warps set for one game mode had it appear in the sidebar of every other game mode's map, and of any non-BentoBox world's map too. A set created but never populated was listed everywhere, permanently empty. Worlds are now learned lazily from the markers added to a set, and only those worlds' maps get it. Island marker sets were never affected.
Also fixed: `createMarkerSet()` and `removeMarkerSet()` threw an NPE when called before BlueMap finished loading or during a `/bluemap reload`. `getBlueMapAPI()` is corrected from `@NonNull` to `@Nullable` (annotation-only, binary compatible).
### Multiverse `auto-load` never cleared for known worlds
[[commit 45c5402](https://github.com/BentoBoxWorld/BentoBox/commit/45c5402d6)] — Relates to [#3037](https://github.com/BentoBoxWorld/BentoBox/issues/3037)
`registerWorld()` set `auto-load: false` inside a `peek()` on the import result, so it only ever ran on a *first-time* import. If Multiverse already had the world in `worlds.yml` the import fails with `WORLD_EXIST_LOADED`, the peek is skipped, and the world keeps auto-loading — which is what every BentoBox world in #3037's `worlds.yml` shows. The world is now looked up after the import and the flag cleared there. BentoBox creates and loads its own worlds in `onEnable`; Multiverse should not be autoloading them.
### Dead seed-world Multiverse registration removed
[[commit a89bf9d](https://github.com/BentoBoxWorld/BentoBox/commit/a89bf9d83)]
Seed worlds (`<world>/bentobox`) were dropped in 3.16.1, but `IslandWorldManager` still looked one up for every game mode world and registered it with the world management hooks — always returning null. This registration is why stale `acid/bentobox` entries linger in Multiverse's `worlds.yml`: BentoBox deleted the folder on shutdown but never unregistered it. Removing the call stops future versions re-adding such an entry; **existing stale entries still need `/mv remove`**.
### `Island.setFlag` silently discarded writes for unset flags
[[PR #3053](https://github.com/BentoBoxWorld/BentoBox/pull/3053)]
`setFlag(Flag, int, boolean)` only wrote when the flag was **already** a key in the island's flag map. Islands created through `IslandsManager.createIsland` start with an empty map, so an addon setting a protection rank on a fresh island had the write dropped with no error and no log line, and the flag stayed on its default rank. It was easy to miss because `setSettingsFlag()` writes unconditionally — `SETTING` and `WORLD_SETTING` flags worked fine while `PROTECTION` ranks quietly did not.
Absent flags are now written; the island is still only marked changed when the value actually differs. Addons that worked around this by pre-seeding the map can drop the workaround.
### Notification throttle bypassed by alternating messages
[[PR #3054](https://github.com/BentoBoxWorld/BentoBox/pull/3054)] — Relates to [Limits#293](https://github.com/BentoBoxWorld/Limits/issues/293)
`Notifier` remembered only the **single last** message sent to a user and sent whenever the new one differed. A player hitting two different limits back to back — mixed animal and monster limit messages while mining in AOneBlock — therefore bypassed the 4-second cooldown entirely: each message differed from the one before it, so every one of them spammed through.
The cache is now keyed by user *and* message, so each distinct message is throttled independently within the window.
### Zombie flag listeners from addons dropped for missing dependencies
[[PR #3048](https://github.com/BentoBoxWorld/BentoBox/pull/3048)]
`loadAddon()` runs an addon's `onLoad()` *before* the hard-dependency check, so an addon later dropped by `sortAddons()` had already registered its flags — and `FlagsManager` registers flag listeners immediately, under the BentoBox plugin. Those listeners survived the drop: registered, firing on global events, backed by an addon that never enabled and never created its worlds. Removing Level from a server running ChunkBlock (which hard-depends on it) turned every `PlayerJoinEvent` into an NPE from `Util.sameWorld()`.
Dropped addons are now marked `MISSING_DEPENDENCY` and have their flags and listeners unregistered, and `Util.sameWorld()` returns `false` for a null world rather than throwing.
---
## Other Improvements
- 🔡 Traditional Chinese (`zh-TW`) locale added, translated from the latest `en-US.yml` with placeholders and MiniMessage tags preserved [[PR #3046](https://github.com/BentoBoxWorld/BentoBox/pull/3046)] — thanks @qwe664.
- SonarCloud reliability fixes across `AddonClassLoader`, `User`, `PVPListener`, `PlaceholderGrouper`, `PurgeRegionsService`, the Multiverse hooks and the placeholder dump command, plus the Modrinth publish action pinned to a fixed SHA [[commit c5d66ca](https://github.com/BentoBoxWorld/BentoBox/commit/c5d66ca99)].
- Refactored to `getFirst()` for readability in several classes [[commit 23c2b84](https://github.com/BentoBoxWorld/BentoBox/commit/23c2b84b0)].
- CI: the shared platform-publish workflow pin was bumped to the multipart-JSON fix, so a semicolon anywhere in a release body no longer truncates the CurseForge and Hangar upload metadata [[PR #3047](https://github.com/BentoBoxWorld/BentoBox/pull/3047)].
- Test suite grew to **3430 tests, 0 failures**, with new coverage for Brigadier registration, tree refresh and command map registration, bStats accumulation and capping, command failure classification, structureless-world suppression, BlueMap world scoping, the unparseable-command path, the shutdown write drain, per-message notification throttling and the off-island settings panel.
---
## Legend
| Marker | Meaning |
|---|---|
| 🔡 | Locale files may need regenerating or updating |
| ⚙️ | Config options added, renamed or removed |
| 🔺 | Special attention needed |
---
## What's Changed
* 🔺 Auto-suppress structure searches in structureless worlds by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3035
* ⚙️ 🔺 Register commands with Paper's Brigadier API (#3023 phases 1 and 2) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3036
* Add addon version, feature adoption and command failure metrics by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3038
* Rebuild the Brigadier tree once addons have enabled by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3040
* Scope addon-created BlueMap marker sets to their own worlds by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3041
* Run our own commands that Brigadier will not parse by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3042
* 🔺 fix: do not discard database writes queued during shutdown by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3044
* 🔡 Add Traditional Chinese (zh-TW) localization by @qwe664 in https://github.com/BentoBoxWorld/BentoBox/pull/3046
* Clean up flags of addons dropped for missing dependencies by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3048
* ci: bump publish-platforms pin to the multipart-JSON fix by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3047
* 🔺 Keep BentoBox commands in the Bukkit command map by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3051
* Fix Island.setFlag silently ignoring flags not already in the map by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3053
* Show the settings panel when the player has no island by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3055
* Throttle notifications per distinct message, not just the last one by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3054
* Show the world's protection flags when the player is not on an island by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3056
## New Contributors
* @qwe664 made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/3046
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.21.0...3.22.0
release
3.21.0
3.21.023 июл. 2026 г.1,7 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
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
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Start the server.
5. ⚙️ A new `island.dialogs` config section is added on first run — `confirmations`, `go-picker`, and `team-invites` default **on**; `game-mode-selection` defaults **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.
6. 🔡 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 go` picker, 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 go` matching** — `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
[[PR #3033](https://github.com/BentoBoxWorld/BentoBox/pull/3033)] — Closes [#3021](https://github.com/BentoBoxWorld/BentoBox/issues/3021)
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.dialogs` section 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`
[[PR #3031](https://github.com/BentoBoxWorld/BentoBox/pull/3031)] — Part of [#3024](https://github.com/BentoBoxWorld/BentoBox/issues/3024)
`/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 https://github.com/BentoBoxWorld/BentoBox/pull/3033
* Forgiving name matching for /island go (#3024) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3031
* 🔡 Remove duplicated placeholder panel sections in uk.yml locale by @tastybento
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.20.0...3.21.0
release
3.20.0
3.20.011 июл. 2026 г.1,8 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
# BentoBox 3.20.0
A quality-of-life release. Players who mistype a command now get a clickable "did you mean…?" suggestion instead of a wall of help text, every game-mode world can suppress vanilla structures from core (fixing the long-standing `/locate` freeze), and BentoBox gains hooks for **Nexo** and richer **Oraxen** custom-block placement.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.2
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Start the server.
5. ⚙️ Two new config areas are added on first run — `general.did-you-mean` (both toggles default **on**) and `world.disabled-structures` (empty by default, so structure generation is unchanged unless you opt in). Review them if you want to change the defaults.
6. 🔡 Three new `general.did-you-mean` locale keys were added to every bundled language. If you maintain custom locale files, regenerate or add these keys.
---
## Highlights
* 🔡 ⚙️ **Did-you-mean command suggestions** — a mistyped command like `/teams` or `/island invit` now offers the closest matching BentoBox command, clickable or accept-by-typing-`yes`, instead of an unknown-command error.
* ⚙️ **Core vanilla-structure suppression** — any game mode can now disable vanilla structures from a single core config list, ending the `/locate` main-thread freeze and near-spawn structure leaks per-addon fixes used to require.
* **Nexo hook** — BentoBox can now place and detect Nexo custom blocks and items.
* **Oraxen block placement** — `OraxenHook.placeBlock` exposes Oraxen custom-block placement to addons.
---
## New Features
### 🔡 ⚙️ Did-you-mean command suggestions
[[PR #3029](https://github.com/BentoBoxWorld/BentoBox/pull/3029)] — Fixes [#3027](https://github.com/BentoBoxWorld/BentoBox/issues/3027)
When a player mistypes a command, BentoBox now suggests the closest match instead of dumping help:
| Player types | They get |
|---|---|
| `/teams` | *Did you mean **/oneblock team**? Click here or type **yes** to run it.* |
| `/team invite Floris` | *Did you mean **/oneblock team invite Floris**?* — arguments survive |
| `/oneblock invit Floris` | *Did you mean **/oneblock team invite Floris**?* — instead of the unknown-command error |
| gibberish | vanilla behavior, no false positives |
Suggestions match against the labels **and aliases of every node** in the command trees (players type subcommands as if they were whole commands), rank exact > prefix > edit-distance, are permission-filtered, and use the game-mode world the player is standing in to disambiguate. Accepting is a click (`[run_command:]` inline tag) or typing `yes`/`y` within 30 seconds; pending suggestions clear when the player runs any other command or quits. The listener hooks `UnknownCommandEvent`, which fires only when no plugin owns the command, so BentoBox never shadows another plugin.
> ⚙️ **Config note:** two new toggles under `general.did-you-mean` — `unknown-commands` and `subcommands` — both default **on**.
> 🔡 **Locale note:** three new `general.did-you-mean` keys were translated into all 22 bundled locales, and the pre-existing missing key `commands.admin.team.setowner.specify-island` was filled in every non-English file at the same time.
### ⚙️ Core structure suppression for all game modes
[[PR #3019](https://github.com/BentoBoxWorld/BentoBox/pull/3019)] — Addresses CaveBlock #116 / #117 / #118
Disabling a vanilla structure used to be a per-addon job. This moves it into core so every game mode gets it for free, fixing two problems any world that delegates to vanilla generation could hit:
- **`/locate` freeze.** Cancelling structure *placement* left the world's placement *rules* intact, so every structure **search** — `/locate`, Eyes of Ender, explorer/treasure maps, dolphins, villager cartographer trades — kept proposing candidates that all got cancelled, scanning to the radius cap and freezing the main thread (Paper Watchdog territory).
- **Near-spawn leak.** A disabled structure could still generate near spawn because spawn chunks are generated during `createWorlds()`, before any `onEnable()` listener existed.
Two config layers control it: the global `world.disabled-structures` list in `config.yml` (applied to every BentoBox game-mode overworld/nether/end), and a binary-compatible per-world `WorldSettings.getStructureSettings()` override that lets a game mode disable extra structures **or** force-enable one the global list disables. Keys are case- and separator-insensitive (`trial_chambers`, `ancient-city`). **The global list is empty by default, so upgrading changes nothing until you opt in.**
### Nexo hook
[[PR #3028](https://github.com/BentoBoxWorld/BentoBox/pull/3028)]
A new `NexoHook` lets BentoBox place and detect [Nexo](https://nexomc.com/) custom blocks and items, registered through `BentoBoxHookRegistrar` alongside the other custom-item integrations.
### Oraxen custom-block placement
[[PR #3026](https://github.com/BentoBoxWorld/BentoBox/pull/3026)]
`OraxenHook.placeBlock` exposes Oraxen custom-block placement to addons, matching the placement API the other custom-block hooks provide.
---
## Legend
- 🔡 Locale files may need regenerating or updating.
- ⚙️ Config options have been added, renamed, or removed.
- 🔺 Special attention needed.
---
## What's Changed
* 🔡 ⚙️ Did-you-mean command suggestions (#3027) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3029
* ⚙️ Core structure suppression for all game modes (#116/#117/#118) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3019
* Add NexoHook for Nexo custom blocks and items by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/3028
* Add OraxenHook.placeBlock to expose custom block placement by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/3026
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.19.0...3.20.0
release
3.19.0
3.19.08 июл. 2026 г.630Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
## Release Highlights
* 🔡 **New `FISHING` protection flag** — Admins and island owners can now stop players fishing into protected areas from outside the island. Defaults to visitor rank, so nothing changes until you raise it.
* 🔺 **Bed & respawn-anchor spawns are now honored** — Dying on an island respawns you at your bed or charged respawn anchor when it's on an island you're a member of. Controlled by the new `BED_ANCHOR_RESPAWN` world setting (enabled by default).
* 🐛 **End exit portal no longer dumps you at world spawn** — Jumping through the end exit portal now routes you to your safe island home on multi-gamemode servers.
* 🐛 **Item frames and paintings survive blueprints** — Frames keep their facing and contents, and paintings restore their artwork, instead of popping off or facing the wrong way.
* 🔡 **Recover islands pending deletion** — New `/admin undelete`, a stand-on `/admin delete`, and `/admin register` can now rescue soft-deleted islands before their region files are purged.
* ⚙️ **BlueMap island layer survives reloads** — Owner pins and area boxes no longer vanish after `/bluemap reload`, plus new config toggles and marker customization.
* ⚡ **Settings-GUI click spam no longer spikes MSPT** — Spam-clicking `/is settings` dropped from ~30–40 MSPT to negligible via in-place panel refresh and a translation cache.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.2
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. Regenerate/merge any customized locale, `config.yml`, and panel templates so the new keys appear (see the notes below).
6. You should be good to go!
> 🔺 **Respawn behaviour change:** Bed and respawn-anchor spawns are now honored on islands the player is a member of. This is on by default (`BED_ANCHOR_RESPAWN` world setting). Economy-sensitive servers that want the old "always respawn at island home" behaviour should disable this setting.
> ⚙️ **Config note:** A new `bluemap` section (`island-markers`, `island-areas`, and marker customization) is added to `config.yml`, both toggles default `true`. The `team_panel.yml` and `team_invite_panel.yml` templates gain configurable button icons and name/description keys. Existing configs keep the previous behaviour.
> 🔡 **Locale note:** New keys were added for the FISHING flag, the `BED_ANCHOR_RESPAWN` setting, `/admin undelete`, `admin team setowner`, and the team-panel member/prospect name & description. All 22 bundled locales were updated in this release.
### Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
---
## New Features
### 🔡 FISHING protection flag
[[PR #3004](https://github.com/BentoBoxWorld/BentoBox/pull/3004)] Fixes [#1687](https://github.com/BentoBoxWorld/BentoBox/issues/1687)
A new `FISHING` protection flag lets admins and island owners prevent fishing outside island boundaries — originally needed for Boxed. A `FishingListener` checks the **hook's location**, so casting into a protected area from outside is blocked and a blocked cast removes the bobber. Hooking entities is intentionally left to the existing hurting/PVP flags. The flag defaults to visitor rank, so existing servers are unchanged until the required rank is raised.
### 🔺 Bed and respawn-anchor spawns honored
[[PR #3005](https://github.com/BentoBoxWorld/BentoBox/pull/3005)] Fixes [#1632](https://github.com/BentoBoxWorld/BentoBox/issues/1632)
On death (`ISLAND_RESPAWN`) and on end-portal return, a vanilla-resolved bed or charged respawn anchor is now honored when it sits on an island the player is **at least a member of**, in the same game mode. Beds placed while visiting someone else's island, obstructed/broken beds, uncharged anchors, and reset/transferred islands all fall back to the normal island respawn by construction. A new world setting **`BED_ANCHOR_RESPAWN`** (default **enabled**) lets economy-sensitive servers disable the feature entirely. A new public API method `IslandsManager#getSafeRespawnLocation(World, UUID)` (`@since 3.19.0`) backs both respawn paths.
### 🔡 Recover islands pending deletion
[[PR #3017](https://github.com/BentoBoxWorld/BentoBox/pull/3017)]
Islands that are soft-deleted (marked `deletable`, owner cleared, awaiting the region-file purge) can now be rescued before they're gone:
- **`/admin register <player>`** on an island pending deletion now shows a **confirmation prompt** instead of hard-refusing — confirming registers the island to the player and cancels its deletion.
- **`/admin undelete`** (new) clears the pending-deletion status of the island you're **standing on** and leaves it unowned.
- **`/admin delete`** with **no player argument** (new) soft-deletes the island you're standing on after confirmation, refusing if it still has a team.
Shared restore logic lives in a new `IslandsManager.undeleteIsland(Island)`, symmetric with `deleteIsland`.
### ⚙️ BlueMap: survive reloads, config toggles, and marker customization
[[PR #3014](https://github.com/BentoBoxWorld/BentoBox/pull/3014)]
Three improvements to the BlueMap integration:
- **Markers now survive `/bluemap reload`.** BentoBox now registers with BlueMap's own lifecycle (`onEnable`/`onDisable`) instead of grabbing the API once at boot, so owner pins and protected-area rectangles are re-populated on every reload and are no longer racy at startup.
- **New config toggles** `bluemap.island-markers` and `bluemap.island-areas` (both default `true`) mirror the Dynmap toggles added in 3.17.1, letting admins who run their own markers turn BentoBox's layer off. The marker set is also client-side toggleable in BlueMap's UI.
- **Marker customization** exposes the `POIMarker` / `ShapeMarker` options (icon, max distance, area style) for admins who want to restyle the layer.
### ⚙️ Configurable team panel button icons
[[PR #3010](https://github.com/BentoBoxWorld/BentoBox/pull/3010)] Fixes [#3008](https://github.com/BentoBoxWorld/BentoBox/issues/3008)
The **STATUS**, **RANK filter**, and **INVITE** buttons in the team management panel previously hardcoded their icons and ignored any `icon:` set in `team_panel.yml`. They now honour the template icon, falling back to the previous material when none is set, so admins can (for example) change the rank filter to a `HOPPER`. Shipped template values match the old icons, so existing installs look identical.
### 🔡 Customizable member & prospect name/description
[[PR #3011](https://github.com/BentoBoxWorld/BentoBox/pull/3011)] [[PR #3013](https://github.com/BentoBoxWorld/BentoBox/pull/3013)] Fixes [#3009](https://github.com/BentoBoxWorld/BentoBox/issues/3009)
The team-panel member button and invite-prospect button name and description were built entirely in code and referenced locale keys that didn't exist. New keys `commands.island.team.gui.buttons.member.{name,description,last-seen}` and `commands.island.team.invite.gui.buttons.member.{name,description}` now drive both the online and offline member names (with a `[last_seen]` placeholder for offline status) and the rank line, so admins can restyle them. Default values reproduce the previous output exactly.
### 🔡 Console-friendly `admin team setowner`
[[PR #3003](https://github.com/BentoBoxWorld/BentoBox/pull/3003)]
`admin team setowner` gains an optional second argument naming the island's current owner: `/[gamemode] admin team setowner <newOwner> [islandOwner]`. The named form is location-independent and **runs from the console** (skipping the confirmation prompt), making it drivable from automation such as Skript — e.g. a "capture the island by killing the owner" game mode. The one-argument in-game form is unchanged, and the concurrent-island cap still applies.
---
## Bug Fixes
### End exit portal respawn wrongly used world spawn
[[PR #3005](https://github.com/BentoBoxWorld/BentoBox/pull/3005)] Fixes [#1632](https://github.com/BentoBoxWorld/BentoBox/issues/1632)
Players jumping into the end exit portal were dumped at the server's global spawn on multi-gamemode servers. The listener now triggers on `PlayerRespawnEvent`'s authoritative `END_PORTAL` reason instead of a stale in-memory tracking map, and routes to the player's **safe home** using the same resolution as `ISLAND_RESPAWN`.
### Item frames and paintings broken in blueprints
[[PR #3006](https://github.com/BentoBoxWorld/BentoBox/pull/3006)] [[PR #3007](https://github.com/BentoBoxWorld/BentoBox/pull/3007)] Fixes [#1752](https://github.com/BentoBoxWorld/BentoBox/issues/1752)
Item frames survived a blueprint copy but not the round trip: facing direction was never stored, a self-assignment bug meant `isFixed` was never applied, and paintings lost both their facing and their artwork. Blueprints now store and re-apply the `BlockFace` facing for any hanging entity, restore the painting `Art` (skipping unknown keys from newer servers safely), paste paintings at their anchor block with the art pre-applied, and no longer silently drop the rest of a block's entities when one fails to attach. Both new blueprint fields are nullable additions, so existing blueprint files load unchanged.
---
## Performance
### ⚡ Settings-GUI click spam no longer raises MSPT
[[PR #3015](https://github.com/BentoBoxWorld/BentoBox/pull/3015)] [[PR #3016](https://github.com/BentoBoxWorld/BentoBox/pull/3016)]
Spam-clicking `/is settings` was costing ~30–40 MSPT. Two rounds of fixes bring it down to negligible:
- **In-place tabbed-panel refresh** rebuilds the panel contents instead of re-opening the inventory on every click.
- **Rejected clicks are now cheap** — the cooldown check runs first (only map lookups), the plain-text panel title is cached, and the "slow down" notice is translated at most once per cooldown window.
- **`User#getTranslation` caches** the expensive MiniMessage → Component → legacy conversion, keyed purely on the input string (measured ~143× faster warm, ~37× faster on a full panel rebuild). The cache is bounded by size (10,000) and idle time (30 min), needs no reload invalidation, and can't go stale because placeholders are substituted before conversion.
---
## Other Improvements
* Bumped the pinned `publish-platforms.yml` reusable workflow to `ca2dcd1` / `fe4b1f0` [[PR #3002](https://github.com/BentoBoxWorld/BentoBox/pull/3002)]
* Refreshed stale facts in `CLAUDE.md`
---
## What's Changed
* 🔡 Add FISHING protection flag by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3004
* 🔺 Fix end exit portal respawn and honor bed/anchor spawns by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3005
* 🐛 Fix #1752: Item frames and paintings in blueprints by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3006
* 🐛 Paste paintings at their anchor block with art pre-applied by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3007
* 🔡 Recover islands pending deletion: register, undelete, and stand-on delete by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3017
* ⚙️ BlueMap: survive reloads + config toggles and marker customization by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3014
* ⚙️ Make team_panel button icons configurable via the template by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3010
* 🔡 Add customisable member/prospect name & description locale keys by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3011
* 🔡 Style offline member name via the member.name locale key by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3013
* 🔡 Make admin team setowner console/automation friendly by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3003
* ⚡ Refresh tabbed panels in place to stop settings-GUI click spam raising MSPT by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3015
* ⚡ Cut settings-GUI click-spam MSPT: translation cache + cheaper rejected clicks by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3016
* ci: bump pinned publish-platforms.yml to ca2dcd1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3002
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.18.1...3.19.0
release
3.18.1
3.18.11 июл. 2026 г.1 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
## Release Highlights
BentoBox 3.18.1 is a maintenance release. The headline fix restores multi-line colour in GUIs; the rest hardens the build and release pipeline.
* 🐛 **Multi-line lore & names keep their colour** — text after the first line of a tooltip no longer falls back to the default purple. Fixes GUI tooltips across all addons (reported on Challenges).
### Compatibility
✔️ Paper Minecraft 1.21.5 – 26.2
✔️ Java 25+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Ensure your server is running on a **Java 25-capable Paper build** for the Minecraft 26.x line.
3. Stop the server.
4. Replace the BentoBox jar with this one.
5. Restart the server.
6. You should be good to go!
---
## Bug Fixes
### Multi-line lore and text lose colour after the first line
[[PR #2999](https://github.com/BentoBoxWorld/BentoBox/pull/2999)]
Multi-line names and lore lost their formatting after the first line — the second and subsequent lines rendered in the default (purple) colour even when each source line specified one, affecting GUI tooltips across all addons. `Util.componentToLegacy` emitted a colour/format code only before the first line of a multi-line text node; after lore was split on newlines, every line after the first had no colour code left. The serializer now re-emits the active colour (and any decorations, in the correct order) after each newline, so each tooltip line keeps its colour.
---
## Other Improvements
### Build: scope vendor repositories to fix flaky dependency resolution
[[PR #3000](https://github.com/BentoBoxWorld/BentoBox/pull/3000)]
CI intermittently failed to resolve `us.dynmap`, `net.momirealms`, `de.oliver` (FancyNpcs/FancyHolograms) and MultiLib: Gradle queries repositories in declaration order, and a flaky host returning HTTP 520 aborted resolution before the authoritative repo was reached. Each vendor group is now scoped to its authoritative repository with `exclusiveContent`, the FancyPlugins repo was updated to its new `repo.fancyinnovations.com` home, and MultiLib now resolves from Clojars — so one host's outage can no longer cascade into unrelated groups.
### Release publishing pipeline
Modrinth and CurseForge publishing now reuse the built release asset instead of rebuilding, CurseForge game versions include MC 1.21.5 and 26.2, and Hangar publishing is enabled. Internal CI only — no effect on the plugin itself.
---
## What's Changed
* 🐛 Fix multi-line lore/text losing colour after the first line by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2999
* Build: scope vendor repos to fix flaky dependency resolution by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/3000
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.18.0...3.18.1
release
3.18.0
3.18.028 июн. 2026 г.568Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
release
3.16.2
3.16.219 мая 2026 г.4,3 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
## New in this release
A small follow-up patch with one defensive hardening, one inventory-loss fix, and CraftEngine API compatibility.
* 🔺 **`Island.setRange` no longer silently corrupts island data.** A misbehaving third-party addon was calling `setRange` with a value that disagreed with the game mode's configured `distance-between-islands`. On the next restart, BentoBox refused to load the affected islands and panic-disabled with **`Island distance mismatch`**, taking the whole island system offline. `setRange` now refuses any value that disagrees with the configured distance (and logs the calling stack frame), unless the game mode opts out via `GameModeAddon.isEnforceEqualRanges() == false` — the supported path for claim-resizing game modes like StrangerRealms.
* 🐛 **Team-accept no longer eats inventories under InvSwitcher.** Players who accepted a team invite while standing in a non-BentoBox world (with `island.reset.on-join.inventory: true` — Boxed and AOneBlock ship with this) could return to that world to find their items gone. The on-join inventory/XP/health/hunger/money resets now run *after* the teleport into the island world completes, so InvSwitcher (and similar plugins) save the player's real inventory under the old world before the reset fires. Fixes the case reported against AOneBlock 1.25.0 / Boxed 3.3.0 / InvSwitcher 1.17.1.
* 🐛 **CraftEngine 26.5+ compatibility.** `CraftEngineHook.getItemStack(id)` was using the pre-rewrite `CustomItem<ItemStack>` API and broke on recent CraftEngine releases. The hook now uses `BukkitItemDefinition#buildBukkitItem()` and works against CraftEngine 26.5.
## Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.12
✔️ Java 21+
## Upgrading
1. **As always, take backups just in case.**
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. You should be good to go!
> 🔺 **`Island.setRange` contract change.** `setRange` was previously a plain setter. It now refuses values that would put the stored range out of sync with the game mode's configured distance (which would cause `Island distance mismatch` on the next load) and logs a warning naming the caller. Game modes that legitimately resize claims continue to work — they already override `GameModeAddon.isEnforceEqualRanges()` to return `false`. If you're maintaining an addon and you see warnings like `Refusing Island.setRange(...)` in the log, the warning identifies the exact caller — that's the call you need to look at.
## Legend
- 🔺 special attention needed.
## What's Changed
* 🐛 Compatible with the latest version of CraftEngine by @jhqwqmc in https://github.com/BentoBoxWorld/BentoBox/pull/2978
* 🐛 Defer on-join player resets until after team-accept teleport by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2979
* 🔺 Harden `Island.setRange` against distance-mismatch corruption by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2980
* Pin MockBukkit to v4.110.0 (fix flaky SNAPSHOT resolution) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2981
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.16.1...3.16.2
release
3.16.1
3.16.117 мая 2026 г.302Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
## New in this release
A targeted patch for `/bbox admin delete`.
* 🔺 **Admin delete actually deletes the island now.** Not instantly, but when the plugin runs its housekeeping or pure runs. Note that if there are live islands in the same region file, then it will remain in the deleted state until the region is clear. If you really need to delete the blocks, then use WorldEdit or manually remove them. In the next full release we'll add a cut to the Blueprint command to remove blocks.
* 🔺 **Seed worlds (`<world>/bentobox`) are no longer created.** The seed-world infrastructure (`createSeedWorlds`, `removeSeedWorlds`, the in-memory copies, the on-disk folders) is gone. Any stale `<world>/bentobox` folders left over from earlier versions are safe to delete manually. These were not doing anything recently except taking up space.
* 🔺 API: **`GameModeAddon#isUsesNewChunkGeneration()` is deprecated for removal.** Existing addons that override it keep working (the value is simply ignored) but will see a deprecation warning. Remove the override at your convenience.
Internal cleanup that ships with the fix:
* Removed `DeleteIslandChunks`, `IslandChunkDeletionManager`, `CopyWorldRegenerator`, the `bentobox-deleteIsland` MultiLib subscriber, and the `IslandDeletion` DB recovery loader.
* `WorldRegenerator` slimmed to just `regenerateChunk(Chunk)`; `WorldRegeneratorImpl` is now a small Bukkit-only delegate to `World#regenerateChunk(int, int)` used by `CleanSuperFlatListener`.
* `IslandDeletionManager#inDeletion(Location)` now queries live island state (`Island#isDeletable()`) instead of a side-channel `HashSet`, so it can never drift out of sync.
## Compatibility
✔️ Paper Minecraft 1.21.5 – 26.1.2
✔️ Java 21+
## Upgrading
1. **As always, take backups just in case.**
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. (Optional) Delete any stale `<world>/bentobox` folders in your world container — they are no longer used.
6. You should be good to go!
> 🔺 **Reap timing.** When `/bbox admin delete` finishes, the player's blocks are still on disk; the island is just marked deletad. The actual region files come out on the next housekeeping sweep (default: 24 h). If you need immediate cleanup, run `/bbox admin purge deleted` after the delete. But again, it will only be removed if the region files are clear.
## Legend
- 🔺 special attention needed.
## What's Changed
* 🔺 fix: route admin delete through soft-delete; drop seed-world plumbing by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2977
* fix: address PR #2977 review on IslandDeletionManager by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2977
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.16.0...3.16.1
release
3.16.0
3.16.010 мая 2026 г.435Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
## Release Highlights
* ⚙️🔡🔺 **Per-world team disable + `admin team disbandall`** — Game modes can now opt out of the team subsystem entirely. Trust and coop remain available as the supported alternative, and a new admin command strips pre-existing members from every island in one pass.
* 🔺 **Setowner cap enforcement** — Transferring island ownership now respects the recipient's `concurrent-islands` cap and `island.number.<n>` permission, closing a clean bypass that previously allowed admins (and team setowner) to push players over their limit.
* 🐛 **Safe respawn fallback** — `ISLAND_RESPAWN` no longer drops players at world spawn (0,0) when their home block has been removed; it now walks a fallback chain ending in `SafeSpotTeleport` to find a real safe spot on the island.
* 🐛 **Offline growth: vines & trees** — `OFFLINE_GROWTH` now correctly blocks every spreading plant (vines, weeping vines, etc.) and every tree growing from a sapling — not just kelp and bamboo.
* 🐛 **Dynmap marker Y range** — Area/polygon markers now use the world's full min/max height instead of always rendering at y=64.
* **CraftEngine hook helpers** — `getItemStack(id)` and `getItemId(item)` let addons render and recognise CraftEngine custom items without depending on CraftEngine directly.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.12
✔️ Java 21+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. If you intend to enable `isTeamsDisabled` in a game mode, run `/[admin] team disbandall` once after the upgrade to clean up pre-existing teams (see the callout below).
6. You should be good to go!
> ⚙️🔺 **Teams-disabled is opt-in per game mode.** A new `WorldSettings#isTeamsDisabled()` method (default `false`) lets a game mode disable team commands in its world. Existing servers see no behaviour change unless a game mode adopts the setting. Trust and coop relationships are intentionally unaffected — they're the supported alternative when teams are off.
> 🔺 **Setowner cap is now enforced.** Both `/island team setowner` and `/[admin] team setowner` refuse the transfer if the recipient is already at their concurrent-islands cap. Previously, admin setowner only emitted a warning *after* the bypass and `/island team setowner` had no check at all. Adjust the recipient's permission first if you really intend to allow more islands.
> 🔡 **Locale changes:** New keys for `commands.admin.team.disbandall.{description,confirmation,success}`, `commands.island.team.errors.teams-disabled`, `commands.admin.team.setowner.errors.at-max`, and an updated `commands.admin.team.kick.cannot-kick-owner` message that points admins to `setowner`/`disband`. The dead `commands.admin.team.kick.success-all` key has been removed. All 22 bundled translations are in sync.
### Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
---
## New Features
### ⚙️🔡🔺 Per-world Team Disable + `admin team disbandall`
[[PR #2975](https://github.com/BentoBoxWorld/BentoBox/pull/2975)] Closes [#2965](https://github.com/BentoBoxWorld/BentoBox/issues/2965)
A new `WorldSettings#isTeamsDisabled()` (default `false`) lets a game mode opt out of the team subsystem on a per-world basis. When enabled, the action commands that add, remove or reorganise team members refuse to run with `commands.island.team.errors.teams-disabled`:
- `/island team invite` and `invite accept` (TEAM invitations only — COOP and TRUST invitations remain accepted)
- `/island team kick`, `leave`, `promote`, `demote`, `setowner`
- `/[admin] team add`
Read-only commands (`/island team` panel, `info`, `invites`, `invite reject`), trust/coop relationships (`trust`, `coop`, `untrust`, `uncoop`), and admin commands that operate on existing teams (`kick`, `disband`, `disbandall`, `setowner`, `fix`, `maxsize`) all remain available.
A new admin command `/[admin] team disbandall` strips every member and sub-owner from every island in the current world in one confirmable pass. Trusted and coop players are intentionally untouched. Use it once after flipping `isTeamsDisabled` on to clean up pre-existing teams.
### 🔌 CraftEngine Hook Helpers
[[PR #2970](https://github.com/BentoBoxWorld/BentoBox/pull/2970)] [[PR #2973](https://github.com/BentoBoxWorld/BentoBox/pull/2973)]
Two new helpers on `CraftEngineHook`, mirroring the equivalents on `OraxenHook` and `ItemsAdderHook`:
- `getItemStack(String id)` returns an `Optional<ItemStack>` for the registered CraftEngine custom item — useful for rendering the correct icon and display name in panels and GUIs.
- `getItemId(ItemStack item)` returns the namespaced ID of a CraftEngine custom item (or `null`) — useful for command handlers (e.g. Level addon's `/is value hand`) that need to recognise a held custom item.
Both helpers let addons interoperate with CraftEngine without compiling against it directly.
---
## Bug Fixes
### 🔺 Setowner Bypassed `concurrent-islands` Cap
[[PR #2966](https://github.com/BentoBoxWorld/BentoBox/pull/2966)] Fixes [#2908](https://github.com/BentoBoxWorld/BentoBox/issues/2908)
`AdminTeamSetownerCommand` previously allowed transfers to a player who already owned their maximum allowed concurrent islands and only emitted a warning afterwards; `IslandTeamSetownerCommand` had no check at all. Both now compute the recipient's current concurrent-islands count and permission-aware cap in `canExecute` and refuse the transfer when at or above the limit. The user path uses the existing `commands.island.team.setowner.errors.at-max` locale entry; the admin path uses a new `commands.admin.team.setowner.errors.at-max` that includes the count and limit.
### `ISLAND_RESPAWN` Sent Players to 0,0 When Home Was Unsafe
[[PR #2962](https://github.com/BentoBoxWorld/BentoBox/pull/2962)]
When `ISLAND_RESPAWN` was enabled and the player's home block had been removed, `isSafeLocation()` returned false and the respawn fell through to world spawn. `IslandRespawnListener` now walks a fallback chain — try one block above the home (covers slabs/stairs), then a quick sync check around the island protection center, then anchor the respawn at the protection center and schedule `SafeSpotTeleport` on the next tick to find a real safe spot. `cancelIfFail(true)` ensures the player isn't yanked elsewhere if the comprehensive scan also fails.
### `OFFLINE_GROWTH`: Vines and Trees from Saplings Were Ignored
[[PR #2968](https://github.com/BentoBoxWorld/BentoBox/pull/2968)]
`OFFLINE_GROWTH` previously only blocked kelp, bamboo and bamboo saplings on `BlockSpreadEvent` — vines, cave vines, twisting/weeping vines and any other spreading plant slipped through. Trees and mushrooms growing from a sapling didn't fire `BlockGrowEvent` at all, so they were never blocked. The listener now uses the source block location for `BlockSpreadEvent` (so plants growing outward from an island are correctly attributed) and adds a `StructureGrowEvent` handler for trees/mushrooms.
### Admin `team kick` on Multi-island Players
[[PR #2967](https://github.com/BentoBoxWorld/BentoBox/pull/2967)]
`AdminTeamKickCommand` previously iterated every team island the target was on and silently kicked them from each. With concurrent islands enabled, that's a footgun. The command now defaults to the single team island the target is on and, when there are several, requires an explicit `x,y,z` coordinate (with tab completion suggesting the candidates). Owner-islands are also excluded from kick targets — if the target only owns the matched island(s), the command refuses with `commands.admin.team.kick.cannot-kick-owner` and points the admin to `setowner` or `disband` instead.
### Dynmap Area Markers Always Rendered at y=64
[[PR #2972](https://github.com/BentoBoxWorld/BentoBox/pull/2972)]
`DynmapHook` was creating area markers without a configured Y range, so Dynmap rendered them at the default y=64 regardless of the actual world height. Both `setMarker` and the public `addPolygonMarker` now call `area.setRangeY(world.getMaxHeight(), world.getMinHeight())` so markers cover the full vertical extent of the world.
---
## Other Improvements
* Regression test for the island home location bug fix from 3.15.0 [[PR #2969](https://github.com/BentoBoxWorld/BentoBox/pull/2969)]
* `WorldSettings#isTeamsDisabled()` Javadoc rewritten with explicit lists of which commands are blocked vs. unaffected
* Locale sync across all 22 bundled translations for new keys + the updated `cannot-kick-owner` message; removed the dead `success-all` key
---
## What's Changed
* 🐛 fix: ISLAND_RESPAWN sends players to 0,0 when home block is removed by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2962
* 🔺 Refuse setowner when recipient is at the concurrent-islands cap by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2966
* 🐛 AdminTeamKick: require x,y,z coordinates when player is on multiple islands by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2967
* 🐛 Fix OFFLINE_GROWTH: block vine spread and tree growth from saplings by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2968
* Add regression test confirming island home location is set on the correct island during concurrent creation by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2969
* 🔌 Add CraftEngineHook.getItemStack(id) lookup by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2970
* 🐛 Fix Dynmap area markers always rendering at y=64 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2972
* 🔌 feat(hooks): add CraftEngineHook.getItemId(item) lookup by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2973
* ⚙️🔡🔺 feat: per-world team disable + admin team disbandall (#2965) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2975
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.15.0...3.16.0
release
3.15.0
3.15.026 апр. 2026 г.930Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
## Release Highlights
* ⚙️🔺 **Island Delete & Purge Overhaul** — The system has been completely redesigned: for game modes that are not void worlds, island reset/delete now soft-deletes islands instead of immediately removing blocks, region file cleanup is deferred and batched, and a new `HousekeepingManager` handles automated cleanup on a configurable schedule.
* 🔺 **Simplified Purge Commands** — `/purge <days>` now handles everything in one step (region file deletion included). The old subcommands `/purge regions`, `/purge status`, and `/purge stop` have been removed.
* **Custom Blueprint Bundle Icons** — Blueprint bundles now support custom item model keys (e.g. `myserver:island_tropical`) and vanilla namespaced materials (e.g. `minecraft:diamond`) as icons, enabling resource-pack-driven island selection GUIs.
* **InvincibleVisitors XP Fix** — XP orbs were incorrectly blocked from tracking visitors by the mob-targeting protection; they now properly home in on visitors while the `EXPERIENCE_PICKUP` flag still controls whether pickup is allowed.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.12
✔️ Paper Minecraft 26.1.1 – 26.1.2
✔️ 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.
5. The `keep-previous-island-on-reset` config setting has been removed — all resets now soft-delete. Remove it from your game mode configs to avoid warnings.
6. You should be good to go!
> 🔺 **Purge command changes:** `/purge regions`, `/purge status`, and `/purge stop` no longer exist. The top-level `/purge <days>` command now identifies stale islands and deletes their region files in one pass. Update any scripts or documentation that reference the old subcommands.
> ⚙️ **Config removal:** `keep-previous-island-on-reset` has been removed. All island resets now soft-delete (equivalent to the old `false` behaviour, but with deferred disk cleanup). If you previously relied on `keep-previous-island-on-reset: true` to preserve old islands, use `/purge protect` on islands you want to keep.
> 🔡 **Locale changes:** Several purge-related locale keys have been removed, renamed, or updated. New keys for the `deleted` subcommand have been added. Regenerate or update your locale files.
### Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
---
## New Features
### ⚙️🔺 Island Delete System Overhaul
[[PR #2933](https://github.com/BentoBoxWorld/BentoBox/pull/2933)] [[PR #2949](https://github.com/BentoBoxWorld/BentoBox/pull/2949)]
The system has been fundamentally redesigned for reliability and safety. Island resets in non-void worlds now always soft-delete (setting a `deletable` flag) rather than immediately destroying chunks. A new `HousekeepingManager` runs on a configurable schedule to sweep region files for soft-deleted islands and free disk space asynchronously.
**IMPORTANT:** The server can store a lot of the world chunks in RAM and so the Housekeeping or Purging **will not appear to do anything until you restart the server.** Please do not report that an island is not deleting until you have restarted the server.
The new `/purge <days>` command now identifies and deletes region files in one step — the previous behaviour only set the `deletable` flag in the database, leaving region files on disk until a separate `/purge regions` run. The new `/purge deleted` subcommand reaps region files for any island already flagged as `deletable`, regardless of age. `/purge unowned` now flags orphaned islands and prompts the admin to run `/purge deleted` afterwards. Again, the changes will not be seen in-game until server restart.
For game modes that use non-void world generation (Boxed, AcidIsland, CaveBlock, etc.), `AdminDeleteCommand` now soft-deletes and defers physical cleanup; simple void/overworld game modes (AOneBlock, BSkyBlock, etc.) keep the existing `DeleteIslandChunks` path. Island database rows are removed at server shutdown after region files are confirmed gone, ensuring crash-safe recovery.
The `keep-previous-island-on-reset` config setting has been removed — all resets now soft-delete by default.
### 💎 Custom Blueprint Bundle Icons
[[PR #2941](https://github.com/BentoBoxWorld/BentoBox/pull/2941)] Closes [#2940](https://github.com/BentoBoxWorld/BentoBox/issues/2940)
The `"icon"` field in blueprint bundle JSON files now accepts three formats:
- **Plain material name** (existing): `"icon": "DIAMOND"`
- **Vanilla namespaced material** (new): `"icon": "minecraft:diamond"`
- **Custom item model key** (new): `"icon": "myserver:island_tropical"`
Custom model keys are applied to a `PAPER` base item using `ItemMeta.setItemModel()`, allowing resource-pack-defined icons to appear on island selection panels. A new `getIconItemStack()` API method returns the full `ItemStack` with model data applied; the existing `getIcon()` method returning `Material` remains unchanged for addon compatibility.
---
## Bug Fixes
### InvincibleVisitors: XP Orbs Blocked from Tracking Visitors
[[PR #2948](https://github.com/BentoBoxWorld/BentoBox/pull/2948)]
`InvincibleVisitorsListener` cancelled `EntityTargetLivingEntityEvent` for any entity targeting a visitor — including XP orbs. Since XP orbs use this event to home in on players, visitors could never pick up XP even when the `EXPERIENCE_PICKUP` flag allowed it. The fix skips cancellation when the entity is an `ExperienceOrb`; the flag listener remains responsible for controlling whether pickup is actually granted.
### BungeeCord Hex Colour Not Recognised in Legacy Conversion
BungeeCords `&#RRGGBB` hex colour format was not being recognised in `legacyToMiniMessage`, causing hex colours from BungeeCord-formatted strings to fall through as literal text. The parser now handles this format correctly.
### Spurious `defaultRank` Warnings for PVP Setting Flags
PVP-related setting flags were triggering incorrect `defaultRank` warning log messages on startup. These warnings were harmless but noisy; the condition is now correctly filtered.
---
## Other Improvements
* 🔡 Accept underscore locale filenames by auto-renaming to BCP-47 hyphen form on startup (e.g. `pt_BR.yml` → `pt-BR.yml`) — carries forward from 3.14.2 [[PR note](https://github.com/BentoBoxWorld/BentoBox/pull/2933)]
* 🔡 Fix typo in Japanese locale file for block count message
* Add `PURGED` event reason; fire `IslandDeleteEvent` immediately on soft-delete so addons receive timely notification
* Add warning logs when island grid is null to aid debugging of rare world-unload edge cases
* Extract `AbstractPurgeCommand` base class to remove duplication across purge subcommands
* Remove accidentally committed `.paper-nms/` build artifact and add to `.gitignore` [[PR #2942](https://github.com/BentoBoxWorld/BentoBox/pull/2942)]
---
## FAQ: Island Delete & Purge for Admins
### Island Delete
**Q: I ran `/bbox admin delete <player>` but the island is still visible. Why?**
It depends on your game mode. For game modes that use custom chunk generation — Boxed, AcidIsland, CaveBlock, and similar — the island is *soft-deleted*: it is marked as `deletable` in the database but its chunks remain on disk. The actual `.mca` region files are cleaned up later by the `HousekeepingManager` (if enabled) or when you run `/purge deleted`. Even after the files are deleted, Papers in-memory chunk cache means the island may still appear in-game until the **next server restart**. This is normal — do not report the island as not deleting until you have restarted.
**Q: Why soft-delete instead of immediately removing chunks?**
For worlds with non-trivial terrain (AcidIslands ocean, Boxeds generated box, CaveBlocks cave world), chunk regeneration is slow and expensive. Soft-delete defers the work safely: the island is immediately invisible to the gameplay systems (it can no longer be claimed or teleported to), and disk cleanup happens when the server has breathing room. It also means a crash before cleanup leaves data intact — the island stays `deletable` and is picked up by the next purge cycle.
**Q: My game mode (BSkyBlock, AOneBlock) deletes island chunks immediately. Why is it different?**
Void-world game modes use the `DeleteIslandChunks` / `WorldRegenerator` path, which regenerates the island area back to void immediately. Since there is no complex terrain to preserve, this is fast and safe. Soft-delete was not needed.
**Q: Can I recover a soft-deleted island before the region files are reaped?**
Yes — if the region files have not yet been deleted, you can clear the `deletable` flag via the database or an admin command and the island will be restored. Once the region files are gone, however, only a backup can save it. **Take backups before mass deletes.**
---
### Purge
**Q: What does `/purge <days>` do exactly?**
It scans every `.mca` region file in the current game modes world (overworld, and nether/end if island-nether/end is enabled) that is older than `<days>` days. It then filters out:
- regions containing the spawn island
- regions containing purge-protected islands (`/purge protect`)
- regions containing islands whose owner logged in within `<days>` days
- regions containing islands above the configured Level addon threshold (if installed)
The remaining regions are shown in the server log with a summary, and you are asked to type `confirm` before anything is deleted.
**Q: What is the difference between `/purge <days>` and `/purge deleted`?**
| Command | Filter | What it deletes |
|---|---|---|
| `/purge <days>` | Region files older than N days, minus active/protected islands | `.mca` files (plus player data for absent players) |
| `/purge deleted` | Islands flagged `deletable` in the DB (from resets, soft-deletes) | `.mca` files for those islands regions |
Use `/purge <days>` for periodic housekeeping of abandoned islands. Use `/purge deleted` to immediately reap region files for islands that have already been marked for deletion (e.g. after a batch of `/is reset` or `/admin delete` operations).
**Q: How do I delete orphaned (unowned) islands?**
Run `/purge unowned`. This flags every unowned, non-protected, non-spawn island in the world as `deletable` (with confirmation). Then run `/purge deleted` to reap their region files. Restart the server to see the changes.
**Q: I ran the purge but the island chunks are still visible in-game. What happened?**
Paper caches chunk data in RAM. The `.mca` files have been deleted from disk, but the cache still has them until the server shuts down cleanly. **Restart the server** — on the next start, Paper will find no region file and treat those chunks as empty/void. This is expected behaviour, not a bug.
**Q: What is the HousekeepingManager and how do I configure it?**
`HousekeepingManager` is an automated background task that runs the purge on a schedule without admin intervention. It has two independent cycles:
- **Age sweep** — runs every `interval-days` days and behaves like `/purge <days>` using the configured `region-age-days` value.
- **Deleted sweep** — runs every `deleted-interval-hours` hours and behaves like `/purge deleted`, reaping region files for any island already flagged `deletable`.
Both cycles are **disabled by default** (`housekeeping.enabled: false`). Enable and configure them in your BentoBox `config.yml` under the `housekeeping` section.
**Q: What does `/purge protect` do, and when should I use it?**
It marks an island as purge-protected, permanently exempting it from all purge operations regardless of owner activity or region file age. Use it for community builds, showcase islands, or any island you never want auto-cleaned.
**Q: What is `/purge age-regions`?**
This is a developer/testing utility that artificially ages the per-chunk timestamps inside `.mca` files so they become candidates for `/purge <days>` without waiting real time. It is not intended for production use — it exists to make testing the purge pipeline practical.
---
## Whats Changed
* feat: support item model keys and namespaced materials for blueprint bundle icon by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2941
* chore: remove accidentally committed `.paper-nms/` directory and add to `.gitignore` by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2942
* ⚙️🔺 Purge region files for soft-deleted islands by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2933
* 🔺 Merge /purge regions into /purge; drop status/stop; simplify /purge unowned by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2949
* 💎 feat: support item model keys and namespaced materials for blueprint bundle icon by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2941
* Fix: InvincibleVisitors mob-targeting protection incorrectly blocks XP orbs from tracking visitors by @app/copilot-swe-agent in https://github.com/BentoBoxWorld/BentoBox/pull/2948
* chore: remove accidentally committed `.paper-nms/` directory and add to `.gitignore` by @app/copilot-swe-agent in https://github.com/BentoBoxWorld/BentoBox/pull/2942
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.14.2...3.15.0
release
3.14.2
3.14.215 апр. 2026 г.1,7 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2paper, purpur
Что нового
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.12
✔️ Paper Minecraft 26.1.1 – 26.1.2
✔️ 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.
> 🔡 **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
[[d3a04e25](https://github.com/BentoBoxWorld/BentoBox/commit/d3a04e251)] Fixes [#2943](https://github.com/BentoBoxWorld/BentoBox/issues/2943)
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](https://github.com/BentoBoxWorld/BentoBox/commit/d2dd28e21)]
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](https://github.com/BentoBoxWorld/BentoBox/commit/bdc20675b)]
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
release
3.14.1
3.14.111 апр. 2026 г.365Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
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
release
3.14.0
3.14.010 апр. 2026 г.192Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
# 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 `.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.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.11
✔️ Paper Minecraft 26.1.1
✔️ Java 21+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. Existing `.blu` blueprint files will continue to work — they are loaded transparently alongside the new `.blueprint` format.
6. You should be good to go!
> 📄 **Blueprint migration note:** Blueprints are now saved in plain JSON `.blueprint` format. Your existing `.blu` files 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](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. 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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](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. 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](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. The hologram is removed immediately when the obsidian is scooped, or after a configurable duration.
### 🔡 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. Useful for scoreboards, tab lists, and addon integrations.
### ⚙️ 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, enabling addons to interact with spawned MythicMobs entities.
### 🔺 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, ensuring island chunks are properly cleaned up on the newer Paper builds.
---
## Bug Fixes
### Fix MiniMessage formatting on panel items
[[PR #2903](https://github.com/BentoBoxWorld/BentoBox/pull/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
[[PR #2918](https://github.com/BentoBoxWorld/BentoBox/pull/2918)] Fixes [#2917](https://github.com/BentoBoxWorld/BentoBox/issues/2917)
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](https://github.com/BentoBoxWorld/BentoBox/pull/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
[[PR #2927](https://github.com/BentoBoxWorld/BentoBox/pull/2927)] Fixes [#2919](https://github.com/BentoBoxWorld/BentoBox/issues/2919)
Fixed an unwanted blank line appearing in conversation-style confirmation prompts.
### 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)
Addon-owned and game-mode placeholders are no longer lost when running `/bbox reload`.
### Skip locale files with invalid BCP-47 tags
[[PR #2928](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](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)]
---
## 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_rank` placeholder 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
release
3.13.0
3.13.04 апр. 2026 г.500Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
# 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 new `getBukkitVersion()` 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](https://docs.papermc.io/adventure/minimessage/format/).
### Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.11
✔️ Paper Minecraft 26.1.1
✔️ Java 21+
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. 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](https://github.com/BentoBoxWorld/BentoBox/pull/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
[[PR #2898](https://github.com/BentoBoxWorld/BentoBox/pull/2898)] [[PR #2900](https://github.com/BentoBoxWorld/BentoBox/pull/2900)]
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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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
release
BentoBox 3.12.0
3.12.031 мар. 2026 г.419Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1paper, purpur
Что нового
# 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 `expelCommand` config 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 homes` list 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 (`obsidianScoopingCooldown` and `obsidianScoopingRadius`) prevent rapid lava/obsidian duplication exploits.
### Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.1
✔️ Java 21
### Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server.
3. Replace the BentoBox jar with this one.
4. Restart the server.
5. 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](https://github.com/BentoBoxWorld/BentoBox/pull/2861)] [[PR #2883](https://github.com/BentoBoxWorld/BentoBox/pull/2883)] [[PR #2884](https://github.com/BentoBoxWorld/BentoBox/pull/2884)] [[PR #2885](https://github.com/BentoBoxWorld/BentoBox/pull/2885)]
BentoBox now ships with hooks for [BlueMap](https://bluemap.bluecolored.de/) and [Dynmap](https://www.spigotmc.org/resources/dynmap.274/). 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 to `BentoBoxReadyEvent` when islands are fully loaded.
- `addPointMarker()` now accepts an `iconName` parameter; Dynmap maps this to its icon registry (with fallback to `"default"`) and all 85 built-in Dynmap icon names are documented in `MapManager` Javadoc.
- Dynmap point marker labels support HTML markup (e.g. coloured owner names) via `isMarkupLabel=true`.
### ⚙️ 🔡 SPAWN_PROTECTION World Setting Flag
[[PR #2865](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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
[[PR #2851](https://github.com/BentoBoxWorld/BentoBox/pull/2851)] [[PR #2854](https://github.com/BentoBoxWorld/BentoBox/pull/2854)]
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](https://github.com/BentoBoxWorld/BentoBox/pull/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
[[PR #2122](https://github.com/BentoBoxWorld/BentoBox/pull/2122)] [[PR #2880](https://github.com/BentoBoxWorld/BentoBox/pull/2880)]
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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/2842)] [[PR #2856](https://github.com/BentoBoxWorld/BentoBox/pull/2856)] [[PR #2860](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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](https://github.com/BentoBoxWorld/BentoBox/pull/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, `ChatColor` removal, lambda/`@Override` style, variable-shadowing fixes, cognitive-complexity reductions (see [PR #2875](https://github.com/BentoBoxWorld/BentoBox/pull/2875)).
* Removed unnecessary `public` modifiers from JUnit 5 test classes and methods ([PR #2849](https://github.com/BentoBoxWorld/BentoBox/pull/2849)).
* Added `CLAUDE.md` project guidance file for AI-assisted development ([PR #2848](https://github.com/BentoBoxWorld/BentoBox/pull/2848)).
* Resolved all previously failing and skipped tests; test suite is now fully green ([PR #2872](https://github.com/BentoBoxWorld/BentoBox/pull/2872)).
* Added public API method for reading Why-debug flag messages from `FlagListener` ([PR #2857](https://github.com/BentoBoxWorld/BentoBox/pull/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
release
BentoBox 3.11.2
3.11.214 мар. 2026 г.1 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
## New Release Highlights
* Visitors cannot steal items from copper golems by hitting them
* ⚙️ 🔡 🔺 New `RAID_TRIGGER` island protection flag replaces the old `VISITOR_TRIGGER_RAID` world setting, giving island owners granular control over who can trigger raids
* ⚙️ 🔡 Economy/Vault integration for blueprint bundle costs — admins can now charge players to choose a blueprint when creating or resetting islands
* New `/bbox placeholders` (alias `ph`) GUI and `/bbox dump-placeholders` command for browsing and documenting all registered placeholders
* Automatic update notification banner on startup when a newer BentoBox version is available
* 🔺 Performance: island loading is now dramatically faster on servers with many islands (spatial hash replaces nested TreeMap — addresses servers that hung at "Loading islands from database...")
* Fixed NETHER_PORTAL / END_PORTAL protection flags being bypassed when Paper had `misc.enable-nether: false`
* Fixed `/bbox purge regions` not deleting nether/end region files, and corrected login-check logic and scan reporting
* BentoBox teleports now use `TeleportCause.PLUGIN` instead of `UNKNOWN`, fixing compatibility with Essentials `/back`
## Compatibility
✔️ Paper Minecraft 1.21.5 - 1.21.1
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
3. Replace the BentoBox jar with this one
4. Restart the server
5. You should be good to go!
> 🔺 **Config migration note:** The `VISITOR_TRIGGER_RAID` world setting has been removed. It is replaced by the new per-island `RAID_TRIGGER` protection flag. Review your game mode configs after upgrading.
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
---
## New Features
### ⚙️ 🔡 🔺 RAID_TRIGGER Protection Flag (replaces VISITOR_TRIGGER_RAID)
[[PR #2801](https://github.com/BentoBoxWorld/BentoBox/pull/2801)](https://github.com/BentoBoxWorld/BentoBox/pull/2801)
The `VISITOR_TRIGGER_RAID` world setting has been converted into a proper island protection flag called `RAID_TRIGGER`. Island owners can now configure the minimum rank required to trigger a raid on their island (visitor, member, trusted, owner, etc.) via the island settings panel. Players attempting to trigger a raid below the configured rank will have their action blocked without consuming their Bad Omen effect. By default, only members and above can trigger raids — matching previous behaviour.
### ⚙️ 🔡 Economy Integration for Blueprint Bundle Costs
[[PR #2806](https://github.com/BentoBoxWorld/BentoBox/pull/2806)](https://github.com/BentoBoxWorld/BentoBox/pull/2806)
Admins can now assign a Vault economy cost to blueprint bundles. A cost editor is available in the admin GUI. When economy is enabled and multiple bundles are available, players will see costs displayed and must be able to afford a bundle before selecting it. A new config option `charge-for-blueprint-on-reset` (default: `false`) controls whether the cost also applies when resetting an island. Costs are silently skipped when Vault/economy is not installed.
### Placeholder Browser GUI and Dump Command
[[PR #2803](https://github.com/BentoBoxWorld/BentoBox/pull/2803)](https://github.com/BentoBoxWorld/BentoBox/pull/2803)
Two new admin tools for managing placeholders:
- `/bbox placeholders` (alias `ph`) — opens an interactive GUI showing all registered placeholders organised by addon, with resolved values.
- `/bbox dump-placeholders` — generates a Markdown file documenting every registered placeholder, useful for documentation and the BentoBoxWorld docs site.
Panel appearance can be customised via `BentoBox/panels/placeholder_panel.yml` and `placeholder_list_panel.yml`.
### Automatic Update Notifications
[[PR #2834](https://github.com/BentoBoxWorld/BentoBox/pull/2834)](https://github.com/BentoBoxWorld/BentoBox/pull/2834)
BentoBox now checks for newer releases on startup and prints a coloured banner to the console if an update is available. The check runs asynchronously and fails silently on network errors. Development builds skip the check entirely.
---
## Performance
### 🔺 Faster Island Loading — Spatial Hash for IslandGrid
[[PR #2840](https://github.com/BentoBoxWorld/BentoBox/pull/2840)](https://github.com/BentoBoxWorld/BentoBox/pull/2840)
The internal island grid has been rewritten to use a spatial hash map instead of nested TreeMaps. This reduces island loading from O(n²) to O(n) average-case, directly fixing the issue where servers with large numbers of islands would hang at "Loading islands from database...". Also corrects a bug that could cause large islands to be missed by coordinate lookups (relevant to plugins like Stranger Realms).
---
## Bug Fixes
### 🔺 Addon Binary Compatibility and Class Loading Fix
[[PR #2836](https://github.com/BentoBoxWorld/BentoBox/pull/2836)](https://github.com/BentoBoxWorld/BentoBox/pull/2836)
Restores the `ImmutableSet<UUID>` return type on `Island.getMemberSet()`, which had been changed to `Set<UUID>` and was causing `NoSuchMethodError` at runtime for addons compiled against earlier BentoBox versions. Also fixes an `IllegalStateException: Recursive update` in `AddonClassLoader` that caused startup failures for addons with cross-addon dependencies (e.g. DimensionalTrees).
### Fix NETHER_PORTAL / END_PORTAL Flag Bypass
[[PR #2802](https://github.com/BentoBoxWorld/BentoBox/pull/2802)](https://github.com/BentoBoxWorld/BentoBox/pull/2802)
When Paper's `misc.enable-nether` (or `enable-end`) was set to `false`, BentoBox's portal handling bypassed the Bukkit event bus entirely, allowing visitors to use portals regardless of the protection flag. Events are now properly routed through `Bukkit.getPluginManager().callEvent()` so flag checks fire correctly.
### Fix Purge Regions
[[PR #2841](https://github.com/BentoBoxWorld/BentoBox/pull/2841)](https://github.com/BentoBoxWorld/BentoBox/pull/2841) [[PR #2804](https://github.com/BentoBoxWorld/BentoBox/pull/2804)](https://github.com/BentoBoxWorld/BentoBox/pull/2804) [[PR #2805](https://github.com/BentoBoxWorld/BentoBox/pull/2805)](https://github.com/BentoBoxWorld/BentoBox/pull/2805)
Several fixes to the `/bbox purge regions` command:
- Nether/end worlds were not being detected correctly due to early evaluation before addon worlds loaded
- The recent-login protection check had inverted logic and only checked the island owner rather than all team members
- Region files in nether and end worlds were not being deleted
- Scan reports now show how many islands are blocked by level thresholds vs. protection flags
### Fix Copper Golem Item Theft by Visitors
[[PR #2799](https://github.com/BentoBoxWorld/BentoBox/pull/2799)](https://github.com/BentoBoxWorld/BentoBox/pull/2799)
Visitors could steal items held by Copper Golems by hitting them. This has been fixed.
### Fix TeleportCause for Plugin-Initiated Teleports
[[PR #2800](https://github.com/BentoBoxWorld/BentoBox/pull/2800)](https://github.com/BentoBoxWorld/BentoBox/pull/2800)
BentoBox teleports (home, safe-spot etc.) now correctly use `TeleportCause.PLUGIN` instead of `TeleportCause.UNKNOWN`. This fixes compatibility with plugins like Essentials where `/back` would not work after a BentoBox teleport.
### Fix force-shown Integer in Panel Configuration
[[PR #2832](https://github.com/BentoBoxWorld/BentoBox/pull/2832)](https://github.com/BentoBoxWorld/BentoBox/pull/2832)
Setting `force-shown: N` in a panel YAML now correctly forces all rows 1 through N to be visible, rather than only the last row. The list form `force-shown: [2, 4]` is unaffected.
---
## Internal / Developer Changes
A large batch of code quality improvements driven by SonarCloud analysis: sealed classes, removal of deprecated `ChatColor` API, lambda and `@Override` style fixes, variable shadowing, cognitive complexity reduction in `TemplateReader`, production code quality improvements, and replacement of deprecated `EntityDamageByEntityEvent` and `LingeringPotion` test APIs. Extensive new JUnit 5 test suites added for `ClosestSafeSpotTeleport`, `SQLDatabaseHandler`, `BlueprintPaster`, `IslandTeamInviteGUI`, `DefaultPasteUtil`, and others. Placeholder panel pagination deduplicated into `AbstractPanel`.
---
## What's Changed
* Fix Javadoc @link syntax in getPrimaryIsland method by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2792
* Fix Copper Golem item theft via player interaction by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2799
* Add unit tests for homeTeleportAsync(Island, User, boolean) overload by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2794
* ⚙️ 🔡 🔺 Convert VISITOR_TRIGGER_RAID world setting to RAID_TRIGGER protection flag by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2801
* Use TeleportCause.PLUGIN instead of TeleportCause.UNKNOWN for plugin-initiated teleports by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2800
* ⚙️ Add placeholder browser GUI and dump command (#1332) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2803
* Fix NETHER_PORTAL flag bypass when paper misc.enable-nether is false by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2802
* Refactor AdminPurgeRegionsCommand to dynamically handle nether and end world regions by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2804
* Fix purge regions not deleting nether/end region files by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2805
* ⚙️ 🔡 Add economy integration for blueprint bundle costs by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2806
* Refactor command argument checks and enhance null safety in various commands by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2807
* Deduplicate PlaceholderPanel pagination into AbstractPanel by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2808
* Fix SonarCloud HIGH severity code smells by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2810
* Fix SonarCloud: Disabled tests, parameterized tests by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2814
* Fix SonarCloud: Remove redundant Mockito eq() and commented-out code by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2811
* [WIP] Update code style based on SonarCloud feedback by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2824
* [WIP] Fix code style improvements based on SonarCloud feedback by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2823
* Fix scheduler thread leak in ExpiringMapTest when assertions fail by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2822
* Fix scheduler thread leaks in ExpiringMapTest by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2821
* Ensure ExpiringMap.shutdown() always runs in tests via try/finally by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2819
* Fix leaked MockedStatic handle for IslandsManager in TestBentoBox by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2818
* Ensure ExpiringMap.shutdown() always runs in tests via try/finally by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2820
* Fix SonarCloud: Code style — lambdas, @Override, collapsible ifs by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2812
* Fix SonarCloud: Variable shadowing in tests and assertion improvements by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2813
* Fix SonarCloud: Production code quality improvements by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2815
* Fix SonarCloud: Sealed classes, deprecated API, ChatColor removal by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2816
* Fix SonarCloud: Replace deprecated EntityDamageByEntityEvent and LingeringPotion in tests by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2817
* fix: reduce BentoBox monster-class coupling from 24 to 20 (S1200) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2826
* Fix Sonar code quality issues: S5361, S3776 complexity by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2825
* Reduce cognitive complexity in TemplateReader by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2827
* Add JUnit5 tests for ClosestSafeSpotTeleport by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2828
* Add JUnit 5 tests for SQLDatabaseHandler by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2830
* Implement comprehensive BlueprintPasterTest suite by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2829
* Add JUnit 5 tests for IslandTeamInviteGUI by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2831
* Add JUnit5 tests for DefaultPasteUtil by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2833
* Add automatic update notifications on startup by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2834
* Fix force-shown integer value not showing correct number of rows by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2832
* 🔺 Fix binary-incompatible getMemberSet() return type and AddonClassLoader recursive update by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2836
* 🔺 Replace IslandGrid nested TreeMap with spatial hash by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2840
* Fix purge regions: nether detection, login check inversion, and scan report by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2841
* Version 3.11.2 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2791
## New Contributors
* @Copilot made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2792
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.11.1...3.11.2
release
BentoBox 3.11.1
3.11.126 дек. 2025 г.3,7 тыс.Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
This is a bug fix release.
## Compatibility
- ✔️ Paper Minecraft 1.21.5 - 1.21.11
- ✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* 🔡 Update PODZOL translation in zh-CN.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2786
* Changes to improve code per IntelliJ by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2787
* Release 3.11.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2788
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.11.0...3.11.1
release
BentoBox 3.11.0
3.11.016 дек. 2025 г.728Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
This release adds support for Paper 1.21.11 and fixes some bugs. There are no feature differences from the previous version.
## Compatibility
✔️ Paper Minecraft 1.21.5 - 1.21.11
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Mokito 5 redo by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2772
* Avoid blank nms blocks by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2778
* Fix bug with shift to using Bukkit API if distance isn't greater than by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2779
* Implements ability for Player Heads to use CMD by @BONNe in https://github.com/BentoBoxWorld/BentoBox/pull/2777
* Adds a bukkit to adventure conversion. Could be useful. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2782
* Mojang mapped by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2783
* Gradle conversion - compiles and tests by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2784
* Version 3.11.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2785
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.10.1...3.11.0
release
BentoBox 3.10.1
3.10.115 нояб. 2025 г.838Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, purpur
Что нового
## Compatibility
✔️ Minecraft 1.21.5 - 1.21.10
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Fix for #2769 portal memory leak by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2770
* Release 3.10.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2771
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.10.0...3.10.1
release
BentoBox 3.10.0
3.10.09 нояб. 2025 г.227Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, purpur
Что нового
## New In This Release
* Support for new [Stranger Realms](https://github.com/BentoBoxWorld/StrangerRealms) game mode - A scary new survival experience where the overworld is shadowed by a terrifying, inverted dimension called the Upside Down. Inspired by the TV Show.
* Updated Ukrainian locale
* Bug fixes
## Compatibility
✔️ Minecraft 1.21.5 - 1.21.10
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Add shelf block protection #545 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2757
* API: Set addon on login. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2759
* 🔡 The Ukrainian localization has been improved and updated by @GIGABAIT93 in https://github.com/BentoBoxWorld/BentoBox/pull/2758
* Better grid storage for arbitrary island positions. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2760
* Record islands becoming unowned by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2761
* More api by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2762
* Avoid trying to load files starting with ._ by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2763
* Check if the currently open panel is equal to the inventory that was … by @Rossterd in https://github.com/BentoBoxWorld/BentoBox/pull/2767
* Release 3.10.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2765
## New Contributors
* @GIGABAIT93 made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2758
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.9.2...3.10.0
release
BentoBox 3.9.2
3.9.229 окт. 2025 г.361Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper
Что нового
## New In This Release
* Adds more backward compatibility for servers before 1.21.10
## Compatibility
✔️ Minecraft 1.21.5 - 1.21.10
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* #2750 copper golem check by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2754
* Version 3.7.2 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2755
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.9.1...3.9.2
release
BentoBox 3.9.1
3.9.128 окт. 2025 г.66Minecraft: 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper
Что нового
## New In This Release
* Adds backward compatibility to 1.21.5+
* Fixes protection flag for Trial Spawners
## Compatibility
✔️ Minecraft 1.21.5 - 1.21.10
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Add backward compatibility to 3.9.0. #2750 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2751
* Fixes trial spawners working even with spawner flag disabled. by @BONNe in https://github.com/BentoBoxWorld/BentoBox/pull/2749
* Release 3.9.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2752
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.9.0...3.9.1
release
BentoBox 3.9.0
3.9.027 окт. 2025 г.72Minecraft: 1.21.10paper
Что нового
## New In This Release
* Adds protections for copper chests and golems
* API added for ExpiringSets
* API added to allow islands to be off grid coordinates
## Compatibility
✔️ Minecraft 1.21.10
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* API auto center fix option by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2745
* Add API to allow a Game Mode to bypass range checks by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2746
* Copper golem and copper chest protection by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2747
* Version 3.9.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2748
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.8.1...3.9.0
release
BentoBox 3.8.1
3.8.117 окт. 2025 г.1,7 тыс.Minecraft: 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper
Что нового
## New In This Release
* Bug fix - admin command to copy blocks for blueprint was throwing an error and not copying.
* Bug fix - added color codes to some of the setting flags where they were missing
## Compatibility
✔️ Minecraft 1.21.4 to 1.21.10
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. (Optional) Move or delete the English locale files so they are updated
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Fix for blueprint copying #2741 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2742
* 🔡 Minor changes for color codes in English locale.
* Release 3.8.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2743
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.8.0...3.8.1
release
BentoBox 3.8.0
3.8.013 окт. 2025 г.150Minecraft: 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper
Что нового
## New In This Release
* Added support from 1.21.10
## Compatibility
✔️ Minecraft 1.21.4 to 1.21.10
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Move or delete locale files
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* 1.21.10 compatibility by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2738
* Release 3.8.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2739
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.7.4...3.8.0
release
BentoBox 3.7.4
3.7.45 окт. 2025 г.174Minecraft: 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8paper
Что нового
## New In This Release
* Oraxen support (supports Level addon, which will also be updated)
* Bug fixes
## Compatibility
✔️ Minecraft 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Move or delete locale files
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Reworked deletion for purge by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2729
* Oraxen hook by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2731
* Add explicit get ID method by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2732
* Added block deletion of oraxen blocks by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2733
* Don't generate flags before addons loaded. by @stuffyerface in https://github.com/BentoBoxWorld/BentoBox/pull/2735
* Code improvements by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2734
* Java doc enhancements by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2736
* Version 3.7.4 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2730
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.7.3...3.7.4
release
BentoBox 3.7.3
3.7.326 авг. 2025 г.379Minecraft: 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8paper
Что нового
## New In This Release
This is a bug fix release:
* Some databases had "junk" deleted island data in them and the recent change related to the purge regions beta feature loaded them. These legacy island "stomped" on some real islands, which results in some player's "losing" their islands. The islands are still there but the old junk island was overwriting the island. This release reverts that change. As such, the purge regions beta feature may not work optimally. We plan to optimize it in a future release.
## Compatibility
✔️ Minecraft 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Move or delete locale files
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Minor changes to portal linking by @Rossterd in https://github.com/BentoBoxWorld/BentoBox/pull/2721
* Try to address issue with deleted status by @BONNe in https://github.com/BentoBoxWorld/BentoBox/pull/2724
* Fix: use the correct error message if the player is not the owner of the island by @Lazerstricks in https://github.com/BentoBoxWorld/BentoBox/pull/2723
* Fix: do not load deleted island to database. Some databases have junk islands.
* Release 3.7.3 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2725
## New Contributors
* @Rossterd made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2721
* @Lazerstricks made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2723
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.7.2...3.7.3
release
BentoBox 3.7.1
3.7.127 июл. 2025 г.431Minecraft: 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8paper, purpur
Что нового
## New In This Release
* Hungarian language fix
* Added code support for Boxed
* Improves purge region operation by deleting totally unused and old regions.
## Compatibility
✔️ Minecraft 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Move or delete locale files
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* 🔡 Update and fix hungarian file by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2712
* Release 3.7.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2713
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.7.0...3.7.1
release
BentoBox 3.7.0
3.7.019 июл. 2025 г.124Minecraft: 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8paper
Что нового
## New In This Release
This adds compatibility for Paper 1.21.8.
Adds a new beta admin command `purge regions` that deletes old islands by removing regions. This can also be used instead of having islands deleted. Set the BentoBox config.yml setting `keep-previous-island-on-reset: true` and then run purge every so often. The advantage of having the region file delete is that they will be regenerated completely when revisited. **This is a beta feature so only use if you have backups.** It has been tested. Region purging is very fast.
## Purge Logic
Here’s the logic used to determine **whether an island can be purged** :
### High-Level Flow
1. **User runs the purge command with a number of days.**
2. The plugin scans region files and finds those not modified in the last N days.
3. For each region, it finds all islands overlapping that region.
4. For each island, it checks if the island can be deleted (purged).
5. Only islands passing the deletion check are considered for purging.
### Detailed Purge Eligibility Logic
An island **cannot be deleted** (i.e., is protected from purge) if **any** of the following are true:
1. **Island is marked as purge protected**
2. **Island is a spawn island**
3. **Island is not owned**
4. **Island level is too high**
* If the "Level" addon is present, and the level is higher than BentoBox's level in config.yml is then the island is protected. default is is 10.
5. **Owner or any team member has logged in recently**
Islands That **Can** Be Deleted
* If **none** of the above protections apply, the island **can** be deleted.
* Exception: If the island is already marked as deleted it **can always be deleted** regardless of other checks.
**In short:** An island is eligible for purge if it is not protected, not spawn, is owned, is below the level threshold, and no member has logged in recently - unless it is already marked as deleted, in which case it can always be purged.
### What is deleted
* Region files (.mca)
* World player files in the world - this will mean that if they log in they will spawn in the main world
* Entity or POI files related to the region
* Island records in the BentoBox database
## Compatibility
✔️ Minecraft 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8
✔️ Java 21
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Move or delete locale files
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* 🔡 Update es.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2701
* Initial cooldown click approach by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2703
* Purge improvements by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2706
* 2636 purge improvements by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2705
* Update Mythic Mobs to 5.9.5 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2707
* Add 1.21.8 support by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2708
* 🔡 Updated translations to include purging command and other updates by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2709
* Version 3.7.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2702
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.6.0...3.7.0
release
BentoBox 3.6.0
3.6.02 июл. 2025 г.177Minecraft: 1.21.4, 1.21.5, 1.21.6, 1.21.7paper
Что нового
## New In This Release
This adds compatibility for Paper 1.21.7.
## Compatibility
✔️ Minecraft 1.21.4, 1.21.5, 1.21.6, 1.21.7
✔️ Java 21
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Update to 1.21.7 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2699
* Release 3.6.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2700
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.5.0...3.6.0
release
BentoBox 3.5.0
3.5.027 июн. 2025 г.109Minecraft: 1.21.4, 1.21.5, 1.21.6paper
Что нового
## New In This Release
This adds compatibility for Paper 1.21.6. Note that this version of the server may still be unstable.
## Compatibility
✔️ Minecraft 1.21.4, 1.21.5, 1.21.6. Earlier 1.21.x versions *may* work, but are not supported and do not have Blueprint or regeneration optimization.
✔️ Java 21
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* 1.21.6 update by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2696
* Release 3.5.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2697
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.4.1...3.5.0
release
BentoBox 3.4.1
3.4.121 июн. 2025 г.2,1 тыс.Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5paper
Что нового
## New In This Release
Bug fixes to improve backward compatibility with 1.21.4. See the What's Changed section.
## Compatibility
✔️ Minecraft 1.21.4 or 1.21.5. Earlier 1.21.x versions *may* work, but are not supported and do not have Blueprint or regeneration optimization.
✔️ Java 21
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Fixes Obsidian scooping in 1.21.4 and before by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2692
* Fix for console spam in 1.21.4 with glow berry right clicking - Use reflection for backward api compatibility #2690 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2693
* Version 3.4.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2694
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.4.0...3.4.1
release
BentoBox 3.4.0
3.4.08 июн. 2025 г.234Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5paper
Что нового
## New In This Release
This is mainly a bug fix and optimization release. See the What's Changed section.
## Compatibility
✔️ Minecraft 1.21.4 or 1.21.5. Earlier 1.21.x versions *may* work, but are not supported and do not have Blueprint or regeneration optimization.
✔️ Java 21
✔️ Multiverse 4 and 5
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* #2679 box gets reused even though it should not by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2680
* Delete temporary seed worlds on shutdown #2678 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2682
* Update colors to use new APIs by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2683
* Fix issues relating to #2422 by @stuffyerface in https://github.com/BentoBoxWorld/BentoBox/pull/2684
* Release 3.4.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2681
## New Contributors
* @stuffyerface made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2684
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.3.5...3.4.0
release
BentoBox 3.3.5
3.3.513 мая 2025 г.223Minecraft: 1.21.4, 1.21.5paper
Что нового
## New In This Release
* Rework of MultiverseCore hook - Boxed and other addons *should* work now even if MV is running. Big thanks to Ben the author.
* GitHub API rewrite - the old code had severe bitrot and needed rewriting. If you see errors, file a ticket and we'll try to refine. They are mostly not major and usually around rate limiting.
## Compatibility
✔️ Minecraft 1.21.4 or 1.21.5. Earlier 1.21.x versions *may* work, but are not supported and do not have Blueprint or regeneration optimization.
✔️ Java 21
✔️ Multiverse 4 and 5
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Return empty string instead of error by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2668
* Fix for #2671 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2673
* 🔺Revamp Multiverse hook using api by @benwoo1110 in https://github.com/BentoBoxWorld/BentoBox/pull/2672
* Release 3.3.5 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2669
## New Contributors
* @benwoo1110 made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2672
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.3.4...3.3.5
release
BentoBox 3.3.4
3.3.423 апр. 2025 г.233Minecraft: 1.21.4, 1.21.5paper
Что нового
## New In This Release
* Bug fix to enable FancyNPC's to work again in Blueprints. Old blueprints may not work and will need to be redone because the skin API changed
## Compatibility
✔️ Minecraft 1.21.4 or 1.21.5. Earlier 1.21.x versions *may* work, but are not supported and do not have Blueprint or regeneration optimization.
✔️ Java 21
⚠️ **Note: Multiverse is not compatible for Boxed, AcidIsland, Poseidon!**
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* 🔺Updated FancyNPC API by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2664
* Release 3.3.4 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2665
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.3.3...3.3.4
release
BentoBox 3.3.3
3.3.314 апр. 2025 г.131Minecraft: 1.21.4, 1.21.5paper
Что нового
## New In This Release
* Paper 1.21.5 support has been added
* Other features are same as 3.3.2.
## Compatibility
✔️ Minecraft 1.21.4 or 1.21.5. Earlier 1.21.x versions *may* work, but are not supported and do not have Blueprint or regeneration optimization.
✔️ Java 21
⚠️ **Note: Multiverse is not compatible for Boxed, AcidIsland, Poseidon!**
## Upgrading
0. Use MC 1.21.5 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* 1.21.5 update by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2661
* Release 3.3.3 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2662
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.3.2...3.3.3
release
BentoBox 3.3.2
3.3.214 апр. 2025 г.152Minecraft: 1.21.4, 1.21.5paper
Что нового
## New In This Release
* Protection for island settings reset by users - the TNT button will require a chat entry of "confirm" or the equivalent in the language of the player to reset all settings
* Loads of updates to locales to translate from English. Let us know if we made a mistake!
* Improvements for PAPI support - this release is recommended if you use PAPI
* Bug fixes
## Compatibility
✔️ Minecraft 1.21.4. For older versions, use BentoBox 2.7.0, or earlier. 1.21.5 works but has no optimization for blueprint pasting or island deletion.
✔️ Java 21
✔️ Addons will need to be updated to work on 1.21.3+
❌ Note that Multiverse is not compatible with the Boxed game mode addon
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. (Optional) Download the latest versions of all your addons and put them in the Addons folder
6. (Optional, but recommended) Move the old locale files so they can be regenerated
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Improve PlaceholderAPI implementation by @NoahvdAa in https://github.com/BentoBoxWorld/BentoBox/pull/2642
* Defensive code to try and avoid console errors by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2645
* Target v2 of Modrinth publish action by @zefir-git in https://github.com/BentoBoxWorld/BentoBox/pull/2646
* 🔡 Update cs.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2647
* 🔡 Update de.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2649
* 🔡 Update ja.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2648
* NPE due to reserved being null Fixes #2651 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2654
* 🔡 Update zh-CN.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2653
* 🔡 Update vi.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2652
* 🔡 Update es.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2655
* 🔡 Update fr.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2656
* 🔡 Update hr.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2657
* 🔡 Update id.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2658
* #2659 add a confirmation for settings reset by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2660
* Release 3.3.2 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2643
## New Contributors
* @NoahvdAa made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2642
* @zefir-git made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2646
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.3.1...3.3.2
release
BentoBox 3.3.1
3.3.126 мар. 2025 г.238Minecraft: 1.21.3, 1.21.4paper
Что нового
## New In This Release
* Bug fix for the creeper griefing flag (see below)
## Compatibility
✔️ Minecraft 1.21.4. For older versions, use BentoBox 2.7.0, or earlier. Not tested on 1.21.5 yet.
✔️ Java 21
✔️ Addons will need to be updated to work on 1.21.3+
❌ Note that Multiverse is not compatible with the Boxed game mode addon
## Upgrading
0. Use MC 1.21.4 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Fixes #2637 where griefing protection went into other worlds by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2638
* Version 3.3.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2639
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.3.0...3.3.1
release
BentoBox 3.2.5
3.2.56 мар. 2025 г.134Minecraft: 1.21.3, 1.21.4paper
Что нового
## New In This Release
* Added more support for ItemsAdder. Look out for the new Level addon that will be able to score IA blocks!
* Bug fixes
## Compatibility
✔️ Minecraft 1.21.3+. For older versions, use BentoBox 2.7.0, or earlier
✔️ Java 21
✔️ Addons will need to be updated to work on 1.21.3+
❌ Note that Multiverse is not compatible with the Boxed game mode addon
## Upgrading
0. Use MC 1.21.3 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
6. (Optional) remove / move old BentoBox/locales folder so new locales will be generated.
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Fix NewIsland call with a non-player User by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2627
* Fix to enable user command rank management by Ops by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2628
* Release 3.2.5 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2629
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.2.4...3.2.5
release
BentoBox 3.2.4
3.2.428 февр. 2025 г.89Minecraft: 1.21.3, 1.21.4paper
Что нового
## New In This Release
* Podzol generation from growing trees is disabled by default to prevent exploitation. New settings flag added to allow it if you wish.
* New placeholder: `%[gamemode]_island_rank%`
* Blueprint improvements:
* New option to ignore water blocks when copying blocks for a blueprint. Waterlogged blocks will stay waterlogged, but pure water blocks will be skipped. Good for Blueprints designed to be pasted underwater.
* Trial spawners, and their configuration are now saved in Blueprints
* ItemsAdder blocks and items are saved (beta) and pasted
* Blueprints can be set to "sink" to the bottom of the ocean, or until the bedrock block hits a block.
* Language flag banners have been updated and corrected to look much better!
* Bugs fixed
## Compatibility
✔️ Paper Minecraft 1.21.3+. For older versions, use BentoBox 2.6.0, or earlier
✔️ Java 21
✔️ Addons will need to be updated to work on 1.21.3+
❌ Note that Multiverse is not compatible with the Boxed game mode addon
## Upgrading
0. Use MC 1.21.3 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
6. (Optional) remove / move old BentoBox/locales folder so new locales will be generated.
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Remove old NMS support and add setBlock raw setter by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2590
* #2585 new placeholders by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2592
* Prevent NPE if player has no home island by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2597
* Add option to ignore water when saving blueprint by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2603
* Add PODZOL flag to prevent podzol generation with big trees by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2606
* 🔡 Flags for locales by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2607
* Add support for Trial spawner to blueprint by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2609
* Add prefixes to enable easy substitution for Game Modes by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2613
* 🔺Remove dynmap by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2612 - the API changed and wasn't working anymore. We have removed support for now. If you want it, file a request.
* Added GSON serialization for Tags by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2614
* Do not use color codes in commands #2616 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2618
* Add sinking option for blueprints. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2620
* Added ItemsAdder support for CustomBlocks to Blueprints by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2622
* #2603 items adder support (for blueprints) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2623
* Version 3.2.4 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2619
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.2.3...3.2.4
release
BentoBox 3.2.3
3.2.31 янв. 2025 г.374Minecraft: 1.21.3, 1.21.4paper, spigot
Что нового
This add Romanian translations. Also includes a bug fix release to address a critical crash issue when playing Boxed (due to chunk loading). The feature set is the the same as 3.2.0
## Compatibility
- ✔️ Minecraft 1.21.3+. For older versions, use BentoBox 2.6.0, or earlier
- ✔️ Java 21
- ✔️ Addons will need to be updated to work on 1.21.3+
- ❌ Note that Multiverse is not compatible with the Boxed game mode addon
## Upgrading
0. Use MC 1.21.3 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Ignores and changes because or change to PaperAPI by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2584
* Paper fixes by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2586
* 🔡 Romanian translation by @gitlocalize-app in https://github.com/BentoBoxWorld/BentoBox/pull/2587
* Release 3.2.3 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2588
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.2.1...3.2.3
release
BentoBox 3.2.1
3.2.131 дек. 2024 г.213Minecraft: 1.21.3, 1.21.4paper, purpur, spigot
Что нового
This release adds some cool new features, and fixes an hot issue with Paper removing support for PaperLib. Note - this will be the last version that supports native Spigot. We are going to shift to support only Paper from the next version.
## New features
- Support for ZNPCsPlus in Blueprints - you will need the latest version (2.0.0 or later) for this to work
- FancyNPCs is already supported but now more supported
- **Experimental Support** for vanilla block, item, and text holograms in Blueprints. You can make these using the `/summon` command or command blocks. Sites like https://mcstacker.net are useful. When pasted, players can destroy the text and item holograms by right licking on them. The block holograms currently do not break.
## Compatibility
- ✔️ Minecraft 1.21.3+. For older versions, use BentoBox 2.6.0, or earlier
- ✔️ Java 21
- ✔️ Addons will need to be updated to the latest to work on 1.21.3+
- ❌ Note: Multiverse is **not** compatible with the Boxed game mode addon
## Upgrading
0. Use MC 1.21.3 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Fixes defaults for pasting entities. Gravity default is true not false by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2582
* Release 3.2.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2583
* Bug fix - FancyNPCs were not deleted when an island was deleted or reset.
* 2569 znpc plus hook by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2575
* 2569 general display entity support by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2576
* Update to Java 21 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2578
* Abstract out paper lib by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2580 credit to @gochi9 for help here
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/3.2.0...3.2.1
release
BentoBox 3.0.1
3.0.117 дек. 2024 г.189Minecraft: 1.21.3, 1.21.4paper, spigot
Что нового
This is a release for 1.21.3 and beyond.
## Compatibility
- ✔️ Minecraft 1.21.3 only. For older versions, use BentoBox 2.6.0, or earlier
- ✔️ Java 21
- ✔️ Addons will need to be updated to work on 1.21.3
- ❌ Note that Multiverse is not compatible with the Boxed game mode addon
## Downloading
It's a good idea to use our download site where you can pick and choose add-ons: https://download.bentobox.world.
## Upgrading
0. Use MC 1.21.3 or later
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
7. Restart the server
8. You should be good to go!
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Fix parrot interaction condition by @Dreeam-qwq in https://github.com/BentoBoxWorld/BentoBox/pull/2543
*🔺 Update to 1.21.3 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2548
* Use custom server to handle new enums by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2550
* 🔡 Improve German locale by @Archerymaister in https://github.com/BentoBoxWorld/BentoBox/pull/2549
* Adds island history for team members adding and removing by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2553
* 2.7.1 short term stable by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2552
* 3.0.0 update by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2555
* Add the protection flag for eggHit. by @Noogear in https://github.com/BentoBoxWorld/BentoBox/pull/2557
* Fix for #2546. Default unnamed home was being counted in the number by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2561
* Admin kick to kick from all teams by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2559
* Release 3.0.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2564
## New Contributors
* @Dreeam-qwq made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2543
* @Archerymaister made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2549
* @Noogear made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2557
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/2.7.0...3.0.1
release
BentoBox 2.4.0
2.4.01 июл. 2024 г.4,1 тыс.Minecraft: 1.20.1, 1.20.4, 1.20.6, 1.21paper, spigot
Что нового
This release is for the latest versions of Minecraft, and also brings in experimental support for Multipaper, a fork of Paper that enables multiple servers to run the same worlds. If you plan on using Multipaper, join our Discord server and let us know because addons will also need to be adjusted and it'll be good to know which ones to do.
Other new features:
* BentoBox no longer loads all islands into RAM so for servers with a lot of islands, the memory footprint should be lower. As players join, their islands will be cached until the next server reboot, so plan to do that every so often.
* Purging of islands now includes team islands - it didn't before.
* NPC's can now hit players and won't be prevented by PVP rules.
* Updates to Chinese language files.
* Added `%[gamemode]_visited_island_rank%` placeholder.
* New flag - handle tamed animals by @TreemanKing
## Compatibility
✔️ Minecraft 1.21, 1.20.6, earlier versions maybe.
✔️ Java 17, but recommend to run on Java 21
✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
❌ Note that Multiverse is not compatible with the Boxed game mode addon
## Downloading
It's a good idea to use our download site where you can pick and choose add-ons: https://download.bentobox.world.
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
6. (Optional) Move or delete the `BentoBox/locales` folder to have the plugin save updated language files.
7. Restart the server
8. You should be good to go!
## What's Changed
* Write the Blueprint bundle meta data to admin info by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2349
* 1.20.6 compatibility by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2348
* Multipaper by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2343
* Add a hook for Multipaper by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2354
* Fixes #2352 obsidian scooping NPE by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2358
* Implement new API for ItemsAdder item deletion by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2353
* Remove an unused Map in cache. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2361
* Purges based on team members all being offline for too long by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2362
* 2356 better deletion by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2364
* Admin command updates by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2367
* Allow NPC's to hit players by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2368
* Reduces storage of Island objects in the cache #2360 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2369
* Uses Bukkit version method instead of class names by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2370
* Fixes breaking rooted dirt exploit by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2371
* Avoids loading islands into cache unless they are needed. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2373
* Fixes creeper ignation by visitors by @BONNe in https://github.com/BentoBoxWorld/BentoBox/pull/2375
* Fixes #2378 where an unknown UUID was yielding null instead of "" by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2379
* Fixes #2377, was not accounting for unknown UUIDs by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2380
* Fixes a bunch of items related to making the cache smaller by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2383
* Update zh-CN.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2386
* Update en-US.yml by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2387
* Protect pumpkins from being sheared by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2388
* Sends messages only once to all players on the island by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2389
* Adds more options around getting islands and caching by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2394
* Added %[gamemode]_visited_island_rank% #2390 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2395
* Corrected translation errors by @huguyt in https://github.com/BentoBoxWorld/BentoBox/pull/2391
* Shift to using ConcurrentHashMap by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2397
* Added API methods for direct database loads and saves #2396 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2398
* Add command to teleport users. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2399
* Fix for #2402 player record was deleted on quit by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2403
* Support nms pasting by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2406
* Rework tests to not break so much with constant definitions by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2407
* Better migration of databases relates to #2404 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2411
* feat: new flag - handle tamed animals by @TreemanKing in https://github.com/BentoBoxWorld/BentoBox/pull/2412
* Release 2.4.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2414
## New Contributors
* @huguyt made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2391
* @TreemanKing made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2412
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/2.3.0...2.4.0
release
BentoBox 2.3.0
2.3.015 апр. 2024 г.714Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4paper, purpur, spigot
Что нового
This release fixes a major bug where mobs were not being pasted from blueprints (MythicMobs were, but hey, not normal mobs!) and also adds some new features:
* Team members can now have multiple islands too - it's a setting in BentoBox config.yml if you wish to enable it.
* Blueprints can now be given a max-usage setting. This is only enabled when players are allowed to make multiple island. So, for example, it's possible to limit players to only one of each type of island. There is also an option to hide any island blueprints if they have been used up. Don't forget that permissions can also be used to hide or show island blueprint options.
## Compatibility
- ✔️ Minecraft 1.20.x
- ✔️ Java 17
- ✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
## Downloading
It's a good idea to use our download site where you can pick and choose add-ons: https://download.bentobox.world.
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
6. (Optional) Move or delete the `BentoBox/locales` folder to have the plugin save updated language files.
7. Restart the server
8. You should be good to go!
## What's Changed
* Fix #2320. Enables hiding of setting flags by Ops when in another world by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2327
* Sort player's islands by age so they are always in the same order. This makes the list of islands with a number by them always consistent - by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2331
* Adds support for multi islands to the admin range command by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2332
* Add feature to limit blueprint availability. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2336
* Remove restrictions on having multiple islands for team members. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2335
* Added placeholders for island names and member lists #2329 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2337
* Limit blueprint pasting to world y coords. Addresses #2334 (commit: 1bce4ec)
* Remove player from island, not all islands when kicked. (commit: e7055c6)
* Make sure it's the user's island that the target is being kicked from. (commit: c86eb6a)
* Fix bug with MythicMobs changes #2340 (commit: ffb955b)
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/2.2.0...2.3.0
release
BentoBox 2.2.0
2.2.016 мар. 2024 г.234Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4paper, spigot
Что нового
This release adds support for MythicMobs to be included in island blueprints. It also fixes bugs and adds features with a lot of improvements around Teams and team management:
- All the team will be shown in the GUI, along with Trusted and Coop members.
- When kicking players through the GUI, you no long have to perform the action twice to confirm.
- Admin commands to manage teams have been rewritten to be multi-island aware. Disbanding teams, Setting the owner, etc. now work much better. Team fix command has been retired.
- An exploit was fixed where non-island members could be made members without them accepting invites.
### Other changes:
- The maximum number of homes a player can have is now applied per island.
- If players prevented use of crafting tables, then visitors were not able to access their own inventory (because it has a tiny crafting part to it)

## Compatibility
✔️ Minecraft 1.20.x
✔️ Java 17
✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
## Downloading
It's a good idea to use our download site where you can pick and choose add-ons: https://download.bentobox.world.
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
6. (Optional) Move or delete the `BentoBox/locales` folder to have the plugin save updated language files.
7. Restart the server
8. You should be good to go!
## What's Changed
* Fix for Island team kick requires confirmation when using GUI #2311 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2312
* #2309 admin setowner by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2314
* Crafting protection protects guests from using their inventory #2313 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2315
* Mythic mobs support in Blueprints by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2317
* Fixes bug where non-members could be made island owners. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2318
* Uses path normalization to prevent directory traversal attacks. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2319
* Allow the maxhomes to apply per island. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2321
* Fix promote and demote #2322 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2323
* Team gui rewrite by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2324
* Release 2.2.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2325
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/2.1.1...2.2.0
release
BentoBox 2.1.1
2.1.12 мар. 2024 г.233Minecraft: 1.20.1, 1.20.2, 1.20.3, 1.20.4spigot
Что нового
This is a hot fix release to fix a bug with accepting team invites using the team GUI.
## Compatibility
- ✔️ Minecraft 1.20.x
- ✔️ Java 17
- ✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
## Downloading
It's a good idea to use our download site where you can pick and choose add-ons: https://download.bentobox.world.
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
4. Replace the BentoBox jar with this one
5. Download the latest versions of all your addons and put them in the Addons folder
6. (Optional) Move or delete the `BentoBox/locales` folder to have the plugin save updated language files.
7. Restart the server
8. You should be good to go!
## What's Changed
* Release 2.1.1 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2308
* Fix for team invite accept NPE #2310
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/2.1.0...2.1.1
release
BentoBox 2.1.0
2.1.026 февр. 2024 г.219Minecraft: 1.20.1, 1.20.2, 1.20.3, 1.20.4paper, spigot
Что нового
# Compatibility
- ✔️ Minecraft 1.20.x
- ✔️ Java 17
- ✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
# Downloading
Use this file, or go to our download site where you can pick and choose add-ons: https://download.bentobox.world.
# Upgrading
1. As always, take backups just in case. (Make a copy of everything!)
1. Stop the server
1. Replace the BentoBox jar with this one
1. Download the latest versions of all your addons and put them in the Addons folder
1. (Optional) Move or delete the BentoBox/locales folder to have the plugin save updated language files.
1. Restart the server
1. You should be good to go!
# What's Changed
- New placeholder to provide counts of team members by @tastybento in #2300
- Adds multi-island support for the Admin Register and Unregister commands by @tastybento in #2302
- Fix for other admin commands to avoid removing players from more than one island when used. Also removed the Admin team fix command because it was not multi-island aware and could cause issues. (commit: 0a9da71)
- Bukkit paste for Admin Blueprint pasting and if the player is near the island to be pasted by @tastybento in #2304
- Better disbanding of teams via admin command by @tastybento in #2306
- Change respawn point to the default home on the island. #2305 by @tastybento in #2307
- Temporarily removed support for the deletion of ItemsAdder CustomBlocks because it was causing lag when deleting. #2297 (commit: 01f51f4)
- Version 2.1.0 by @tastybento in #2291
## API:
- Remove deprecated methods from IslandsManager and IslandCache (commit: 631a155)
release
BentoBox 2.0.0
2.0.04 февр. 2024 г.276Minecraft: 1.20.4paper, spigot
Что нового
This is a major release with big changes to the plugin! The top new feature is that players can now have more than one island in a world!

Players can create additional islands by running the create command, for example `/island create`. To teleport to different islands, they can use the `island go` command. If the island has a name, then they can use that, otherwise BentoBox will randomly assign a number to the island, e.g., "BoxManager's island 2".
By default players have only have one island, but you can enable more in the BentoBox `config.yml`, for example:
```
island:
# The default number of concurrent islands a player may have.
# This may be overridden by individual game mode config settings.
concurrent-islands: 10
Players can also be given the permission [gamemode].island.number.[number] where [gamemode] is the name of the game mode being played, and [number] is how many islands the user is allowed, e.g., bskyblock.island.number.10.
```
Game modes may in the future allow island number setting directly in their configs, but for now it's mostly global or via perms.
## Other changes:
- New Team Management GUI - use the teams command to view and manage your teams, invites, etc.
- Loads of language translation updates
- Customizable GUI panels:
- Team Panel
- Team Invite Panel
- New Island Panel
- Language Panel
- You can find them in plugins/BentoBox/panels. The files have comments in them.
# Compatibility
- ✔️ Minecraft 1.20.4
- ✔️ Java 17
- ✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
# Downloading
It's a good idea to use our download site where you can pick and choose add-ons: [Download Site for Packs](https://download.bentobox.world/).
# Upgrading
1. As always, take backups just in case. (Make a copy of everything!)
2. Stop the server
3. Replace the BentoBox jar with this one
4. Download the latest versions of all your addons and put them in the Addons folder
5. (Optional) Move or delete the BentoBox/locales folder to have the plugin save updated language files.
6. Restart the server
7. You should be good to go!
# Changelog
## Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
- ⚙️ Adds a config section in BentoBox to run commands when it is loaded by @tastybento in #2167
- Fixes a bug with incorrectly indexed pages +1 by @BONNe in #2178
- 🔡 Update ru.yml by @tastybento in #2181
- 🔡 Few RU translations by @gitlocalize-app in #2182
- 🔡 Japanese update by @gitlocalize-app in #2183
- 🔡 Indonesian translation by @gitlocalize-app in #2184
- 2 0 0 multi island by @tastybento in #2185
- Add checking for enchantment table inventory by @tastybento in #2191
- ⚙️ Enables permissions to set how many islands a play can create. by @tastybento in #2201
- 🔡 Hungarian translation by @gitlocalize-app in #2205
- 🔡 Chinese translation by @gitlocalize-app in #2206
- 🔡 Japanese translation by @gitlocalize-app in #2207
- 🔡 Czech translation by @gitlocalize-app in #2208
- 🔡 Portuguese translation by @gitlocalize-app in #2209
- 🔡 German Translation WIP by @gitlocalize-app in #2210
- 🔡 French translation WIP by @gitlocalize-app in #2211
- 🔡 Croatian translation WIP by @gitlocalize-app in #2212
- Remove the deprecated classes for 2.0 by @tastybento in #2216
- This changes the loading to not be on STARTUP by @tastybento in #2214
- Fixes a bug that removed old owner from island by @BONNe in #2218
- Fixes a bug with EntityTeleportListener by @BONNe in #2222
- Rank Management by @tastybento in #2220
- Multi island api update by @tastybento in #2224
- Fixes an issue with entity teleportation if nether/end worlds are disabled by @BONNe in #2227
- 🔡 Better French, maybe... by @tastybento in #2228
- Switch to Spigot's PlayerProfile on HeadGetter by @HSGamer in #2231
- Separators, AddonClassLoader fixes and uni tests fixes by @Baterka in #2233
- Adds a method that can return a different default value than 0 by @tastybento in #2234
- 🔡 Add Ukrainian locale by @gitlocalize-app in #2236
- 🔡 Add Ukrainian locale by @gitlocalize-app in #2235
- Fixes end portal finding issue when entering from side by @BONNe in #2238
- No tabs by @tastybento in #2243
- Improves obsidian platform generation by @BONNe in #2246
- Delete slimefun chunks/blocks when island is deleted. by @tastybento in #2247
- Adds an ItemAdder hook to delete any blocks when island is deleted. by @tastybento in #2250
- Material Type adapter by @tastybento in #2253
- ⚙️ Customizable Language Selection Panel by @BONNe in #2254
- ⚙️ Customizable Island Creation Panel by @BONNe in #2255
- Fixes issue with file exporting in Windows system. by @BONNe in #2256
- Fixes ItemParser. by @BONNe in #2257
- Fixes warning about already existing file saving. by @BONNe in #2260
- Add island object to Panel for context. by @tastybento in #2263
- Add minor optimizations for chunk copying by @rchomczyk in #2261
- Team gui by @tastybento in #2251
- Faster teleports by @tastybento in #2267
- Enable template to determine what is shown/clickable. by @tastybento in #2269
- World context settings by @tastybento in #2271
- Use a different method to grab the DataObject classes. by @tastybento in #2277
- Fixes #2274 hanging signs protection by @tastybento in #2278
- Fix for #2279 on-island placeholder for nether and end by @tastybento in #2280
- Fix for #2281 by @tastybento in #2282
- Center default home by @tastybento in #2287
- Fixes EXP reset for players onJoin and onLeave by @BONNe in #2286
- Release 2.0.0 by @tastybento in #2204
## New Contributors
- @Baterka made their first contribution in #2233
- @rchomczyk made their first contribution in #2261
release
BentoBox 1.24.1
1.24.16 авг. 2023 г.560Minecraft: 1.20.1paper, spigot
Что нового
This is a bug fix release. The main fix is for an exploit where players could cause projectile damage on an adjacent island if it was allowed on the island they were in. Now damage checks are done on where the damage occurs and not where the shooter is.
## Compatibility
✔️ Minecraft 1.20.1
✔️ Java 17
✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
## Downloading
It's a good idea to use our download site where you can pick and choose add-ons: https://download.bentobox.world.
## Upgrading
1. **As always, take backups just in case.** (Make a copy of everything!)
2. Stop the server
3. Replace the BentoBox jar with this one
4. Download the latest versions of all your addons and put them in the Addons folder
5. Restart the server
6. You should be good to go!
## What's Changed
* Exploit fix - Judge location of damage by location of entity not user (commit: 170c31f)
* Various code refactoring to reduce complexity, improve maintenance
* Improve or added automated tests for compilation
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/1.24.0...1.24.1
# Notes from 1.24.0
## New in this release
Support for Minecraft 1.20.1. This includes adding protection for:
- Chiseled Bookshelves - adding or removing books
- Brushing of suspicious sand and gravel
- Calibrated sculk sensors are protected as well as sculls sensors
- Editing of signs, front and back. If sign is waxed then they are not editable by anyone.
- Boats and rafts
- Other new materials in 1.20.x
Other changes:
- Bug fix: Multiverse supported again. It stopped working after a server reboot causing super-flat.
- BentoBox `bbox perms` command added to show effective perms as registered by addons. This is only shown in the console.
- API: Adjust priority of PlayerInteraction event listener to NORMAL
- API: Add API to enable gamemodes to register ownership over additional worlds
- API: New IslandInfoEvent that gets called when a player runs the info command. Enables addons to show additional info.
- API: New IslandNameEvent that gets called when a player names or renames their island.
## Compatibility
✔️ Minecraft 1.20.1
✔️ Java 17
✔️ Addons may need to be updated to their latest version to work with this version of BentoBox
## What's Changed
* Add new IslandNameEvent and test class for command by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2133
* Add API to enable gamemodes to register ownership over additional worlds by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2143
* Banned command logic fix by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2144
* Bbox admin perms command by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2141
* Update GitHub actions to NodeJS 16 by @ThexXTURBOXx in https://github.com/BentoBoxWorld/BentoBox/pull/2139
* If sign is waxed (not editable) then no check is required by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2146
* Protect against brushing by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2147
* Adds calibrated sculk sensor to protection by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2148
* Unregisters worlds with MV on shutdown. by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2150
* Put island deletion under one class manager by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2153
* Version 1.24.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2152
## New Contributors
* @ThexXTURBOXx made their first contribution in https://github.com/BentoBoxWorld/BentoBox/pull/2139
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/1.23.2...1.24.0
release
BentoBox 1.23.1
1.23.113 мая 2023 г.968Minecraft: 1.19.4paper, spigot
Что нового
## New in this release
🔺With 1.19.4 comes changes to the underlying API that affects how BentoBox can load Addons that forced a number of changes to BentoBox. Now, more than ever, Addons are like Plugins and will be visible in the `/plugins` command. Therefore, **make sure you update your Addons to the latest version compatible with 1.23.0 of BentoBox** to ensure they load and work correctly.
Other changes:
- New flags for island protection HARVEST and CROP_PLANTING - enable players to allow visitors (or coop/trusted) to do farming
- Support for 1.19.4
- Adds API to enable translations to be set and specific API for flags #2109
- Uses NMS to paste islands
- New flags SHULKER_TELEPORT and ENDERMAN_TELEPORT that can prevent a shulker or enderman from teleporting on an island setting basis.
- Locale files can now use the placeholder [display_name] instead of [name] to show the display (colorful) name of a player
- Adds API to enable a GameModeAddon to declare whether it will use the legacy chunk deletion approach or the new one. The legacy is enough for void worlds. #2096 It also means the backup worlds will not be generated.
- Enables banned commands to be more than one word. #2092
## Compatibility
✔️ Minecraft 1.18.x to 1.19.4, but optimized with NMS for 1.19.4
✔️ Java 17
✔️ Adonis should be updated to their latest version to work with this version of BentoBox
## Downloading
It's a good idea to use our download site where you can pick and choose add-ons: https://download.bentobox.world.
## Upgrading
1. As always, take backups just in case. (Make a copy of everything!)
2. Stop the server
3. Replace the BentoBox jar with this one
4. Download the latest versions of all your addons and put them in the Addons folder
5. Restart the server
6. You should be good to go!
## Changelog
### Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
## What's Changed
* Adds API to enable a GameModeAddon by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2096
* Javadoc and other cleanup from code analysis by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2099
* 🔡Relates to #2104. Adds user.displayName() as a placeholder option by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2108
* Update to 1.19.3 for NMS by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2107
* Implements NMS for pasting and supports older versions of server by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2110
* 🔡Adds API to enable translations to be set and specific API for flags by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2109
* Disable chunk generation on rengeneration by @BONNe in https://github.com/BentoBoxWorld/BentoBox/pull/2114
* Version 1.23.0 by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2118
* 1.23.1 release - hot fix by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2120
**Full Changelog**: https://github.com/BentoBoxWorld/BentoBox/compare/1.23.0...1.23.1