
Island Limits
Prevent lag and grief with configurable limits on blocks, entities, and tile entities per island.
- Загрузки
- 373
- Подписчики
- 4
- Обновлён
- 6 июля 2026 г.
- Лицензия
- EPL-2.0
Опубликован 19 декабря 2024 г.
🛡️ Island Limits — Keep Your Server Healthy
Set configurable limits on blocks, entities, and tile entities per island. Prevent players from crashing your server with excessive hoppers, animals, or redstone machines.
Features
- Block limits — cap specific block types per island (hoppers, pistons, spawners, etc.)
- Entity limits — limit animals, mobs, and other entities per island
- Tile entity limits — control chests, signs, banners, and other tile entities
- Per-island tracking — each island tracked independently
- Configurable messages — players see clear feedback when they hit a limit
- Works with all BentoBox game modes
Essential for any public server running BentoBox game modes.
📦 Requires BentoBox + a game mode addon.
Ченджлог
1.28.4Релиз26.1.1, 26.1.2, 26.2 · 6 июля 2026 г.
Limits 1.28.4
A maintenance release focused on keeping entity counts accurate and reliably persisted.
🐛 Bug Fixes
- Entity counts no longer drift above reality — under some spawn/removal sequences the tracked entity count could climb above the number of entities actually on the island, eventually blocking spawns that should have been allowed. Counts now stay in sync with the real island population. [PR #273]
- Entity count persistence centralized — all entity count mutations now flow through
BlockLimitsListener, so changes are enrolled in the normal batch-save cycle instead of only being written on addon disable. This prevents count loss on an unclean shutdown or crash. [PR #274]
Compatibility
✔️ BentoBox API 2.7.1+ ✔️ Minecraft 1.21.5 – 1.21.11, 26.1.x ✔️ Java 21
Upgrading
- Stop your server.
- Replace the old
Limitsjar inplugins/BentoBox/addons/withLimits-1.28.4.jar. - Start your server. No config or locale changes are required.
What's Changed
- 🐛 Fix entity counts drifting above reality by @daniel-skopek in https://github.com/BentoBoxWorld/Limits/pull/273
- 🐛 Centralize entity count persistence in BlockLimitsListener by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/274
Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.28.3...1.28.4
1.28.3Релиз26.1.1, 26.1.2, 26.2 · 29 июня 2026 г.
Release Highlights
A small bug-fix release that makes per-island entity counts reliable across server restarts.
- 🐛 Entity counts no longer drift after a restart — The map linking each entity to its island was kept in memory only and lost on every restart. Entities reloaded from chunks never re-entered it, so when they later died or despawned off-island their count was never decremented and slowly crept upward. Entities are now re-registered as their chunks load, so off-island removals decrement correctly again (#270).
- 🩹 No more map growth on chunk unload — Building on the fix above, the in-memory mapping is now released when a chunk unloads (and rebuilt on reload), preventing unbounded growth on long-running servers. Includes new test coverage for the restart-drift regression (#271).
Compatibility
✔️ BentoBox API 2.7.1 ✔️ Minecraft 1.21.5 – 26.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!
No data, config, or locale changes — this is a drop-in replacement.
What's Changed
- Fix entity counts drifting after server restart by @daniel-skopek in https://github.com/BentoBoxWorld/Limits/pull/270
- Evict entityIslandMap on chunk unload + tests for restart-drift fix by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/271
Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.28.2...1.28.3
1.28.2Релиз26.1, 26.1.1, 26.1.2 · 13 июня 2026 г.
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
1.28.1Релиз26.1, 26.1.1, 26.1.2 · 7 апреля 2026 г.
Compatibility
✔️ BentoBox 3.0.0 ✔️ Minecraft 1.21.x ✔️ Java 21
What's New
This is a hotfix release for two regressions introduced in 1.28.0.
- Existing databases load again. In 1.28.0 the
IslandBlockCountmap fields were changed fromMap<Material, Integer>toMap<NamespacedKey, Integer>. Pre-1.28.0 JSON files store keys as bare Material enum names (e.g."DIRT": 459), which the new reflective Gson handling could not read, producingExpected BEGIN_OBJECT but was STRING ... path $.blockCounts.errors on startup and dropping every island's stored counts. A backwards-compatible GsonTypeAdapternow reads legacy enum names, namespaced strings, and the complex array form, and writes the clean"minecraft:dirt"form going forward. No manual migration is required — old files load as-is. - Block names in the limits GUI are readable again. Items in the limits panel were showing as
Minecraft:hopperbecauseNamespacedKey.toString()was being prettified. They now display asHopperas before.
Changelog
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 loading of pre-1.28.0 IslandBlockCount JSON files by adding a backwards-compatible
NamespacedKeyMapAdapterforblockCounts,blockLimits, andblockLimitsOffset. - Fix limits GUI displaying block names as
Minecraft:hopperinstead ofHopper.
Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.28.0...1.28.1
1.28.0Релиз1.21.9, 1.21.10, 1.21.11 · 1 апреля 2026 г.
Compatibility
✔️ BentoBox 3.0.0 ✔️ Minecraft 1.21.x ✔️ Java 21
What's New
- Shulker duplication farms are now properly limited on Paper servers. Previously, shulkers could bypass entity limits because the duplication event fired after the original shulker teleported outside the island, causing an undercount. Limits now uses Paper's
ShulkerDuplicateEventto enforce limits before duplication occurs. - Copper chest limits can no longer be bypassed. Oxidation, waxing, scraping, and copper golem creation all previously allowed players to circumvent copper chest placement limits. All copper chest variants are now normalized to a single tracked material, and block state transitions are properly counted.
- Invalid config entries are handled gracefully. Malformed namespaced keys, non-block materials, and uncountable materials (lava, water, air, etc.) in
blocklimitsconfig are now caught with clear warning messages instead of causing NPEs or silently polluting the limits map.
Changelog
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 #242: enforce shulker entity limit on Paper via ShulkerDuplicateEvent by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/243
- Fix sonarcloud criticals by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/244
- Fix BlockFormEvent handler to track material transitions for copper chest oxidation/waxing by @copilot-swe-agent in https://github.com/BentoBoxWorld/Limits/pull/246
- Guard against NPE from NamespacedKey.fromString() returning null in loadLimits() by @copilot-swe-agent in https://github.com/BentoBoxWorld/Limits/pull/249
- Fix loadLimits() to reject non-block and uncountable materials by @copilot-swe-agent in https://github.com/BentoBoxWorld/Limits/pull/250
- Fix pom.xml build.version to match Release 1.27.2 by @copilot-swe-agent in https://github.com/BentoBoxWorld/Limits/pull/251
- 🔺 Bump Java to 21 and Spigot target to 1.21.11 by @copilot-swe-agent in https://github.com/BentoBoxWorld/Limits/pull/252
- Migrate to JUnit 5 and add comprehensive test coverage by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/253
- Migrate from custom ServerMocks to MockBukkit by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/254
- Fix copper chest limit bypass via waxing, scraping, and golem creation by @copilot-swe-agent in https://github.com/BentoBoxWorld/Limits/pull/255 🔺 Java 21 is now required (previously Java 17).
Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.27.1...1.27.2
1.27.1Релиз1.21.6, 1.21.7, 1.21.8 · 15 сентября 2025 г.
Compatibility
✔️ BentoBox 3.0.0 ✔️ Minecraft 1.21.x ✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- Add a config option to disable logging player limits to console (on join) by @Techirion in https://github.com/BentoBoxWorld/Limits/pull/236
- Address #237 issue over anvils by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/238
- Release 1.27.1 by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/239
New Contributors
- @Techirion made their first contribution in https://github.com/BentoBoxWorld/Limits/pull/236
Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.27.0...1.27.1
1.26.0Релиз1.21.3, 1.21.4 · 19 декабря 2024 г.
Compatibility
✔️ BentoBox 3.0.0 ✔️ Minecraft 1.21.x ✔️ Java 17
Changelog
Legend
- 🔡 locale files may need to be regenerated or updated.
- ⚙️ config options have been removed, renamed or added.
- 🔺 special attention needed.
What's Changed
- MC 1.21.3 version by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/229
- Release 1.26.0 by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/228
Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.25.0...1.26.0
Комментарии
Загружаем…