Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
bd23874
Phase 1: Add housekeeping scheduler + extract PurgeRegionsService
tastybento Apr 9, 2026
da21fea
Fix async World.save() crash in purge delete path
tastybento Apr 9, 2026
9c90160
Log explicit save messages around purge world saves
tastybento Apr 9, 2026
6bc7ae3
Add admin purge age-regions test helper
tastybento Apr 9, 2026
4ec87f8
Merge remote-tracking branch 'origin/develop' into worktree-feature-p…
tastybento Apr 9, 2026
9f33f64
Phase 2: Reset always soft-deletes via deletable flag
tastybento Apr 9, 2026
0a515c2
Surface soft-deleted islands to admins
tastybento Apr 9, 2026
73a3240
Phase 3: Split AdminDeleteCommand on isUsesNewChunkGeneration
tastybento Apr 9, 2026
23bd5cb
Phase 3.5: Add /bbox admin purge deleted + daily housekeeping sweep
tastybento Apr 9, 2026
93c35cc
Merge remote-tracking branch 'origin/develop' into worktree-feature-p…
tastybento Apr 9, 2026
a63da7c
Defer deleted-sweep island DB removal to plugin shutdown
tastybento Apr 10, 2026
107e56f
Remove verbose per-file debug logging from deleteRegionFiles
tastybento Apr 10, 2026
8fd252a
Remove keep-previous-island-on-reset setting
tastybento Apr 10, 2026
9aa7259
Bump version to 4.0.0
tastybento Apr 11, 2026
54c6ca3
Merge branch 'develop' into worktree-feature-purge-regions-reset
tastybento Apr 11, 2026
1a369e4
Update src/main/java/world/bentobox/bentobox/managers/PurgeRegionsSer…
tastybento Apr 11, 2026
9e84fe9
Update src/main/java/world/bentobox/bentobox/api/commands/admin/purge…
tastybento Apr 11, 2026
a10199f
Update src/main/java/world/bentobox/bentobox/api/commands/admin/Admin…
tastybento Apr 11, 2026
204d6c5
Address PR review: fix typo, error messages, scheduler, quit cleanup
Copilot Apr 11, 2026
59f3907
Address PR #2933 review issues: version, events, housekeeping split f…
tastybento Apr 14, 2026
68a7a54
Add PURGED event reason; fire DELETED immediately on soft-delete; fix…
tastybento Apr 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArt
group = "world.bentobox" // From <groupId>

// Base properties from <properties>
val buildVersion = "3.14.1"
val buildVersion = "3.15.0"
val buildNumberDefault = "-LOCAL" // Local build identifier
val snapshotSuffix = "-SNAPSHOT" // Indicates development/snapshot version

Expand Down
39 changes: 38 additions & 1 deletion src/main/java/world/bentobox/bentobox/BentoBox.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@
import world.bentobox.bentobox.managers.FlagsManager;
import world.bentobox.bentobox.managers.HooksManager;
import world.bentobox.bentobox.managers.ChunkPregenManager;
import world.bentobox.bentobox.managers.HousekeepingManager;
import world.bentobox.bentobox.managers.IslandDeletionManager;
import world.bentobox.bentobox.managers.PurgeRegionsService;
import world.bentobox.bentobox.managers.IslandWorldManager;
import world.bentobox.bentobox.managers.IslandsManager;
import world.bentobox.bentobox.managers.LocalesManager;
Expand Down Expand Up @@ -72,6 +74,8 @@ public class BentoBox extends JavaPlugin implements Listener {
private MapManager mapManager;
private IslandDeletionManager islandDeletionManager;
private ChunkPregenManager chunkPregenManager;
private PurgeRegionsService purgeRegionsService;
private HousekeepingManager housekeepingManager;
private WebManager webManager;

// Settings
Expand Down Expand Up @@ -143,6 +147,9 @@ public void onEnable(){
}
islandsManager = new IslandsManager(this);

// Shared purge-regions logic (command + housekeeping)
purgeRegionsService = new PurgeRegionsService(this);

// Start head getter
headGetter = new HeadGetter(this);

Expand Down Expand Up @@ -233,6 +240,10 @@ private void completeSetup(long loadTime) {

webManager = new WebManager(this);

// Housekeeping: auto-purge of unused region files (default OFF)
housekeepingManager = new HousekeepingManager(this);
housekeepingManager.start();

final long enableTime = System.currentTimeMillis() - enableStart;

// Show banner
Expand Down Expand Up @@ -308,6 +319,15 @@ public void onDisable() {
if (chunkPregenManager != null) {
chunkPregenManager.shutdown();
}
// Flush deferred island deletions from the deleted-sweep purge.
// Paper's internal chunk cache is cleared on shutdown, so the stale
// in-memory chunks are guaranteed gone at this point.
if (purgeRegionsService != null) {
purgeRegionsService.flushPendingDeletions();
}
if (housekeepingManager != null) {
housekeepingManager.stop();
}

}

Expand Down Expand Up @@ -560,12 +580,29 @@ public IslandDeletionManager getIslandDeletionManager() {

/**
* @return the chunkPregenManager
* @since 3.14.0
* @since 3.15.0
*/
public ChunkPregenManager getChunkPregenManager() {
return chunkPregenManager;
}

/**
* @return the shared {@link PurgeRegionsService} used by the purge
* regions command and the housekeeping scheduler.
* @since 3.15.0
*/
public PurgeRegionsService getPurgeRegionsService() {
return purgeRegionsService;
}

/**
* @return the {@link HousekeepingManager}, or {@code null} if not yet initialized.
* @since 3.15.0
*/
public HousekeepingManager getHousekeepingManager() {
return housekeepingManager;
}

/**
* @return an optional of the Bstats instance
* @since 1.1
Expand Down
Loading
Loading