HousekeepingManager handles automated cleanup on a configurable schedule./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.myserver:island_tropical) and vanilla namespaced materials (e.g. minecraft:diamond) as icons, enabling resource-pack-driven island selection GUIs.EXPERIENCE_PICKUP flag still controls whether pickup is allowed.✔️ Paper Minecraft 1.21.5 – 1.21.12 ✔️ Paper Minecraft 26.1.1 – 26.1.2 ✔️ Java 21+
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.🔺 Purge command changes:
/purge regions,/purge status, and/purge stopno 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-resethas been removed. All island resets now soft-delete (equivalent to the oldfalsebehaviour, but with deferred disk cleanup). If you previously relied onkeep-previous-island-on-reset: trueto preserve old islands, use/purge protecton islands you want to keep.
🔡 Locale changes: Several purge-related locale keys have been removed, renamed, or updated. New keys for the
deletedsubcommand have been added. Regenerate or update your locale files.
[PR #2933] [PR #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.
[PR #2941] Closes #2940
The "icon" field in blueprint bundle JSON files now accepts three formats:
"icon": "DIAMOND""icon": "minecraft:diamond""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.
[PR #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.
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.
defaultRank Warnings for PVP Setting FlagsPVP-related setting flags were triggering incorrect defaultRank warning log messages on startup. These warnings were harmless but noisy; the condition is now correctly filtered.
pt_BR.yml → pt-BR.yml) — carries forward from 3.14.2 [PR note]PURGED event reason; fire IslandDeleteEvent immediately on soft-delete so addons receive timely notificationAbstractPurgeCommand base class to remove duplication across purge subcommands.paper-nms/ build artifact and add to .gitignore [PR #2942]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.
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:
/purge protect)<days> daysThe 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:
interval-days days and behaves like /purge <days> using the configured region-age-days value.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.
.paper-nms/ directory and add to .gitignore by @Copilot in https://github.com/BentoBoxWorld/BentoBox/pull/2942.paper-nms/ directory and add to .gitignore by @app/copilot-swe-agent in https://github.com/BentoBoxWorld/BentoBox/pull/2942Full Changelog: https://github.com/BentoBoxWorld/BentoBox/compare/3.14.2...3.15.0

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.