-
-
Notifications
You must be signed in to change notification settings - Fork 0
ServerBooster v3.5.1 - Security Hardening, Block Limiter Fix & Performance Improvements #6
SrCodexStudio
announced in
Announcements
-
ServerBooster v3.5.1
Major stability and security update with 25+ improvements across the entire plugin.
🔧 Bug Fixes
- Block Limiter off-by-one fixed — Limits now work correctly. A limit of 4 allows exactly 4 blocks, not 3. This affected all category limits (hoppers,
chests, crafting tables, enchanting tables, etc.), custom material limits, and entity placement limits (item frames, paintings). - Block Limiter cache poisoning fixed — Previously, after a denied placement, the count cache could store incorrect values for up to 5 seconds,
causing additional false denials. Cache is now properly invalidated on every placement attempt. - Block Limiter deny message now shows accurate count — The message no longer includes the temporarily placed block in its count.
- Hologram checksum migration — Items stacked before this update are now automatically migrated to the new checksum format without data loss.
Previously, updating could reset stacked items to 1.
🔒 Security Improvements
- Hologram item checksum hardened — Stack integrity checksums now use a unique per-server salt, preventing PDC manipulation exploits that could allow
item duplication. - Hopper ground item pickup race condition patched — Added UUID-based locking to prevent two hoppers from processing the same ground item
simultaneously. - Hopper statistics are now thread-safe — Transfer counters migrated to atomic operations.
- Redstone tick limiter no longer holds block references in queue — Queued throttled updates now store coordinates instead of direct block references,
preventing potential issues with unloaded chunks.
⚡ Performance Optimizations
- NMS NamespacedKey cached — The frozen entity tag key is now created once at startup instead of on every entity check, eliminating thousands of
unnecessary object allocations per optimization cycle. - TPS access optimized — The plugin now uses Paper's native TPS API directly instead of falling back to NMS reflection.
- Entity Optimizer dead entity cleanup — Added periodic cleanup of frozen entity IDs for entities that no longer exist, preventing unbounded memory
growth on long-running servers. - Hologram clear uses targeted entity lookup —
clearHologramsnow usesgetEntitiesByClassinstead of iterating all world entities.
🛡️ Stability Improvements
- Coroutine lifecycle completely reworked — The plugin scope is now properly cancelled with
cancelAndJoin()on shutdown, ensuring all async
operations complete cleanly before the plugin disables. Previously, coroutines could continue running briefly after shutdown. - Orphan coroutine scope removed from commands — The command handler now shares the plugin's managed scope instead of creating its own untracked
scope. - Villager Optimizer main-thread bridge rewritten — Replaced
CompletableDeferredpattern with propersuspendCancellableCoroutine, fixing potential
task leaks on coroutine cancellation. - Entity Optimizer error handling fixed — Exceptions in coroutines are now properly propagated instead of being silently converted to cancellation
signals. - CancellationException properly re-thrown — Fixed multiple catch blocks across Entity Optimizer and Villager Optimizer that were swallowing
cancellation exceptions, which could break structured concurrency. - Entity validity checks added — Batch entity processing now verifies
entity.isValidalongsideisDeadchecks before applying optimizations. - Event priorities corrected in Hologram Manager — Item spawn and player drop events changed from
MONITOR(observe-only) toHIGHpriority,
following Bukkit event contract.
📦 Other Changes
- Config data classes use immutable lists — World lists in configuration models are now
Listinstead ofMutableList, preventing accidental
modification at runtime. - Tab completion filtered by permissions — Players now only see commands they have permission to use in tab suggestions.
- Removed dead code — Cleaned up unused
ChunkPositionclass and redundantentity.remove()call after event cancellation.
Compatibility
- Minecraft: 1.17 - 1.21.x
- Server Software: Paper, Spigot
- Java: 17+
Upgrade Notes
- Drop-in replacement for any 3.x version. No configuration changes required.
- Stacked items from previous versions will be automatically migrated on first load.
- The plugin generates a
checksum-saltvalue inconfig.ymlon first startup — do not modify this value.
This discussion was created from the release ServerBooster v3.5.1 - Security Hardening, Block Limiter Fix & Performance Improvements.
Beta Was this translation helpful? Give feedback.
All reactions
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment