Release 1.0.4
New in this release
- 🔺 Limits upgrades work again. Clicking any block, entity or entity-group upgrade in
/[gamemode] upgradesthrew aNoSuchMethodErrorand the purchase failed, on any server running a current Limits addon. Limits 1.28.2 replaced its single offset maps with per-environment (overworld / nether / end) maps, and Upgrades was still calling the removed methods. Upgrades now uses the per-environment API and raises the offset in every environment, so upgrades stay island-wide exactly as before. - ⚙️
config.ymlnow matches reality. Upgrades have been stored in the database and managed in-game since 1.0.0, but the file still documented the old config-driven system — so editing it did nothing. It now says so up front, and the inertrange-upgrade,command-upgrade,entity-icon,entity-group-iconandcommand-iconsections have been removed. - Nine latent bugs fixed, found by static analysis: six potential
NullPointerExceptions in the price and reward formula paths, a null command sender that could reachdispatchCommand, and two dead null-checks against APIs that never return null. - Internal cleanup. Five upgrade classes that were never instantiated have been removed along with the manager and settings code that only served them, and duplicated formula and limits logic now lives in shared helpers. The test suite grew from 171 to 266 tests.
Compatibility
✔️ BentoBox API 3.14.0
✔️ Minecraft 1.21.5 - 26.1.x
✔️ Java 21
🔺 Update the Limits addon. If you use Limits, update it to 1.28.2 or newer — this release is built against Limits 1.29.1 and needs the per-environment limits API. Your existing offsets are safe: Limits migrates older single-map offsets into the overworld when it loads, and any upgrade bought from now on applies in all three environments.
⚙️ What
config.ymlstill does. Your existing file keeps working and is not rewritten, so nothing breaks on upgrade. Three sections are still read —block-limits-upgrade,entity-limits-upgradeandentity-group-limits-upgrade. They do not create upgrades. They tell Upgrades which limits it owns, so the Limits addon's own permission-based limits are suppressed for them and the two don't fight over the same limit. Only the key names matter; the tier values beneath them are ignored.disabled-gamemodesandchat-input-escapealso still apply. Everything else in the file is now inert and can be deleted.
🔺 Entity limit suppression no longer needs an icon. An entry in
entity-limits-upgradeused to be honoured only if the same entity also appeared inentity-icon. That section is gone, so entity entries now take effect on their own. If you had an entity underentity-limits-upgradewithout a matchingentity-iconentry, Limits permissions for it will now be suppressed where previously they were not. Check that section if you relied on the old behaviour.
Upgrading
- Take backups of your server, for safety
- Download this jar and put it in your addons folder - delete the old one
- Update the Limits addon to 1.28.2 or newer if you use it
- Restart the server
- Optionally tidy your
config.yml— see the note above for what still has an effect - You should be good to go!
Legend
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
What's Changed
- 🔺 fix: use environment-aware Limits offset API (NoSuchMethodError on upgrade) by @tastybento in #89
- refactor: extract LimitsUpgrade base class to remove duplication by @tastybento in #89
- fix: resolve SonarCloud bugs and code smells across the addon by @tastybento in #91
- refactor(config): extract Settings constants, add formula parser tests by @tastybento in #91
- refactor(config): reduce cognitive complexity in Settings by @tastybento in #91
- ⚙️🔺 refactor: remove config-driven upgrade system, document config.yml reality by @tastybento in #92
Full Changelog: 1.0.3...1.0.4