Sueta

Island Limits

1.30.2

Prevent lag and grief with configurable limits on blocks, entities, and tile entities per island.

·Plugin
  1. 1.30.2latestSep 6, 2026
    A bug fix for piston counting plus a new opt-in feature that keeps entity counts honest by recounting islands in the background. Extended pistons no longer count twice* — Limits treats a piston head as its base piston so that breaking the head decrements the count correctly. The admin recount (calc) walks every block on the island, though, and was counting both the base and the head of every extended piston. A redstone build with all its pistons extended doubled the count (16 sticky pistons showing as 32/30), and every recalc put the wrong number back. Blocks in transit as they were being pushed were also counted as pistons. The recount now counts only the base, and explosions that destroy both the base and head of a piston decrement it once. Reported on Discord. [[PR #302](https://github.com/BentoBoxWorld/Limits/pull/302)] ⚙️ Automatic entity recounts (opt-in) — entity counts are maintained incrementally, so any missed event (sniffer egg hatches, mobs crossing portals, increments lost in a crash before the batched save) leaves them stuck away from reality with no way to recover except a manual recount. Two new opt-in options reconcile counts automatically: `recount-on-join` runs a background entity-only recount of an island when its owner logs in, and `recount-periodic` sweeps online islands on a timer so long sessions self-heal too. Recounts are async, rate-limited to one island at a time, deduplicated and throttled per island, and only rewrite entity counts; block counts are left alone. Islands larger than `recount-max-chunks` are skipped with a one-time warning. Both are off by default* because a recount loads every chunk of the island's protection area. Thanks @daniel-skopek. [[PR #301](https://github.com/BentoBoxWorld/Limits/pull/301)] Entities crossing portals off-island decrement correctly* — when an entity went through a portal while standing outside its island's protection range, the source-dimension count was never decremented. The portal handler now uses the same entity-to-island cache as removal tracking. [[PR #301](https://github.com/BentoBoxWorld/Limits/pull/301)]
    ⚙️ Config note: six new keys are added to config.yml: recount-on-join, recount-on-join-cooldown, recount-periodic, recount-periodic-interval, recount-periodic-batch and recount-max-chunks. All default to off or to safe values, so nothing changes unless you enable them. Read the comments in the config before turning them on: cost scales with the square of the protection range (64 chunks per world at range 50, 2,601 at range 400), and a recount replaces counts rather than merging them, so it is only accurate when the island's chunks are loaded.
    Piston note: islands whose piston count is inflated will show the right number after one more recount (/<gamemode> admin limits calc <player>) on this version.
    ### Compatibility ✔️ BentoBox API 2.7.1 ✔️ Paper Minecraft 1.21.11 - 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. The new recount-* keys are added to config.yml automatically with their defaults. 5. Optionally enable recount-on-join and/or recount-periodic after reading the config comments. 6. Run a recount on any island that showed too many pistons. ### Legend ⚙️ Config options have been added. ## What's Changed * ⚙️ Self-heal drifting entity counts via background recount by @daniel-skopek in https://github.com/BentoBoxWorld/Limits/pull/301 * Count an extended piston once during recount and explosions by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/302 Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.30.1...…
    137 downloads
  2. 1.30.1Sep 4, 2026
    Two bug fixes for accuracy: block placeholders work again, and entity counts no longer drift below the real population when another plugin removes a spawn that Limits already cancelled. Block count and limit placeholders work again* — since 1.28.0 every block placeholder was registered with the minecraft: namespace baked into its name, so %Limits_bskyblock_island_spawner_limit% was really %Limits_bskyblock_island_minecraft:spawner_limit% and PlaceholderAPI returned it unparsed. All block _count, _limit and _base_limit placeholders, including the _overworld, _nether and _end variants, are now registered under the documented names. Entity placeholders were never affected. Custom-block keys from ItemsAdder or Oraxen use namespace_key (for example itemsadder_ruby_block) since a colon is not valid in a placeholder name. Fixes [#298](https://github.com/BentoBoxWorld/Limits/issues/298) 🔺 Entity counts no longer drift when a cancelled spawn is removed* — when Limits cancels a spawn at the limit and the spawning plugin then calls remove() on that never-added entity (Greenhouses did this), Paper still fires EntityRemoveEvent, and Limits decremented the island's count for a mob that was never counted. The counter dropped below the real population and the next spawn slipped through, ending at e.g. 4/3 ghasts. Removals of entities that never entered the world are now ignored. Reported on Discord. [[PR #297](https://github.com/BentoBoxWorld/Limits/pull/297)]
    🔺 Recount note: if you run Greenhouses (or any plugin that removes entities it failed to spawn), entity counts on affected islands may have drifted low under previous versions. Run the admin recount command (/<gamemode> admin limits calc <player>) on affected islands, or have players trigger a recount, so counts match reality.
    ### Compatibility ✔️ BentoBox API 2.7.1 ✔️ Paper Minecraft 1.21.11 - 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. There are no config or locale changes in this release. If you use entity limits with Greenhouses, see the recount note above. ### Legend 🔺 Special attention needed — read the note before/after upgrading. ## What's Changed * 🔺 Do not decrement entity counts for entities that never entered the world by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/297 * Fix block count/limit placeholders registered with minecraft: namespace by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/299 Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.30.0...…
    17 downloads
  3. 1.30.0Aug 15, 2026
    Two bug fixes for counting accuracy: bees stored in hives are no longer trapped when the island is at its bee limit, and kelp columns now count and limit correctly instead of drifting upward forever. Bees can always leave their hives* — a bee exiting a hive is not a new bee: its count was already subtracted when it entered. Previously the exit was still limit-checked, so on an island at its bee limit the release was cancelled, the server kept the bee as a hive occupant and retried every few ticks — spamming "Bee spawning limited to ..." at nearby players and trapping the stored bees forever. Hive exits are now exempt from the limit check while still being counted, so the enter/exit cycle stays net-zero. If a placed hive item carries stored (never-counted) bees, the island can end slightly over its limit — that state simply blocks further spawns and breeding until the population drops. [[PR #295](https://github.com/BentoBoxWorld/Limits/pull/295)] 🔺 Kelp columns count correctly* — kelp growth converts the old KELP tip into a KELP_PLANT stalk segment with no Bukkit event, so the old block was never decremented and kelp counts only ever grew, eventually blocking placement at phantom totals. KELP_PLANT is now normalised to KELP (like BAMBOO_SAPLING/BAMBOO): growth is count-neutral, breaking the base of a column decrements every segment, KELP participates in stacked-plants-count-as-one, and variant names such as KELP_PLANT or CHIPPED_ANVIL used as config limit keys now configure the working canonical limit. Fixes [#294](https://github.com/BentoBoxWorld/Limits/issues/294)
    🔺 Recount note: if your islands use kelp limits, stored kelp counts may have drifted upward under previous versions. Run the admin recount command (/<gamemode> admin limits calc <player>) on affected islands — or have players trigger a recount — so counts match reality.
    ### Compatibility ✔️ BentoBox API 2.7.1 ✔️ Paper Minecraft 1.21.11 - 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. There are no config or locale changes in this release. If you limit kelp, see the recount note above. ### Legend 🔺 Special attention needed — read the note before/after upgrading. ## What's Changed * Let bees exit hives even when the island is at its bee limit by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/295 * 🔺 Count KELP_PLANT as KELP so kelp columns count and limit correctly by @tastybento in https://github.com/BentoBoxWorld/Limits/commit/029297e259… Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.29.1...…
    47 downloads
  4. 1.29.1Jul 23, 2026
    Patch release fixing entity-count accuracy around breeding and recounts. Thanks to @daniel-skopek for the fixes! Natural breeding now respects entity limits* — breeding triggered without a player (bees, foxes, villager breeders, etc.) previously bypassed limit checks entirely, letting counts grow past the configured limit. All breeding is now checked; op/bypass-permission players are still exempt. When a breed attempt is blocked at the limit, both parents go on a breeding cooldown so auto-breeders don't retry every tick, and no chat spam is sent to nearby players unless a player actually fed the animals. Fixed a tracking-map leak for players* — players were mistakenly added to the entity-island tracking map and never removed. Boats now included in recounts* — the admin recount command counted minecarts but skipped boats, zeroing boat counts that the live tracker then couldn't recover. ### Compatibility ✔️ BentoBox API 2.7.1 ✔️ Paper Minecraft 1.21.11 - 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 — there are no config or locale changes in this release. ## What's Changed * Fix entity overcount from natural breeding and recount gaps by @daniel-skopek in https://github.com/BentoBoxWorld/Limits/pull/290 * Suppress hit-limit spam from natural breeding and add breed-path tests by @tastybento in https://github.com/BentoBoxWorld/Limits/pull/291 Full Changelog: https://github.com/BentoBoxWorld/Limits/compare/1.29.0...…
    56 downloads
  5. 1.29.0Jul 10, 2026
    ## Release Highlights ⚙️ Block group limits* — one shared limit across a set of block materials (e.g. pistons + sticky pistons, or grass/dirt/farmland), so players can't dodge a limit by converting between related blocks. ⚙️ ItemsAdder & Oraxen custom block limits* — limit custom blocks straight from blocklimits using their namespaced ids. ⚙️ Team member limit permissions (opt-in) — team members' `island.limit.` permissions can now contribute to the island's limits, not just the owner's. Reached-limits placeholders & API* — new %Limits_<gamemode>_island_reached_limits% placeholders show which limits are maxed, closing the oldest open ticket (2018!). ⚙️ Stackable plants can count as one* — optionally count a whole sugar cane or bamboo stalk as a single plant. 🔡 Manual material/entity name translations* — locale files can now translate the block/entity names shown in the GUI and hit-limit messages. ⚙️ Silent enforcement option* — turn off hit-limit chat messages while keeping limits enforced. Item frames and paintings can now be limited* — item frames, glow item frames, and paintings are no longer excluded from entitylimits. Fix: phantom entity counts from portaled mobs* — mobs travelling through portals no longer leave stuck counts behind (e.g. Chicken 10/10 with no chickens on the island). ### Compatibility ✔️ BentoBox API 2.7.1 ✔️ Paper Minecraft 1.21.11 - 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. New config options do not appear in an existing config.yml automatically — add the keys you want from the list below, or delete the config to regenerate it. 6. You should be good to go!
    ⚙️ Config note: New options this release: blockgrouplimits (+ -nether/-end overrides), apply-member-limit-perms, show-limit-messages, stacked-plants-count-as-one, and ItemsAdder/Oraxen ids as blocklimits keys. Also, log-limits-on-join now defaults to `false` — set it back to true if you relied on that console output.
    🔺 Recount note: After adding a block group or changing stacked-plants-count-as-one, run a recount (/<gamemode> limits recount) so stored counts match the new counting rules.
    🔡 Locale note: There is a new island.limits.panel.block-group-name-syntax key, plus optional island.limits.materials / island.limits.entities sections for manual name translations. Existing locale files keep working without changes.
    ### Legend - 🔡 locale files may need to be regenerated or updated. - ⚙️ config options have been removed, renamed, or added. - 🔺 special attention needed. --- ## New Features ### ⚙️ Block Group Limits [[PR #287](https://github.com/BentoBoxWorld/Limits/pull/287)] Fixes [#12](https://github.com/BentoBoxWorld/Limits/issues/12) The block-side counterpart to entity group limits: define a named group with an icon, a member material list, and a shared limit under blockgrouplimits. The counts of every member are summed against the group limit, so players can't bypass a limit by converting between related blocks (grass → dirt) or splitting across variants (piston / sticky piston). Per-environment limit overrides are supported via blockgrouplimits-nether / blockgrouplimits-end, and individual blocklimits still apply on top. Also resolves [#84](https://github.com/BentoBoxWorld/Limits/issues/84) and [#132](https://github.com/BentoBoxWorld/Limits/issues/132). ### ⚙️ ItemsAdder & Oraxen Custom Block Limits [[PR #288](https://github.com/BentoBoxWorld/Limits/pull/288)] Fixes [#176](https://github.com/BentoBoxWorld/Limits/issues/176) Custom blocks from ItemsAdder and Oraxen can now be limited using their ids directly in the existing blocklimits section (including the -nether/-end and worlds: overrides) — e.g. "iafestivities:christmas/christmas_tree/green_orb": 5 or "oraxen:caveblock": 10. Enforcement uses each plugin's own place/break events via BentoBox hooks, registered only when the plugin is installed. A recount preserves stored custom-block counts rather than rescanning them. ### ⚙️ Team Member Limit Permissions (opt-in) [[PR #282](https://github.com/BentoBoxWorld/Limits/pull/282)] Fixes [#241](https://github.com/BentoBoxWorld/Limits/issues/241) With apply-member-limit-perms: true, a team member's <gamemode>.island.limit.* permissions are merged into the island's limits when they log in — the highest value wins. The owner's login still recalculates limits from scratch, then merges in the permissions of any online team members. Coop and trusted players are not team members and their permissions never apply. Off by default, so existing behaviour is unchanged. ### Reached-Limits Placeholders & Public API [[PR #284](https://github.com/BentoBoxWorld/Limits/pull/284)] Fixes [#2](https://github.com/BentoBoxWorld/Limits/issues/2) New %Limits_<gamemode>_island_reached_limits% placeholder (plus _overworld / _nether / _end variants) lists every limited block, entity, and entity group that is at or over its limit — no more querying every key to find out what's maxed. Other addons can use the matching Limits#getReachedLimits(User, GameModeAddon, Environment) API. This closes the oldest open ticket in the tracker, filed in 2018 via ASkyBlock. ### ⚙️ Stackable Plants Can Count as One [[PR #285](https://github.com/BentoBoxWorld/Limits/pull/285)] Fixes [#53](https://github.com/BentoBoxWorld/Limits/issues/53) With stacked-plants-count-as-one: true, a sugar cane or bamboo stalk counts as a single plant no matter how tall it grows — only the base segment is counted. Default false keeps the current per-segment counting. Run a recount after changing this option. ### 🔡 Manual Material/Entity Name Translations [[PR #286](https://github.com/BentoBoxWorld/Limits/pull/286)] Fixes [#188](https://github.com/BentoBoxWorld/Limits/issues/188) Locale files can now translate the block and entity names shown in the limits GUI and in hit-limit chat messages, using optional island.limits.materials / island.limits.entities sections keyed by lowercase Bukkit names. Anything not listed falls back to the automatic prettified English name, so existing locale files need no changes. ### ⚙️ Silence Limit Messages [[PR #283](https://github.com/BentoBoxWorld/Limits/pull/283)] Fixes [#65](https://github.com/BentoBoxWorld/Limits/issues/65) New show-limit-messages option (default true). Set it to false to enforce limits silently — placements and spawns are still blocked, but players receive no hit-limit message. ### Item Frames, Glow Item Frames, and Paintings Can Be Limited [[PR #281](https://github.com/BentoBoxWorld/Limits/pull/281)] Fixes [#66](https://github.com/BentoBoxWorld/Limits/issues/66) Item frames and paintings were previously excluded because scan-based counting couldn't track their removal paths. Now that entity counting is persistent and event-driven, all three can be configured under entitylimits like any other entity. Also closes the duplicate [#143](https://github.com/BentoBoxWorld/Limits/issues/143). --- ## Bug Fixes ### Phantom Entity Counts Left by Portaled Mobs [[PR #289](https://github.com/BentoBoxWorld/Limits/pull/289)] Entity limits could show full (e.g. Chicken 10/10) with far fewer — or zero — of that mob actually on the island, and the count would creep back up after a recount. Mobs travelling through portals never fire a removal event in the source world on Paper, which left stale tracking entries that swallowed the mob's real removal later. Portal transfers are now handled without expecting that event, so counts stay accurate. ### Copper Golem Build Blocked at Copper Chest Limit [[PR #279](https://github.com/BentoBoxWorld/Limits/pull/279)] Fixes [#276](https:/
    28 downloads
  6. 1.28.4Jul 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](https://github.com/BentoBoxWorld/Limits/pull/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](https://github.com/BentoBoxWorld/Limits/pull/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 * 🐛 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...…
    23 downloads
  7. 1.28.3Jun 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](https://github.com/BentoBoxWorld/Limits/pull/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](https://github.com/BentoBoxWorld/Limits/pull/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

    * 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...…
    24 downloads
  8. 1.28.2Jun 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](https://github.com/BentoBoxWorld/Limits/issues/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](https://github.com/BentoBoxWorld/Limits/pull/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](https://github.com/BentoBoxWorld/Limits/issues/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](https://github.com/BentoBoxWorld/Limits/pull/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](https://github.com/BentoBoxWorld/Limits/pull/265)] Beds, doors, and other multi-block structures were being counted twice on placement. Fixes [#86](https://github.com/BentoBoxWorld/Limits/issues/86). ### 🐛 Golem and snowman block removal [[PR #266](https://github.com/BentoBoxWorld/Limits/pull/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](https://github.com/BentoBoxWorld/Limits/issues/127). ### 🐛 Entity counting fixes [[PR #267](https://github.com/BentoBoxWorld/Limits/pull/267)] Resolves three entity-counting bugs in the entity limit listener. ### 🐛 Spawn eggs no longer consumed at the limit [[PR #268](https://github.com/BentoBoxWorld/Limits/pull/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](https://github.com/BentoBoxWorld/Limits/issues/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...…
    25 downloads
  9. 1.28.1Apr 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...…
    95 downloads
  10. 1.28.0Apr 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

    * 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...…
    41 downloads
  11. 1.27.1Limits 1.27.1Sep 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...…
    154 downloads
  12. 1.26.0Limits 1.26.0Dec 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...…
    169 downloads

Similar projects

Plugin →