Skip to content

Release 3.16.1#2977

Merged
tastybento merged 3 commits into
masterfrom
develop
May 17, 2026
Merged

Release 3.16.1#2977
tastybento merged 3 commits into
masterfrom
develop

Conversation

@tastybento
Copy link
Copy Markdown
Member

/bbox admin delete used to hard-delete the Island row immediately and kick off DeleteIslandChunks to repaint blocks via the addon's ChunkGenerator. Two problems: the row was gone before chunks were touched (so /bbox info reported "no island here" while the player was still standing on the old blocks), and DeleteIslandChunks called the deprecated ChunkGenerator#generateChunkData on modern generators that only override generateNoise — the futures completed exceptionally and the failure was silently swallowed by the regen loop, so no blocks were ever cleared.

Collapse AdminDeleteCommand.deleteIsland to always soft-delete via IslandsManager.deleteIsland(island, true, uuid). The row stays in the DB marked deletable; PurgeRegionsService / HousekeepingManager reaps the region files at the filesystem level on its schedule.

With the simple-gen branch gone, the chunk-regen / seed-world infrastructure has no remaining consumers in BentoBox or any in-tree gamemode. Removed:

  • DeleteIslandChunks, IslandChunkDeletionManager, CopyWorldRegenerator
  • AddonsManager seed-world creation/removal (createSeedWorlds, removeSeedWorlds, seedWorld, deleteWorldFolder, BENTOBOX constant)
  • IslandDeletionManager DB handler, BentoBoxReady recovery loader, and IslandDeleteChunksEvent listener (inDeletion set retained; populated only by IslandDeletedEvent removal now)
  • IslandsManager bentobox-deleteIsland MultiLib subscriber

Slimmed:

  • WorldRegenerator interface: only regenerateChunk(Chunk) remains
  • WorldRegeneratorImpl: pure-Bukkit, delegates to World.regenerateChunk for CleanSuperFlatListener's recovery path

Deprecated for removal:

  • GameModeAddon.isUsesNewChunkGeneration() — last consumer was the seed-world flag in AddonsManager.enableAddon, now gone.

Bumped buildVersion to 3.16.1.

/bbox admin delete used to hard-delete the Island row immediately and
kick off DeleteIslandChunks to repaint blocks via the addon's
ChunkGenerator. Two problems: the row was gone before chunks were
touched (so /bbox info reported "no island here" while the player was
still standing on the old blocks), and DeleteIslandChunks called the
deprecated ChunkGenerator#generateChunkData on modern generators that
only override generateNoise — the futures completed exceptionally and
the failure was silently swallowed by the regen loop, so no blocks
were ever cleared.

Collapse AdminDeleteCommand.deleteIsland to always soft-delete via
IslandsManager.deleteIsland(island, true, uuid). The row stays in
the DB marked deletable; PurgeRegionsService / HousekeepingManager
reaps the region files at the filesystem level on its schedule.

With the simple-gen branch gone, the chunk-regen / seed-world
infrastructure has no remaining consumers in BentoBox or any in-tree
gamemode. Removed:

- DeleteIslandChunks, IslandChunkDeletionManager, CopyWorldRegenerator
- AddonsManager seed-world creation/removal (createSeedWorlds,
  removeSeedWorlds, seedWorld, deleteWorldFolder, BENTOBOX constant)
- IslandDeletionManager DB handler, BentoBoxReady recovery loader,
  and IslandDeleteChunksEvent listener (inDeletion set retained;
  populated only by IslandDeletedEvent removal now)
- IslandsManager bentobox-deleteIsland MultiLib subscriber

Slimmed:

- WorldRegenerator interface: only regenerateChunk(Chunk) remains
- WorldRegeneratorImpl: pure-Bukkit, delegates to
  World.regenerateChunk for CleanSuperFlatListener's recovery path

Deprecated for removal:

- GameModeAddon.isUsesNewChunkGeneration() — last consumer was the
  seed-world flag in AddonsManager.enableAddon, now gone.

