StoragePeek icon

StoragePeek -----

Visualize any container's content with a sleek, lag-free 3D holographic display



StoragePeek v1.1.7 - Massive Performance, Security & Garbage Collection Optimizations
[​IMG]
  • Critical Security & Anti-Duplication Fixes:
    • Anti-Duplication Session Validation (isValid): Implemented a strict live validation check on every tick and before any slot click (Quick-Take, Quick-Deposit, Hand Swap). If a chest block is broken (becomes AIR), if the chested entity dies, or if claim permissions expire, the preview HUD immediately closes and all interactions are blocked. This fully patches a critical item duplication exploit!
    • Real-time Claims Protection Re-evaluation: Protection hooks are now dynamically re-validated during the active session to block peeking instantly if a player's trust is revoked mid-session.
  • Critical Performance & Garbage Collection Optimizations:
    • Allocation-Free Eye Locations: Replaced all `player.getEyeLocation()` calls (which allocate a new `Location` object every tick) with a pre-allocated vector-based approach using `player.getLocation(reusableLoc)` and adding the player's eye height in-place.
    • Bypassed Redundant Trigonometry: Trigonometric viewport axes calculation (`buildAxes()`) is now run exactly once at the transition to Focus Mode (sneaking), rather than being computed on every single tick.
    • Raycast Blocks-Only Mode: If `enable-entities` is disabled or the list is empty, the raycast dynamically falls back to `rayTraceBlocks()`, completely skipping expensive entity bounding box queries on the server.
    • YAML Configuration Memory Cache: Cached all parsed configuration options inside typed memory variables in `StoragePeek.java`. This entirely bypasses nested YAML map traversals (such as `combat-culling.enabled`) on high-frequency raycasting ticks.
    • Garbage-Free Raycasting Loop: Eliminated loop-level lambda instantiations and computeIfAbsent() map lookups during raycast checking to ensure zero micro-allocations on active ticks.
    • Batched Visibility Updates (Task Reduction): Batched all initial passenger entity visibility calls (`player.showEntity`) into a single tick-delayed runnable on display generation. This reduces scheduler overhead during chest openings from ~40+ independent runnables down to exactly 1!
    • Skipped Redundant Animations: Bypassed scheduling individual tick-delayed scale-up runnables for item quantities and durability bars when spawning the display, as they are already handled by the primary batched `animateScaleUp` runnable.
    • Cached BlockData for Durability Bars: Cached parsed `BlockData` instances for concrete colors (`BLACK_CONCRETE`, `LIME_CONCRETE`, etc.) in the static display data cache, completely eliminating expensive `Bukkit.createBlockData(...)` registry lookups on every inventory update tick.
    • Cached Double Chest Midpoints: Resolved container center coordinates (including double chest midpoints) once at session creation and cached them in a field, completely bypassing heavy `block.getState()` and left/right side chest state retrievals on active ticks.
    • Lazy Hand-Held Shulker Evaluation: Raycast checks for hand-held Shulker boxes now evaluate `player.isSneaking()` first, eliminating redundant `getItemInMainHand()` and `getItemInOffHand()` ItemStack wrapper allocations on every tick. Off-hand is lazy-evaluated only if the main hand doesn't contain a shulker.
    • Unfocused HUD Transformation Culling: Prevented sending redundant HUD scale/rotation update packets (`setTransformation`) during active peeking ticks. When `focus-mode` is inactive, the HUD uses `Billboard.CENTER` to automatically face the player client-side, making server-side transform updates completely obsolete and saving 20 packets/sec per active player!
    • Cached Disabled Worlds Culling: Redefined the disabled worlds check to use a cached set of loaded World instances (updated dynamically on WorldLoad/WorldUnload events) instead of performing a string conversion `.toLowerCase()` world name check on every tick for every online player, completely eliminating thousands of tick-level string allocations!
    • Allocation-Free Entity Coordinate Resolution: Optimized the retrieval of entity center locations by utilizing Spigot's non-allocating `entity.getLocation(tempLoc)` signature, avoiding per-tick `Location` object allocations when peeking entity containers.
    • Precalculated Layout Offset Mapping: Replaced expensive `parent.getTransformation()` lookups with precalculated relative layout offsets during inventory syncing, bypassing reflection/NMS lookups and preventing massive transient JOML vector and quaternion object allocations.
    • Stationary Player Raycasting Skip: When peeking, if a player is standing still and not rotating their head, the session bypasses the wall-clipping raytrace and look orientation mathematics, drastically saving server CPU while preserving the smooth floating breathing animation.
  • ️ Smarter Claim & Permission Checking (Zero In-Game CPU Waste):
    • Dynamic Protection Check Caching: The plugin now skips checking claims protection hook checks (`canAccess`) and permission checks (`hasContainerPermission`) if the player is looking at the same block or entity as their active session. Claim status and player permission lookups are now only computed when a session starts.
    • Eliminated BlockState Snapshot Overhead: When the `hide-when-empty` setting is enabled, the raycasting loop now directly queries the cached session inventory (`isEmpty()`) instead of repeatedly invoking `block.getState()` to construct expensive tile entity snapshot copies on every tick.
  • Combat Integration & Reflection Caching:
    • DeluxeCombat Reflection Caching: Cached the `DeluxeCombatAPI` instance to avoid executing `dcApiConstructor.newInstance()` via reflection on every tick, which generated massive GC pressure.
    • Combat Hook Reflection Caching: Cached intermediate manager classes (`CombatLogX`, `CombatTagPlus`, `PvPManager`) to avoid repeated reflection lookups on high-frequency raycasting ticks.
  • New Premium Features & Double Chest Centering:
    • Double Chest Auto-Centering: Dynamic centering of the 3D HUD between the left and right block halves of a Double Chest by resolving their block coordinates midpoint, eliminating offset visual previews.
    • Hand-held Shulker Box Preview (Hand Peeking): Sneaking while holding a Shulker Box in the main hand or off-hand now spawns a floating 3D preview of its contents in front of the player, without placing it on the ground.
    • Real-Time Hand Inventory Persistence: Full interactive quick actions support (TAKE, DEPOSIT, swap filter, sorting) on hand-held Shulker previews. Changes are immediately written and serialized back to the held item's NBT block state.
  • Maintenance & General Cleanup:
    • Removed Dead Code: Deleted legacy unused classes (`PeekManager.java` and `MathUtils.java`) to slim down the plugin jar size.
    • Auto-Enable on Join Fix: Added a new config option (`auto-enable-on-join`) to automatically re-enable StoragePeek for players when they join the server, resetting any previous `/storagepeek toggle` disablement, with safe initialization handling.
    • Startup NullPointerException Fix: Fixed a critical NullPointerException during plugin initialization when `auto-enable-on-join` was enabled. Config cache loading logic has been safely reordered to execute after all manager instantiations (specifically `disabledKey`), ensuring a crash-free startup.
    • Premium HUD & Particle Customization: Made item quantity displays, durability bars, durability bar colors (high, medium, low thresholds), and particle types/counts for both Ender and Rich themes fully toggleable and customizable inside config.yml.
    • Combat Culling Bypass Permission: Added support for a new permission storagepeek.bypass.combat which allows admins, moderators, or VIPs to peek containers during active combat.
    • Disabled Worlds Blacklist: Added a world blacklist option (disabled-worlds) in the configuration to completely deactivate StoragePeek peeking HUDs in specific worlds (e.g., PvP worlds or game lobbies).
    • Custom Quick-Actions Click Buttons: Introduced config values (quick-actions.left-click / right-click) to customize which mouse button triggers the TAKE vs DEPOSIT quick-actions when aiming at item slots.
Upgrade to StoragePeek v1.1.7 for a lag-free, secure holographic experience! Support us on Discord if you love the plugin!
----------, Jun 18, 2026
Resource Information
Author:
----------
Total Downloads: 135
First Release: May 1, 2026
Last Update: Jun 18, 2026
Category: ---------------
All-Time Rating:
1 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings