Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 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
8da7109
Fix spurious defaultRank warnings for PVP setting flags
tastybento Apr 12, 2026
5b79eb7
Update build version to 3.14.2
tastybento Apr 12, 2026
9eb101a
Add compatibility version V26_1_2 for 3.14.2
tastybento Apr 13, 2026
f92c393
feat: support item model keys and namespaced materials for blueprint …
tastybento Apr 14, 2026
08fffa0
Update build version to 3.15.0
tastybento Apr 14, 2026
3054afb
feat: detect item model on clicked item when setting bundle icon in-game
tastybento Apr 14, 2026
472de0f
feat: extend item-model/namespaced icon support to Blueprint
tastybento Apr 14, 2026
c13d6e0
Initial plan
Copilot Apr 14, 2026
f33acd8
chore: add .paper-nms/ to .gitignore and untrack committed files
Copilot Apr 14, 2026
7fe828e
refactor: extract icon resolution into ItemParser to eliminate duplic…
tastybento Apr 14, 2026
0dbb116
Merge pull request #2941 from BentoBoxWorld/feature/blueprint-bundle-…
tastybento Apr 14, 2026
9080549
Merge pull request #2942 from BentoBoxWorld/copilot/fix-remove-paper-…
tastybento Apr 14, 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
30c702e
Merge pull request #2933 from BentoBoxWorld/worktree-feature-purge-re…
tastybento Apr 14, 2026
4b7a03a
Update CLAUDE.md version reference to track buildVersion
tastybento Apr 15, 2026
9d29fe5
Merge remote-tracking branch 'origin/master' into develop
tastybento Apr 15, 2026
01c41eb
Fix typo in Japanese locale file for block count message
tastybento Apr 16, 2026
f4bd1ab
Initial plan
Copilot Apr 18, 2026
085bf4e
Fix: skip InvincibleVisitors targeting cancellation for XP orbs
Copilot Apr 18, 2026
60311a2
Merge pull request #2948 from BentoBoxWorld/copilot/fix-xp-pickup-for…
tastybento Apr 18, 2026
8cd1eb5
Merge /purge regions into top-level /purge; drop status/stop; simplif…
tastybento Apr 18, 2026
fcdca35
Address SonarCloud quality gate failures on #2949
tastybento Apr 18, 2026
64aae80
Extract AbstractPurgeCommand to remove duplication between purge subc…
tastybento Apr 18, 2026
3a280a2
Merge pull request #2949 from BentoBoxWorld/feature/merge-purge-regions
tastybento Apr 18, 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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ $RECYCLE.BIN/
*.ear
hs_err_pid*

# Paper NMS
.paper-nms/

# Maven
target/
pom.xml.tag
Expand Down
Empty file.
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ A template like `<green>[description]</green>` looks harmless but is a trap. Tra
- The Gradle build uses the Paper `userdev` plugin and Shadow plugin to produce a fat/shaded JAR at `build/libs/BentoBox-{version}.jar`.
- `plugin.yml` and `config.yml` are filtered for the `${version}` placeholder at build time; locale files are copied without filtering.
- Java preview features are enabled for both compilation and test execution.
- Local builds produce version `3.13.0-LOCAL-SNAPSHOT`; CI builds append `-b{BUILD_NUMBER}-SNAPSHOT`; `origin/master` builds produce the bare version.
- Local builds produce version `{buildVersion}-LOCAL-SNAPSHOT` (current: `3.14.2-LOCAL-SNAPSHOT`); CI builds append `-b{BUILD_NUMBER}-SNAPSHOT`; `origin/master` builds produce the bare version. The authoritative version is `buildVersion` in `build.gradle.kts`.

## Dependency Source Lookup

Expand Down
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.2"
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