Sueta

MineWatchAntiXray | Advanced Anti-Xray Plugin | 1.21.X

0.1.4

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

·Plugin
  1. 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​
    1 download
  2. 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)
    217 downloads
  3. 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.
    78 downloads
  4. 0.1.1bStats integration and bug fixesNov 11, 2025
    Added bStats integration for plugin analytics, fixed console flood bug on legacy versions.
    62 downloads
  5. 0.1.0Nov 5, 2025
    51 downloads

Similar projects

Plugin →