Перейти к содержимому
Mineforgian

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

  1. Stop your server.
  2. Replace the old Limits jar in plugins/BentoBox/addons/ with Limits-1.28.4.jar.
  3. Start your server. No config or locale changes are required.

What's Changed

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

  1. As always, take backups just in case. (Make a copy of everything!)
  2. Stop the server.
  3. Replace the Limits jar with this one.
  4. Restart the server.
  5. You should be good to go!

No data, config, or locale changes — this is a drop-in replacement.


What's Changed

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

  1. As always, take backups just in case. (Make a copy of everything!)
  2. Stop the server.
  3. Replace the Limits jar with this one.
  4. Restart the server.
  5. 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 blocklimits value now applies independently to each dimension (e.g. HOPPER: 10 allows 10 in the overworld, 10 in the nether, and 10 in the end). Optional blocklimits-nether and blocklimits-end sections 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

New Contributors

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 IslandBlockCount map fields were changed from Map<Material, Integer> to Map<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, producing Expected BEGIN_OBJECT but was STRING ... path $.blockCounts. errors on startup and dropping every island's stored counts. A backwards-compatible Gson TypeAdapter now 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:hopper because NamespacedKey.toString() was being prettified. They now display as Hopper as 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 NamespacedKeyMapAdapter for blockCounts, blockLimits, and blockLimitsOffset.
  • Fix limits GUI displaying block names as Minecraft:hopper instead of Hopper.

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 ShulkerDuplicateEvent to 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 blocklimits config 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

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

New Contributors

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

Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.25.0...1.26.0

Комментарии

Загружаем…