— Added FREECAM_RAPID_TP for correct detection of rapid teleport FreeCam (Meteor) instead of using STATIC_BODY
— Added FREECAM_PUNISHMENT for separate and clear logging of kicks and bans based on score
— AntiFreeCam: movement packets are now processed on the Netty thread; a main-thread task is scheduled only when a suspicious jump is actually detected (was ~20 tasks/sec per player → near zero), big TPS win on populated servers
— AntiFreeCam: client-position state made thread-safe (volatile); interaction checks now use the freshest position with no 1-tick delay
— AntiFreeCam: snap-back is now idempotent — no more double teleport/velocity in the same tick
— AntiXRay: fixed a pending-chunk counter leak that could permanently freeze ore hiding for a player after an async error
— AntiXRay: removed per-block config lookups in the chunk-mask and reveal hot loops, plus redundant world/Location allocations — lower CPU under heavy chunk loading
— Added FREECAM_RAPID_TP for correct detection of rapid teleport FreeCam (Meteor) instead of using STATIC_BODY
— Added FREECAM_PUNISHMENT for separate and clear logging of kicks and bans based on score
— Improved logging system performance by using a single writer instead of creating a new one per line
— Fixed potential race condition in log writing
— Fixed incorrect FreeCam punishment logs being marked as distance detections
— Replaced deprecated kick method with modern API
— Removed duplicate methods and cleaned up code
— Added proper file closing on plugin disable
— Added config validation to ensure correct order of warn < kick < tempban, with fallback to defaults if invalid
— Fixed RapidTP detection using wrong type
— Optimized entity search to use nearby entities instead of scanning the whole world
— Fixed bypass players not updating in real time with LuckPerms changes
— Removed unused imports
— Fixed critical AntiXRay bug where chunk processing could permanently stop
— Added limit of 8 async chunk tasks per player
— Added instant revealing of nearby ores when mining
— Added reload() method for full module restart
— Fixed log file not closing on plugin disable
— Fixed /nguard reload not restarting module tasks properly
— Fixed /nguard bypass to execute commands instead of just printing them
— Replaced deprecated OfflinePlayer usage with non-blocking alternative
— Removed unnecessary deprecation suppression
— Added /nguard clear <player> command to reset history and FreeCam score
— Added clear command to plugin usage in plugin.yml