MineWatchAntiXray | Advanced Anti-Xray Plugin | 1.21.X icon

MineWatchAntiXray | Advanced Anti-Xray Plugin | 1.21.X -----

The most advanced detection plugin for identifying potential X-ray users.




Performance optimizations
  1. DecoyManager.handleBlockChange() — O(nm) → O(1) average
  • Problem: Iterated through all players and all decoys on every block change
  • Fix: Added spatial index (world → chunk → entries) for O(1) lookups
  • Impact: Scales to many players/decoys without lag
  1. DecoyManager.handleChunkUnload() — optimized
  • Problem: Iterated through all registries
  • Fix: Uses spatial index for direct chunk lookup
  • Impact: Faster chunk unload handling
  1. SuspicionManager chunk comparison — fixed
  • Problem: Used chunk.equals() which can be unreliable
  • Fix: Compare world, X, Z explicitly
  • Impact: More reliable same-chunk detection
Memory leak fixes
  1. SuspicionProfile chunk reference leak
  • Problem: Stored Chunk objects, preventing world unloading
  • Fix: Store chunk coordinates (world name, X, Z) and look up on demand
  • Impact: Worlds can unload properly, reducing memory usage
  1. DecoyManager staff rate limit cleanup
  • Problem: staffPlacements map grew unbounded for offline staff
  • Fix: Clean up empty queues and remove on disconnect
  • Impact: Prevents memory growth over time
Error handling improvements
  1. PlacedOreStore.saveSync() error handling
  • Problem: Used printStackTrace() without context
  • Fix: Added error message before stack trace
  • Impact: Better error visibility
Thread safety and null safety
  1. Added null checks
  • Added null checks for world/chunk access in multiple places
  • Defensive programming for edge cases
  1. Thread safety verified
  • ConcurrentHashMap used appropriately
  • Synchronized methods on SuspicionProfile
  • Volatile flags for state management
Scalability improvements
  • Spatial indexing: Decoy lookups are now O(1) instead of O(n)
  • Memory efficiency: No more chunk reference leaks
  • Cleanup: Automatic cleanup of unused data structures
  • Performance: Optimized hot paths (block changes, chunk unloads)
----------, Nov 28, 2025

Problem: The code used "commands.history-open" but the messages.yml key is "commands.history.open". When the key wasn't found, it returned an empty string, so only the prefix showed.

Fix: Changed the message path from "commands.history-open" to "commands.history.open" to match the messages.yml structure.
----------, Nov 18, 2025

Added bStats integration for plugin analytics, fixed console flood bug on legacy versions.
----------, Nov 11, 2025

Resource Information
Author:
----------
Total Downloads: 373
First Release: Nov 5, 2025
Last Update: Nov 28, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings