Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ServerBooster v3.5.1 - Security Hardening, Block Limiter Fix & Performance Improvements #6

Discussion options

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 lookupclearHolograms now uses getEntitiesByClass instead 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 CompletableDeferred pattern with proper suspendCancellableCoroutine, 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.isValid alongside isDead checks before applying optimizations.
  • Event priorities corrected in Hologram Manager — Item spawn and player drop events changed from MONITOR (observe-only) to HIGH priority,
    following Bukkit event contract.

📦 Other Changes

  • Config data classes use immutable lists — World lists in configuration models are now List instead of MutableList, 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 ChunkPosition class and redundant entity.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-salt value in config.yml on 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.
You must be logged in to vote

Replies: 0 comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
1 participant

AltStyle によって変換されたページ (->オリジナル) /