MineWatchAntiXray | Advanced Anti-Xray Plugin | 1.21.X
0.1.4The most advanced detection plugin for identifying potential X-ray users.
0.1.4latest[USER REQUEST] Added Auto-Punish feature (optional and configurable of course)Dec 18, 2025 MineWatch AntiXray Version 0.1.4 Update - User Request Auto-Punishment System What's New Version 0.1.4 introduces a powerful Auto-Punishment System that allows you to automatically execute custom commands when players reach specific suspicion thresholds! Key Features: · Unlimited Punishment Tiers - Define as many thresholds as you want (3, 5, 10+) · Per-Threshold Session Tracking - Each threshold triggers independently once per session · Any Command - Execute kicks, bans, messages, broadcasts, or custom plugin commands · Smart Placeholders - {player}, {uuid}, {score}, {world}, {x}, {y}, {z} · Configurable Cooldowns - Control timing between punishment actions · Console Support - Prefix with "console:" to run as console · Hot Reload - All changes apply instantly with /antixray reload How It Works Each threshold is tracked independently per player. This enables true progressive punishment: Player reaches 50 suspicion → Warning message sent ✓ Player continues mining... Player reaches 75 suspicion → Player kicked ✓ Player rejoins and continues... Player reaches 100 suspicion → Temporary ban issued ✓ Click to expand... Each threshold can only trigger once per session, preventing spam while allowing multiple punishment tiers to execute.Configuration Basic Setup: Code (Text): auto-punish: enabled: true # Set to true to enable once-per-session: true # Each threshold triggers once per login cooldown-seconds: 300 # 5 minute cooldown between actions actions: - threshold: 50.0 commands: - "msg {player} &cWarning: Suspicious mining detected!" - "msg {player} &eYour suspicion score is {score}" - threshold: 75.0 commands: - "kick {player} Suspicious mining detected. Appeal at example.com" - threshold: 100.0 commands: - "tempban {player} 1d X-ray detection - Suspicion: {score}" - "broadcast &c{player} has been banned for suspicious mining." Advanced 6-Tier System: Code (Text): auto-punish: enabled: true once-per-session: true cooldown-seconds: 180 actions: - threshold: 35.0 commands: - "msg {player} &e
Mining pattern flagged" - threshold: 50.0 commands: - "msg {player} &6
Second warning! Score: {score}" - threshold: 70.0 commands: - "msg {player} &c
Final warning!" - "console:staffalert {player} reached 70 suspicion" - threshold: 85.0 commands: - "kick {player} Suspicious mining - Score: {score}" - threshold: 110.0 commands: - "tempban {player} 12h Repeated suspicious behavior" - threshold: 140.0 commands: - "ban {player} X-ray confirmed" - "broadcast &c{player} permanently banned" Placeholders · {player} - Player's username · {uuid} - Player's UUID · {score} - Current suspicion score · {world} - World name · {x} {y} {z} - Player coordinates Plugin Integrations LiteBans: Code (Text): - threshold: 90.0 commands: - "console:litebans:tempban {player} 1d Xray" Discord Webhooks: Code (Text): - threshold: 80.0 commands: - "console:discord send #alerts {player} banned (score: {score})" Staff Notifications Only: Code (Text): - threshold: 60.0 commands: - "console:staffmsg &e{player} flagged - Check /ax inspect {player}"
Important Notes · Disabled by default - You must set enabled: true in config · Test first - Start with warnings before enabling kicks/bans · Fully reloadable - Use /ax reload to apply config changes instantly · No tier limit - Add as many thresholds as needed · Each threshold independent - All tiers can trigger in one session Getting Started · Update to MineWatch-AntiXray-0.1.4.jar · Edit plugins/MineWatchAntiXray/config.yml · Scroll to the auto-punish section · Set enabled: true · Configure your thresholds and commands · Use /ax reload to apply changes · Monitor with /ax inspect <player> Download Version 0.1.4 Now!
Enjoying MineWatch? Leave a review!
Report bugs or suggest features in the discussion thread
0.1.3Many fixes and optimizations (read below)Nov 28, 2025 Performance optimizations · 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 · DecoyManager.handleChunkUnload() — optimized · Problem: Iterated through all registries · Fix: Uses spatial index for direct chunk lookup · Impact: Faster chunk unload handling · 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 · 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 · 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 · 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 · Added null checks · Added null checks for world/chunk access in multiple places · Defensive programming for edge cases · 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)0.1.2History command not displaying success messageNov 18, 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.0.1.1bStats integration and bug fixesNov 11, 2025 Added bStats integration for plugin analytics, fixed console flood bug on legacy versions.0.1.0Nov 5, 2025
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta