
BentoBox
SkyBlock, OneBlock, Boxed, SkyGrid, AcidIsland, CaveBlock, Poseidon, StrangerRealms - and more! These are just some of the island-based game modes that BentoBox powers. From the author of the original ASkyBlock.
3.13.0
release4 апреля 2026 г.BentoBox Changelog
[3.13.0] — 2026-04-04
New Release Highlights
- 🔺 Paper 26.1.1 (Minecraft 26.1.1) support — BentoBox now recognises Paper's new year-based versioning scheme (
26.x.x) and no longer shows a compatibility warning. The version parser has been updated to handle the newgetBukkitVersion()format. BentoBox remains fully compatible with Paper 1.21.5 – 1.21.11 servers. - ⚙️ 🔡 PAUSE_MOB_GROWTH protection flag — Minecraft 26.1.1 introduces golden dandelions that can pause or unpause baby mob growth. A new island protection flag lets island owners control who can use this feature. Defaults to members only. Supports both main-hand and off-hand interactions.
- 🔡 MiniMessage locale migration — All locale files have been migrated from legacy
§/&colour codes to Paper's MiniMessage format (<green>,<bold>, etc.), with full backward compatibility for existing custom translations. The format of MiniMessage messages can be found here.
Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.11
✔️ Paper Minecraft 26.1.1
✔️ Java 21+
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Restart the server.
- You should be good to go!
🔡 Locale migration note: All 23 locale files have been migrated to MiniMessage formatting. If you have customised locale files, BentoBox will still handle legacy
§/&codes, but regenerating your locale files is recommended to take advantage of MiniMessage features.
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
New Features
🔺 Paper 26.1.1 Support
[PR #2897]
Paper has adopted a new year-based versioning scheme starting in 2026 (e.g., 26.1.1 instead of 1.21.12). BentoBox's ServerCompatibility version parser has been updated to handle the new getBukkitVersion() format (26.1.1.build.14-alpha), which includes a .build.N suffix that the old parser couldn't strip. V26_1_1 has been added to the supported versions enum as COMPATIBLE.
BentoBox continues to compile against the Paper 1.21.11 API and remains compatible with all currently supported 1.21.x versions.
⚙️ 🔡 PAUSE_MOB_GROWTH Protection Flag
Minecraft 26.1.1 added the ability to use a golden dandelion on a baby mob to pause or resume its growth. A new PAUSE_MOB_GROWTH island protection flag controls who can do this. The flag defaults to members and above; visitors are blocked.
The listener checks PlayerInteractEntityEvent for a player holding GOLDEN_DANDELION in either hand targeting a baby Ageable mob. Uses Enums.getIfPresent for the flag icon material so BentoBox remains backward compatible with 1.21.x servers where the item doesn't exist.
Translations added to all 23 locale files.
🔡 MiniMessage Locale Migration
[PR #2894] See: https://docs.papermc.io/adventure/minimessage/format/
All locale files have been migrated from legacy §/& colour codes and ChatColor API usage to Paper's native MiniMessage format. This enables richer formatting (gradients, hover text, click events) and aligns with Paper's direction of deprecating legacy formatting.
Backward compatibility is maintained: existing custom locale files using legacy codes will continue to work. Multiple follow-up fixes ensured edge cases were handled correctly:
- Mixed MiniMessage/legacy content no longer shows raw tags
- Multi-line translations preserve newlines correctly in panel lore
- Flag panel rank colours render correctly
- Conversation prompts display properly
- Rank display maintains backward compatibility with legacy locale files
Bug Fixes
Fix ItemStack quantity > 99 crash during serialization
[PR #2895]
Fixed a crash when serialising an ItemStack with a quantity greater than 99. The quantity is now clamped to a valid range before serialization.
Deduplicate lock/ban notification messages
[PR #2892]
Fixed an issue where players would receive repeated lock/ban notification messages when standing at an island boundary, causing chat spam.
Fix hex color codes breaking subsequent legacy color codes
[PR #2893]
Fixed a bug where hex colour codes (e.g., &#FF0000) would corrupt subsequent legacy & colour codes in the same string.
What's Changed
- Fix spam messages on blocked island by deduplicating notifications in LockAndBanListener by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2892
- Fix hex color codes breaking subsequent legacy color codes by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2893
- 🔡 Migrate locale formatting from legacy & codes to MiniMessage by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2894
- Fix ItemStack quantity > 99 crash during serialization by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2895
- 🔺 Add Paper 26.1.1 support by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2897
- ⚙️ 🔡 Add PAUSE_MOB_GROWTH protection flag by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2898
- Enhance PauseMobGrowthListener to support off-hand interactions by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2900
Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.12.0...3.13.0
BentoBox 3.12.0
release1 апреля 2026 г.BentoBox Changelog
[3.12.0] — 2026-03-28
New Release Highlights
- 🗺️ ⚙️ Web-map integrations — BentoBox now ships with built-in BlueMap and Dynmap hooks that display island markers and area overlays on your web map automatically. A public Map API lets addon authors target any web-map plugin.
- ⚙️ 🔡 SPAWN_PROTECTION world flag — Prevents players from dying to the void at spawn. Configurable per game-mode via the world settings panel.
- ⚙️ 🔡 WIND_CHARGE protection flag — Controls whether visitors can fire wind charges on islands. Defaults to blocked for visitors.
- ⚙️ 🔡 Expel fallback command — A new
expelCommandconfig key (default:spawn) specifies the command run when an expelled player has no island or spawn point to fall back to. - ⚙️ 🔡 Blueprint paste commands — Blueprint bundles can define a list of commands that run when the blueprint is pasted, enabling automation on island creation.
- 🔡 Blueprint GUI pagination — The blueprint management panel now paginates so large blueprint libraries are no longer cramped onto a single screen.
- ⚙️ 🔡 Admin max team-size command — A new
/bbox admin setmaxteamsize <player> <size>command lets you override the maximum team size on a per-island basis without editing config files. - 🔡 Clickable home list — The
/is homeslist is now clickable; selecting a home name in chat runs the go-home command automatically. - ⚙️ 🔡 Force-field fling — Players are now flung away from island force-fields when they walk into them, rather than just being teleported (improves feel on flying game modes).
- ⚙️ Obsidian-scooping abuse fix — Two new config knobs (
obsidianScoopingCooldownandobsidianScoopingRadius) prevent rapid lava/obsidian duplication exploits.
Compatibility
✔️ Paper Minecraft 1.21.5 – 1.21.1
✔️ Java 21
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the BentoBox jar with this one.
- Restart the server.
- You should be good to go!
⚙️ Config migration note: Three new keys are added to
config.yml(expelCommand,obsidianScoopingRadius,obsidianScoopingCooldown). BentoBox will add them automatically on first start.
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
New Features
⚙️ BlueMap & Dynmap Web-Map Integration
[PR #2861] [PR #2883] [PR #2884] [PR #2885]
BentoBox now ships with hooks for BlueMap and Dynmap. When either plugin is installed, island markers and (for BlueMap) coloured area overlays are added to the live web map automatically, without any configuration required.
A new generic Map API (world.bentobox.bentobox.api.map) lets addon authors register their own web-map implementations, so any mapping plugin can be supported in the future.
Additional Map API polish after initial merge:
- Map hooks now register before addons enable, so addons can create markers during
onEnable(). Island population is deferred toBentoBoxReadyEventwhen islands are fully loaded. addPointMarker()now accepts aniconNameparameter; Dynmap maps this to its icon registry (with fallback to"default") and all 85 built-in Dynmap icon names are documented inMapManagerJavadoc.- Dynmap point marker labels support HTML markup (e.g. coloured owner names) via
isMarkupLabel=true.
⚙️ 🔡 SPAWN_PROTECTION World Setting Flag
[PR #2865]
A new SPAWN_PROTECTION world setting flag prevents players at spawn from falling into the void. When enabled, the spawn area is treated as protected ground and void-death is suppressed. Useful for game modes where the spawn platform is exposed.
⚙️ 🔡 WIND_CHARGE Protection Flag
[PR #2855]
A new WIND_CHARGE island protection flag controls who can use wind charge items on an island. By default visitors are blocked, preventing griefing through knockback.
⚙️ 🔡 Expel Fallback Command
[PR #2846]
A new expelCommand setting in config.yml (default: spawn) specifies the console command run when an expelled player has no home island and no known spawn point. Previously such players would be stuck.
⚙️ Blueprint Paste Commands
[PR #2852]
Blueprint bundles now support an optional commands list. Each command is run (as the server console) when the bundle's blueprint is pasted, making it easy to trigger automation or economy actions on island creation.
🔡 Blueprint GUI Pagination
[PR #2867]
The blueprint management GUI now paginates. Servers with large numbers of blueprints will see next/previous page navigation buttons instead of a single overflowing panel.
⚙️ 🔡 Admin Max Team-Size Command
A new /bbox admin setmaxteamsize <player> <size> command lets server admins override the maximum team size for a specific island at runtime, without touching config files.
🔡 Clickable Home List in Chat
[PR #2879]
The /is homes listing in chat is now clickable. Clicking a home name runs the go-home command for that home automatically, saving players from typing.
🔡 Force-Field Fling
Players who walk into an island force-field (locked island boundary) are now physically flung back rather than teleported, giving a more natural feel, especially on flying game modes.
🔡 Bypass Lock Notification
[PR #2869]
Admins and players with the bypass permission now receive a notification message when they enter a locked island, so it is clear that the lock has been overridden.
Geo-Limit Projectiles
[PR #2863]
Projectiles (arrows, tridents, etc.) are now included in the geo-limit settings panel, giving island owners granular control over which projectile types visitors are allowed to fire.
Paginated Help Command
[PR #2859]
/is help now supports a page number argument (/is help 2) so large command lists do not flood chat.
/island lock Command
[PR #2858]
A new /island lock shortcut command lets island owners toggle the island lock without opening the settings panel.
Bug Fixes
Lava Bucket / Obsidian Duplication
[PR #2842] [PR #2856] [PR #2860]
Fixed an exploit where players could rapidly scoop buckets of lava from obsidian to duplicate it. A per-player cooldown (obsidianScoopingCooldown, default: 1 minute) and a proximity radius check (obsidianScoopingRadius, default: 5 blocks) now prevent abuse. Both values are configurable in config.yml.
Player XP Not Resetting
[PR #2866]
Fixed a bug where player XP was not being reset when joining a team or creating a new island via the no-teleport code path.
Sugar Cane, Cocoa Beans & Nether Wart Protection Flags
[PR #2870]
Sugar cane was not registered under the HARVEST flag and was not protected against premature breaking. Sugar cane, cocoa beans, and nether wart were also missing from CROP_PLANTING protection. They now all respect the correct flag settings.
Purge Unowned Islands NPE
[PR #2843]
Fixed a NullPointerException in the purge-unowned-islands command that occurred when an island's world was null.
End/Nether Explosion Crash
[PR #2844]
Fixed a NullPointerException in StandardSpawnProtectionListener that occurred when an explosion happened in a standard End or Nether world that was not managed by BentoBox.
Island Settings Comparator
[PR #2864]
Fixed an inconsistent comparator in the island settings panel that could throw a IllegalArgumentException under certain flag ordering conditions.
Color Codes in Multi-Line Translated Strings
[PR #2877]
Fixed color/formatting codes being stripped from the second and subsequent lines of multi-line locale strings.
Players Falling into the Void on New Island Creation
[PR #2890]
Fixed a bug where players could fall into the void immediately after a new island was created if the teleport destination hadn't solidified yet. homeTeleportAsync now performs a safe-spot check before teleporting and retries with exception handling if the location lookup fails, preventing void deaths on fresh islands.
Configuration Changes
Three new settings in config.yml:
| Key | Default | Description |
|---|---|---|
expelCommand | spawn | Console command run when an expelled player has no destination |
obsidianScoopingRadius | 5 | Block radius (0–15) checked for nearby obsidian during bucket use |
obsidianScoopingCooldown | 1 | Minutes before a player can scoop obsidian again (minimum: 1) |
Internal / Developer Changes
- Added a generic Map API (
api/map) so addon authors can integrate with any web-map plugin. - Extensive SonarCloud quality pass: sealed classes,
ChatColorremoval, lambda/@Overridestyle, variable-shadowing fixes, cognitive-complexity reductions (see PR #2875). - Removed unnecessary
publicmodifiers from JUnit 5 test classes and methods (PR #2849). - Added
CLAUDE.mdproject guidance file for AI-assisted development (PR #2848). - Resolved all previously failing and skipped tests; test suite is now fully green (PR #2872).
- Added public API method for reading Why-debug flag messages from
FlagListener(PR #2857).
What's Changed
- Fix lava bucket duplication exploit with obsidian scooping cooldown by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2842
- Fix NPE in purge unowned command when island world is null by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2843
- Fix NPE in StandardSpawnProtectionListener for end/nether explosions by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2844
- Fix error message when setting home by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2845
- ⚙️ 🔡 Add expelCommand config for expelled player fallback by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2846
- Add Copilot instructions setup by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2848
- chore: remove public modifiers from JUnit 5 test methods by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2849
- ⚙️ Run commands when blueprint bundle is pasted by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2852
- Fix black glass description by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2853
- ⚙️ 🔡 Add AdminTeamSetMaxSizeCommand by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2851
- ⚙️ 🔡 Show team size in admin info and add coop/trust placeholders by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2854
- ⚙️ 🔡 Add WIND_CHARGE island protection flag by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2855
- ⚙️ Add configurable obsidian scooping radius by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2856
- Add public API for Why debug reporting in FlagListener by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2857
- 🔡 Add /island lock command by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2858
- 🔡 Add pagination to DefaultHelpCommand by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2859
- ⚙️ Add configurable obsidian scooping cooldown duration by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2860
- ⚙️ Add BlueMap hook for island markers by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2861
- Add projectile support to geo-limit-settings by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2863
- Fix island settings comparator by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2864
- ⚙️ 🔡 Add SPAWN_PROTECTION world setting flag by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2865
- Fix player XP not resetting on team join or island creation by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2866
- 🔡 Add pagination to blueprint management GUI by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2867
- Fix BSkyBlock end world protection by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2868
- 🔡 Add bypass lock notification message by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2869
- Fix sugar cane / cocoa beans / nether wart protection flags by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2870
- Fix all failing and skipped tests by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2872
- Fix BlueMap hook registration error by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2874
- Fix SonarCloud issues (low / medium / high) by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2875
- Fix color codes in multi-line translated strings by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2877
- 🔡 Make home list clickable in chat by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2879
- Merge force-field fling feature by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2880
- Fix translation hover text by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2882
- ⚙️ Add Dynmap hook for island border display by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2883
- Add area markers and public API to BlueMapHook by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2884
- ⚙️ Add generic Map API for web-map addon integration by @tastybento in https://github.com/BentoBoxWorld/BentoBox/pull/2885
- Fix players falling into void on new island creation by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2890
- Release 3.12.0 by @tastybento
Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.11.2...3.12.0
BentoBox 3.11.2
release14 марта 2026 г.New Release Highlights
- Visitors cannot steal items from copper golems by hitting them
- ⚙️ 🔡 🔺 New
RAID_TRIGGERisland protection flag replaces the oldVISITOR_TRIGGER_RAIDworld 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(aliasph) GUI and/bbox dump-placeholderscommand 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 regionsnot deleting nether/end region files, and corrected login-check logic and scan reporting - BentoBox teleports now use
TeleportCause.PLUGINinstead ofUNKNOWN, fixing compatibility with Essentials/back
Compatibility
✔️ Paper Minecraft 1.21.5 - 1.21.1 ✔️ Java 21
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server
- Replace the BentoBox jar with this one
- Restart the server
- You should be good to go!
🔺 Config migration note: The
VISITOR_TRIGGER_RAIDworld setting has been removed. It is replaced by the new per-islandRAID_TRIGGERprotection 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)
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)
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)
Two new admin tools for managing placeholders:
/bbox placeholders(aliasph) — 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)
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)
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)
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)
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) [PR #2804](https://github.com/BentoBoxWorld/BentoBox/pull/2804) [PR #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)
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)
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)
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
BentoBox 3.11.1
release26 декабря 2025 г.This is a bug fix release.
Compatibility
- ✔️ Paper Minecraft 1.21.5 - 1.21.11
- ✔️ Java 21
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server
- Replace the BentoBox jar with this one
- Restart the server
- You should be good to go!
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
BentoBox 3.11.0
release16 декабря 2025 г.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
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server
- Replace the BentoBox jar with this one
- Restart the server
- You should be good to go!
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