Bumped buildVersion to 3.16.1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tastybento tastybento changed the title fix: route admin delete through soft-delete; drop seed-world plumbing Release 3.16.1 May 15, 2026
@tastybento tastybento requested a review from Copilot May 15, 2026 13:56
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This release updates BentoBox’s island-deletion flow to always soft-delete islands (keeping the DB row marked deletable until region files are purged later), and removes the now-unused chunk regeneration / seed-world infrastructure that previously attempted to repaint island chunks.

Changes:

  • Admin delete now always uses IslandsManager.deleteIsland(..., true, uuid) (soft-delete) instead of conditionally hard-deleting and chunk-regenerating.
  • Removed chunk-regeneration / seed-world deletion pipeline (DeleteIslandChunks, IslandChunkDeletionManager, CopyWorldRegenerator, seed-world management in AddonsManager).
  • Simplified WorldRegenerator to only support regenerateChunk(Chunk) and provided a pure-Bukkit implementation.

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/test/java/world/bentobox/bentobox/managers/IslandsManagerTest.java Updates mocks to match removal of chunk-deletion manager wiring.
src/test/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommandTest.java Updates tests to assert admin delete always soft-deletes; removes hard-delete path coverage.
src/main/java/world/bentobox/bentobox/util/DeleteIslandChunks.java Removed obsolete chunk-by-chunk island deletion/regeneration utility.
src/main/java/world/bentobox/bentobox/nms/WorldRegeneratorImpl.java Replaced NMS/seed-world regenerator with a Bukkit World#regenerateChunk delegate.
src/main/java/world/bentobox/bentobox/nms/WorldRegenerator.java Slimmed interface to only regenerateChunk(Chunk).
src/main/java/world/bentobox/bentobox/nms/CopyWorldRegenerator.java Removed seed-world copy regenerator implementation.
src/main/java/world/bentobox/bentobox/managers/IslandsManager.java Removes MultiLib delete-island subscriber; updates hard-delete Javadoc guidance.
src/main/java/world/bentobox/bentobox/managers/IslandDeletionManager.java Removes DB-backed deletion queue/loader; attempts to retain “in deletion” tracking.
src/main/java/world/bentobox/bentobox/managers/IslandChunkDeletionManager.java Removed deletion queue runner.
src/main/java/world/bentobox/bentobox/managers/AddonsManager.java Removes seed-world create/remove logic and related constants.
src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java Collapses delete behavior to always soft-delete.
src/main/java/world/bentobox/bentobox/api/addons/GameModeAddon.java Deprecates isUsesNewChunkGeneration() for removal (no longer used by BentoBox).
build.gradle.kts Bumps buildVersion to 3.16.1.

Comment thread src/main/java/world/bentobox/bentobox/managers/IslandDeletionManager.java Outdated
Copilot flagged that after the seed-world cleanup the inDeletion set
was permanently empty (no more DELETE_CHUNKS event populating it), so
inDeletion(Location) always returned false and the call sites in
DefaultNewIslandLocationStrategy and AdminRegisterCommand were
silently no-ops.

Re-anchor the check on the live island state instead of a side-channel
set: ask the islands manager whether the island at that location is
marked deletable. This restores the original semantic for
AdminRegisterCommand (block re-registering an island that's awaiting
filesystem reap) without needing event-based bookkeeping. The
DefaultNewIslandLocationStrategy call stays redundant-but-harmless —
soft-deleted islands are also caught by getIslandAt(l).isPresent().

Drops the inDeletion HashSet, the IslandDeletedEvent listener, and
the Listener interface implementation. BentoBoxListenerRegistrar no
longer registers the manager for events.

Public API surface is unchanged: BentoBox.getIslandDeletionManager()
and IslandDeletionManager.inDeletion(Location) still work.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 13 out of 14 changed files in this pull request and generated 2 comments.

Comment on lines +8 to +14
* Reports whether an island location is awaiting filesystem-level cleanup
* (i.e. the row is still in the DB with {@code deletable = true}, before
* {@code PurgeRegionsService} reaps the region files).
*
* <p>Backed by the live island state rather than a side-channel set, so
* it can never drift out of sync with the actual database.
*
Comment thread src/main/java/world/bentobox/bentobox/nms/WorldRegenerator.java Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@sonarqubecloud
Copy link
Copy Markdown

@tastybento tastybento merged commit 83796a9 into master May 17, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants