Tags
Creators
Details
2.28.0
Compatibility
Changes
š What's new
Level 2.28.0 closes the gaps in donation limit enforcement. Block limits defined in blockconfig.yml are now respected everywhere donations are involved: the level calculation caps each donated block type at its current limit, and /island donate hand, /island donate inv, and the donation GUI all check the limit up front ā so players can no longer earn points beyond a block's configured cap by donating instead of placing. Donated points are also now recalculated from the stored donated-blocks map using current block values on every recalculation, so changing a block's value (or a world-specific value) in blockconfig.yml immediately applies to past donations instead of using a stale stored total.
The release also wires up automatic publishing to CurseForge and Hangar alongside Modrinth, and adds Minecraft 26.1.2 to the supported versions.
⨠Highlights
š” Donation limits enforced end-to-end (#438, #439, #443, #449)
- The level calculation now caps each donated block type at its current
blockconfig.ymllimit ā if an admin lowers a limit after players have donated, only up to the new limit counts toward the level /island donate handrefuses donations for a block whose limit is already reached, and trims the confirm prompt to the amount that will actually count, with a warning line when trimmed/island donate invapplies the same per-material capping across the whole inventory preview, skipping materials already at their limit- The donation GUI panel enforces the same limits, so all three donation paths agree
- Donated points are recomputed from the donated-blocks map using current (and world-specific) block values on every recalculation, so
blockconfig.ymlvalue changes retroactively apply to donations - Limit lookups are case-insensitive, so mixed-case custom block IDs (e.g. Oraxen items) resolve the same limit everywhere
- The donation GUI's "Currently donated" figure shows the effective points (current values, limits applied) ā the same figure the level uses ā instead of the stored donation-time total
- Admin level reports cap donated lines at the current limit (marked "capped at N") so they sum to the donated total
- When everything a player offers is already at its limit, they get a clear "donation limits reached" message instead of a misleading "nothing to donate" or a 0-point confirmation prompt
- New locale keys
island.donate.limit-reached,island.donate.limit-notice, andisland.donate.limit-reached-all, translated in all 17 shipped locales
š¦ Publishing & platform support
- Releases are now published automatically to CurseForge and Hangar in addition to Modrinth when a GitHub release goes live (#445, #446, #447)
- Minecraft 26.1.2 added to the supported game versions (#444)
š§ Build
- Tests now use MockBukkit 4.110.0 from Maven Central instead of a JitPack snapshot, making builds reproducible
āļø Compatibility
āļø BentoBox API 3.16.0 āļø Minecraft 1.21.x and 26.1.x āļø Java 21
šŗ Updating ā important notes
š” Locales updated. All 17 shipped locales gained three new keys under
island.donate(limit-reached,limit-notice,limit-reached-all). If you have customised locale files inplugins/BentoBox/addons/Level/locales/, add these keys or the limit warnings will show raw keys.
šŗ Donations over a block's limit no longer count. If you use
limit:entries inblockconfig.yml, any previously donated blocks above a block's current limit are now silently excluded from the level calculation. Island levels may drop after upgrading on servers where players had donated past the limits ā this is the intended fix, but be ready for questions.
Note for dev-build users: the experimental per-chunk zeroing engine that appeared in snapshot builds during this cycle (#435, #440) was removed before release (#448) and is not part of 2.28.0. Stable-release users are unaffected.
š„ How to update
- Stop the server
- Back up your BentoBox folder
- Drop the new jar into the addons folder and remove the old one
- Start the server
Legend
- š” locale files may need to be regenerated or updated
- āļø config options have been removed, renamed, or added
- šŗ special attention needed
What's Changed
- Fix donated points calculation using stale stored total instead of current block values by @Copilot in https://github.com/BentoBoxWorld/Level/pull/438
- š” Fix blockconfig limits for donations (command, GUI, and confirm prompts) by @Copilot in https://github.com/BentoBoxWorld/Level/pull/439
- šŗ Cap donated block counts to current block limits in level calculation by @Copilot in https://github.com/BentoBoxWorld/Level/pull/443
- Add MC 26.1.2 to Modrinth game-versions by @tastybento in https://github.com/BentoBoxWorld/Level/pull/444
- Add CurseForge publish workflow (publishes the release asset) by @tastybento in https://github.com/BentoBoxWorld/Level/pull/445
- ci: bump pinned reusable workflow to fe4b1f0 by @tastybento in https://github.com/BentoBoxWorld/Level/pull/446
- ci: bump pinned publish-platforms.yml to ca2dcd1 by @tastybento in https://github.com/BentoBoxWorld/Level/pull/447
- š” Make donation limit handling consistent across all paths by @tastybento in https://github.com/BentoBoxWorld/Level/pull/449
- ci: align CurseForge/Hangar game versions with Modrinth by @tastybento in https://github.com/BentoBoxWorld/Level/pull/450
- Pin MockBukkit to Maven Central 4.110.0 by @tastybento
- Experimental per-chunk zeroing engine merged (#435, #440) and subsequently removed before release (#448) ā not included in 2.28.0
Full Changelog: https://github.com/BentoBoxWorld/Level/compare/2.27.0...2.28.0
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:OWzL9XSJ:FgXWAu3E"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:OWzL9XSJ:FgXWAu3E"
}

