
Island Limits
Prevent lag and grief with configurable limits on blocks, entities, and tile entities per island.
Список изменений
Release Highlights
- 🔺⚙️ Per-dimension limits — Block counts, entity counts, limits, and offsets are now tracked independently for the overworld, nether, and end, fixing the long-standing bug where nether/end counts reset to zero on chunk unload (#43).
- 🐛 Accurate counting — Fixes for double-counted beds/doors, golem/snowman block removal, several entity-counting bugs, and count leaks during recount.
- 🔡 MiniMessage locales — All bundled locale files have been converted from legacy
&colour codes to MiniMessage, and missing translation keys were synced across all languages. - 🩹 Older-server compatibility — Resolves a crash on Minecraft versions earlier than 1.21.9 caused by referencing copper blocks that did not yet exist.
Compatibility
✔️ BentoBox API 2.7.1 ✔️ Minecraft 1.21.5 – 26.1.2 ✔️ Java 21
Upgrading
- As always, take backups just in case. (Make a copy of everything!)
- Stop the server.
- Replace the Limits jar with this one.
- Restart the server.
- You should be good to go!
🔺 Data migration: Limits now stores counts and limits per dimension. On first load, your existing single-dimension data is migrated automatically into the overworld slot — no action is required, but the on-disk format changes, so a backup before upgrading is strongly recommended. Downgrading after the upgrade is not supported.
⚙️ New config sections: A single
blocklimitsvalue now applies independently to each dimension (e.g.HOPPER: 10allows 10 in the overworld, 10 in the nether, and 10 in the end). Optionalblocklimits-netherandblocklimits-endsections let you override a single dimension. These are added commented-out in the default config; existing configs keep working unchanged.
🔺 Per-dimension permissions: In addition to the existing
<gamemode>.island.limit.<KEY>.<NUMBER>(applied to all dimensions), you can now scope a limit to one dimension with<gamemode>.island.limit.<overworld|nether|end>.<KEY>.<NUMBER>.
🔡 Locale note: The bundled locale files now use MiniMessage formatting (
<red>,<green>, …) instead of legacy&codes. If you have customised any Limits locale strings, review them against the new files. Translations were also resynced and may need regenerating.
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed, or added.
- 🔺 special attention needed.
New Features
🔺⚙️ Per-dimension block and entity limits
[PR #261]
Block counts, entity counts, limits, and offsets are now keyed by World.Environment, so the overworld, nether, and end are each tracked and limited independently. This fixes #43, where nether and end counts dropped to zero whenever their chunks unloaded. A single config-defined limit applies to each dimension separately, new blocklimits-nether / blocklimits-end sections allow per-dimension overrides, and a new 6-segment permission format lets you grant limits for one dimension. Existing per-island data is migrated into the overworld dimension on first load.
Bug Fixes
🐛 Block count leaks and recount accuracy
[PR #264]
Fixes several cases where block counts could drift over time, and parallelises recount chunk loading so the calc command completes faster.
🐛 Multi-block placements counted once
[PR #265]
Beds, doors, and other multi-block structures were being counted twice on placement. Fixes #86.
🐛 Golem and snowman block removal
[PR #266]
Block removal for golems and snowmen is now anchored on the pumpkin rather than the spawn block, so the correct blocks are decremented. Fixes #127.
🐛 Entity counting fixes
[PR #267]
Resolves three entity-counting bugs in the entity limit listener.
🐛 Spawn eggs no longer consumed at the limit
[PR #268]
When a player is at the entity limit, spawn-egg use is now denied before the egg is consumed, so the item is kept. Fixes #134.
🩹 Copper-material crash on older servers
Limits referenced 1.21.9 copper blocks (copper torches, copper chests) directly, which crashed with a NoSuchFieldError on servers running Minecraft 1.21.8 or earlier. These materials are now resolved by name, so the same jar runs on both older and newer servers.
Other Improvements
- 🔡 Locale keys synced across all 21 languages and converted to MiniMessage formatting.
- 🧹 Extensive SonarCloud-driven cleanup of main and test code (cognitive complexity, duplicated literals, deprecated API usage, unused code).
- 🔧 MockBukkit pinned to Maven Central
4.110.0; Modrinth game-versions updated to the current Minecraft range.
What's Changed
- 🔺⚙️ Separate block and entity limits per dimension (fixes #43) by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/261
- Update Modrinth game-versions to current MC range by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/262
- 🐛 Fix block count leaks and parallelize recount chunk loading by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/264
- 🐛 Count multi-block placements (beds, doors) once, not twice (#86) by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/265
- 🐛 Anchor golem/snowman block removal on the pumpkin, not the spawn block (#127) by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/266
- 🐛 Fix three entity counting bugs in EntityLimitListener by @daniel-skopek in https://github.com/BentoBoxWorld/Limits/pull/267
- 🐛 Deny spawn-egg use before consumption when at the entity limit (#134) by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/268
- 🩹 Resolve 1.21.9 copper materials by name to support older servers by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/269
- 🧹 Address SonarCloud issues across main and test sources by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/269
- 🔡 Sync locale keys and convert colour codes to MiniMessage by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/269
New Contributors
- @daniel-skopek made their first contribution in https://github.com/BentoBoxWorld/Limits/pull/267
Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.28.1...1.28.2
