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
blocklimitsusing 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/10with no chickens on the island).
Compatibility
✔️ BentoBox API 2.7.1
✔️ Paper Minecraft 1.21.11 - 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.
- New config options do not appear in an existing
config.ymlautomatically — add the keys you want from the list below, or delete the config to regenerate it. - You should be good to go!
⚙️ Config note: New options this release:
blockgrouplimits(+-nether/-endoverrides),apply-member-limit-perms,show-limit-messages,stacked-plants-count-as-one, and ItemsAdder/Oraxen ids asblocklimitskeys. Also,log-limits-on-joinnow defaults tofalse— set it back totrueif 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-syntaxkey, plus optionalisland.limits.materials/island.limits.entitiessections 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
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 and #132.
⚙️ ItemsAdder & Oraxen Custom Block Limits
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)
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
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
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
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
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
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.
Bug Fixes
Phantom Entity Counts Left by Portaled Mobs
[PR #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
Building a copper golem places a copper chest without a normal block-place event, letting players exceed a COPPER_CHEST limit. The golem build is now cancelled when the island is at that limit.
⚙️ Quieter Join Logging by Default
log-limits-on-join now defaults to false — on servers with many permission-based limits it flooded the console on every join. Set it to true if you want the logging back for debugging.
Other Improvements
- The no-place-event block helpers (used for the copper golem's chest) now respect
ignore-center-block, matching normal placements at the island center.
What's Changed
- ⚙️ Quieten permission-limit join logging by default by @tastybento in #278
- Cancel copper golem build when at COPPER_CHEST limit by @tastybento in #279
- Allow item frames, glow item frames, and paintings to be limited by @tastybento in #281
- ⚙️ Add show-limit-messages config option to silence limit notifications by @tastybento in #283
- ⚙️ Add option to count stackable plants as a single plant by @tastybento in #285
- Add reached-limits placeholders and public API by @tastybento in #284
- ⚙️ Add opt-in support for team members' limit permissions by @tastybento in #282
- 🔡 Add optional manual material/entity name translations in locale files by @tastybento in #286
- ⚙️🔡 Add block group limits by @tastybento in #287
- ⚙️ Add ItemsAdder and Oraxen custom block limits by @tastybento in #288
- Fix phantom entity counts left by portaled mobs by @tastybento in #289
Full Changelog: 1.28.4...1.29.0