All Mods Resource Packs Data Packs Shaders Modpacks Plugins
MinerTrack Anti XRay

MinerTrack Anti XRay

by Author87668 • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Banner

MinerTrack Anti-XRay

MinerTrack Anti-XRay

Modrinth Downloads Hangar Downloads CurseForge Downloads

Dev Build CI Latest Version GitHub issues GitHub latest commit GPLv3 license

Image

MinerTrack is a plugin that will really help you catch those naughty players using Xray on your server in a different way from other Anti-Xray plugins. This plugin doesn't hide ores, as hiding ores requires a lot of resources.

So how does it work?

To catch Xray, MinerTrack uses an advanced algorithm that combines several factors like ore scarcity, the amount of ores mined in a certain period, the player’s path to ores, and many other aspects.

But can't people still use Xray?

Yes and no. Indeed, a player using Xray has two options:

  1. Keep using Xray but behave like a normal player to avoid being caught. They can't get more ores than a normal player or they’ll be caught by MinerTrack.
  2. Uninstall their Xray or be caught.

Why choose MinerTrack over other AntiXray options?

Compared to Paper Anti-XRay and Orebfuscator:

  • MinerTrack is lightweight.
  • MinerTrack's engine is innovative.
  • MinerTrack detects Xray users, leaving it to you to decide on sanctions.

Compared to other AntiXray solutions:

  • MinerTrack supports the latest Minecraft version.
  • MinerTrack has been tested on servers with about 20 simultaneous players, with very few false positives (default config).
  • MinerTrack is free.

Look what users have to say:

Assessments

Assessment 1

Assessment 2

Assessment 3

Assessment 4

Image

  • Detect XRayer
  • Automatically handle cases when a player's X-Ray violation level reaches a threshold
  • Automatically reduce the violation level when the player's behavior normalizes
  • When the player is mining in a cave, they will not be detected incorrectly
  • Highly configurable profiles

Image

  • /mtrack notify <message> - Send alerts to staff
  • /mtrack verbose - Enable Detailed Mode and notify staff with it enabled whenever a player’s violation level increases
  • /mtrack check <player> - Check a player’s violation history
  • /mtrack reset <player> - Reset a player's violation record
  • /mtrack help - Get plugin help
  • /mtrack kick <player> <reason> - Kick a player with a specific reason
  • /mtrack reload - Reload the plugin’s configuration
  • /mtrack update - Check for plugin updates
  • /mtrack logs <log name.log> - View a MinerTrack log file

Image

  • minertrack.bypass - Bypass X-Ray detection
  • minertrack.notify - Receive notifications and verbose information
  • minertrack.checkupdate - Receive update information and use /mtrack update
  • minertrack.use - Access the root command /mtrack
  • minertrack.check - Use /mtrack check
  • minertrack.kick - Use /mtrack kick
  • minertrack.logs - Use /mtrack logs
  • minertrack.help - Use /mtrack help
  • minertrack.reset - Use /mtrack reset
  • minertrack.sendnotify - Use /mtrack notify
  • minertrack.verbose - Use /mtrack verbose
  • minertrack.reload - Use /mtrack reload

Image

  1. Download the latest version of MinerTrack from Modrinth.
  2. Place the .jar file into the plugins or mods folder.
  3. Restart the server to generate the configuration and necessary files.

Image

As plugin:

  • Java 17 or higher
  • Paper, Purpur, Folia or compatible forks (1.18 or newer) Not Spigot!

As Fabric mod:

  • Java 17 or higher
  • Fabric 1.18 or newer
  • Fabric API
  • LuckPerms 5.0.0+ (If you need permission node function)

As Forge mod:

  • Java 17 or higher
  • Forge 1.18 or newer

As NeoForge mod:

  • Java 17 or higher
  • NeoForge 1.20.1 or newer

Image

If you encounter any issues or have suggestions for new features, feel free to reach out via Discord or open an issue on the plugin’s GitHub repository.

View Source: https://github.com/At87668/MinerTrack

Report Issue: https://github.com/At87668/MinerTrack/issues

Pull Requset: https://github.com/At87668/MinerTrack/pulls

Visit Wiki: https://minertrack.pages.dev/wiki/

Join Discord: https://discord.gg/MzTea2W9cb

Support Project: https://patreon.com/Author87668/join


Plugin Usage

bStats

Mod Usage

Servers & Players

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3 26.2 26.1.x +4
Folia Paper Purpur
20h ago 1
26.3 26.2 26.1.x +4
Fabric
20h ago 1
26.3 26.2 26.1.x +2
Neoforge
20h ago 1
26.3 26.2 26.1.x +4
Forge
20h ago 1
26.3 26.2 26.1.x +4
Folia Paper Purpur
20h ago 1
26.3 26.2 26.1.x +4
Fabric
20h ago 1
26.3 26.2 26.1.x +4
Forge
20h ago 1
26.3 26.2 26.1.x +2
Neoforge
20h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur
20h ago 1
26.2 26.1.x 1.21.x +3
Fabric
20h ago 1
26.2 26.1.x 1.21.x +3
Forge
20h ago 1
26.2 26.1.x 1.21.x +1
Neoforge
20h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur
20h ago 1
26.2 26.1.x 1.21.x +3
Fabric
20h ago 1
26.2 26.1.x 1.21.x +3
Forge
20h ago 1
26.2 26.1.x 1.21.x +1
Neoforge
20h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur
20h ago 1
26.2 26.1.x 1.21.x +3
Fabric
20h ago 1
26.2 26.1.x 1.21.x +3
Forge
20h ago 1
26.2 26.1.x 1.21.x +1
Neoforge
20h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur
20h ago 1
26.2 26.1.x 1.21.x +1
Neoforge
20h ago 1
26.2 26.1.x 1.21.x +3
Forge
20h ago 1
26.2 26.1.x 1.21.x +3
Fabric
20h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur
20h ago 1
26.2 26.1.x 1.21.x +3
Fabric
20h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur
20h ago 1
26.2 26.1.x
Fabric
20h ago 1
26.2 26.1.x 1.21.x +3
Folia Paper Purpur
20h ago 1
26.1.x 1.21.x 1.20.x +2
Folia Paper Purpur
20h ago 1
26.1.x 1.21.x 1.20.x +2
Folia Paper Purpur
20h ago 1
26.1.x 1.21.x 1.20.x +2
Folia Paper Purpur
20h ago 1
26.1.x 1.21.x 1.20.x +2
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Folia Paper Purpur
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Folia Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Folia Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Folia Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Folia Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Folia Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Folia Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Folia Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Paper Purpur Spigot
20h ago 1
1.21.x 1.20.x 1.19.x +1
Bukkit Paper Purpur Spigot
20h ago 1
### New features

  • /mt check <player> and /mt reset <player> now work on players who are **not currently on the server**. Previously the target was resolved through a name-to-UUID lookup that only queried online players, so both commands failed with player-not-found as soon as the player logged off — even though their violation levels and mining state were still held in memory.
  • ViolationEngine now maintains a bidirectional name↔UUID history (knownPlayerIds, knownPlayerNames), populated on every violation increase. This index is deliberately **not** cleared by resetViolation, so a player who has just been reset stays addressable by name.
  • Each platform resolves a target name through: engine history → platform-side name cache → online lookup → offline profile (Bukkit only, guarded by hasPlayedBefore() / isOnline()).
  • Tab completion for check and reset offers the union of online players and known player names. kick remains online-only.
  • /mt reset <player> now also clears the mining-behaviour counters (mining path, vein count, vein clusters, air exposure) and the placed-block / artificial-air tracking maps, in addition to zeroing the violation level. Resetting only the violation counter left a stale mining path behind, which caused the next rare-ore break to immediately re-evaluate the old path and push the violation level back up.

### Fixed BUG

  • /mt kick <player> no longer broadcasts the kick message and the lightning effect for a player who is not online. Since name resolution became offline-aware, the command would otherwise report success and kick nobody.
  • Forge: listener registration no longer relies on the legacy event bus, which has been removed in recent Forge versions. Lifecycle, mining and server-tick listeners are now registered on the EventBus 7 static BUS fields, which had silently stopped firing.
  • Forge / NeoForge: mod resources (config.yml, language.yml, and the Configuration/*.yml group files) are now loaded through the mod-file resource API instead of the classloader, which could not see them inside the mod JAR.
  • Forge / NeoForge: a missing bundled resource or a missing YAML file is now reported as a warning and treated as an empty config, instead of throwing and aborting startup. The same guard was applied to the core resource loader.
  • Fabric: permission-gated commands now work for OP players on Minecraft 26.1+ without LuckPerms installed. The MC 26.1+ permission model is detected once at class-load time, and the bypass and verbose checks now share a single OP-level check.

### Other Changed

  • pack.mcmeta is now bundled into the mod JAR, making it a valid resource pack.
  • Resource filtering during the build is forced to UTF-8 to keep non-ASCII config content intact.
  • Replaced a non-ASCII em-dash in a mods.toml comment.
### New features

  • /mt check <player> and /mt reset <player> now work on players who are **not currently on the server**. Previously the target was resolved through a name-to-UUID lookup that only queried online players, so both commands failed with player-not-found as soon as the player logged off — even though their violation levels and mining state were still held in memory.
  • ViolationEngine now maintains a bidirectional name↔UUID history (knownPlayerIds, knownPlayerNames), populated on every violation increase. This index is deliberately **not** cleared by resetViolation, so a player who has just been reset stays addressable by name.
  • Each platform resolves a target name through: engine history → platform-side name cache → online lookup → offline profile (Bukkit only, guarded by hasPlayedBefore() / isOnline()).
  • Tab completion for check and reset offers the union of online players and known player names. kick remains online-only.
  • /mt reset <player> now also clears the mining-behaviour counters (mining path, vein count, vein clusters, air exposure) and the placed-block / artificial-air tracking maps, in addition to zeroing the violation level. Resetting only the violation counter left a stale mining path behind, which caused the next rare-ore break to immediately re-evaluate the old path and push the violation level back up.

### Fixed BUG

  • /mt kick <player> no longer broadcasts the kick message and the lightning effect for a player who is not online. Since name resolution became offline-aware, the command would otherwise report success and kick nobody.
  • Forge: listener registration no longer relies on the legacy event bus, which has been removed in recent Forge versions. Lifecycle, mining and server-tick listeners are now registered on the EventBus 7 static BUS fields, which had silently stopped firing.
  • Forge / NeoForge: mod resources (config.yml, language.yml, and the Configuration/*.yml group files) are now loaded through the mod-file resource API instead of the classloader, which could not see them inside the mod JAR.
  • Forge / NeoForge: a missing bundled resource or a missing YAML file is now reported as a warning and treated as an empty config, instead of throwing and aborting startup. The same guard was applied to the core resource loader.
  • Fabric: permission-gated commands now work for OP players on Minecraft 26.1+ without LuckPerms installed. The MC 26.1+ permission model is detected once at class-load time, and the bypass and verbose checks now share a single OP-level check.

### Other Changed

  • pack.mcmeta is now bundled into the mod JAR, making it a valid resource pack.
  • Resource filtering during the build is forced to UTF-8 to keep non-ASCII config content intact.
  • Replaced a non-ASCII em-dash in a mods.toml comment.
### New features

  • /mt check <player> and /mt reset <player> now work on players who are **not currently on the server**. Previously the target was resolved through a name-to-UUID lookup that only queried online players, so both commands failed with player-not-found as soon as the player logged off — even though their violation levels and mining state were still held in memory.
  • ViolationEngine now maintains a bidirectional name↔UUID history (knownPlayerIds, knownPlayerNames), populated on every violation increase. This index is deliberately **not** cleared by resetViolation, so a player who has just been reset stays addressable by name.
  • Each platform resolves a target name through: engine history → platform-side name cache → online lookup → offline profile (Bukkit only, guarded by hasPlayedBefore() / isOnline()).
  • Tab completion for check and reset offers the union of online players and known player names. kick remains online-only.
  • /mt reset <player> now also clears the mining-behaviour counters (mining path, vein count, vein clusters, air exposure) and the placed-block / artificial-air tracking maps, in addition to zeroing the violation level. Resetting only the violation counter left a stale mining path behind, which caused the next rare-ore break to immediately re-evaluate the old path and push the violation level back up.

### Fixed BUG

  • /mt kick <player> no longer broadcasts the kick message and the lightning effect for a player who is not online. Since name resolution became offline-aware, the command would otherwise report success and kick nobody.
  • Forge: listener registration no longer relies on the legacy event bus, which has been removed in recent Forge versions. Lifecycle, mining and server-tick listeners are now registered on the EventBus 7 static BUS fields, which had silently stopped firing.
  • Forge / NeoForge: mod resources (config.yml, language.yml, and the Configuration/*.yml group files) are now loaded through the mod-file resource API instead of the classloader, which could not see them inside the mod JAR.
  • Forge / NeoForge: a missing bundled resource or a missing YAML file is now reported as a warning and treated as an empty config, instead of throwing and aborting startup. The same guard was applied to the core resource loader.
  • Fabric: permission-gated commands now work for OP players on Minecraft 26.1+ without LuckPerms installed. The MC 26.1+ permission model is detected once at class-load time, and the bypass and verbose checks now share a single OP-level check.

### Other Changed

  • pack.mcmeta is now bundled into the mod JAR, making it a valid resource pack.
  • Resource filtering during the build is forced to UTF-8 to keep non-ASCII config content intact.
  • Replaced a non-ASCII em-dash in a mods.toml comment.
### New features

  • /mt check <player> and /mt reset <player> now work on players who are **not currently on the server**. Previously the target was resolved through a name-to-UUID lookup that only queried online players, so both commands failed with player-not-found as soon as the player logged off — even though their violation levels and mining state were still held in memory.
  • ViolationEngine now maintains a bidirectional name↔UUID history (knownPlayerIds, knownPlayerNames), populated on every violation increase. This index is deliberately **not** cleared by resetViolation, so a player who has just been reset stays addressable by name.
  • Each platform resolves a target name through: engine history → platform-side name cache → online lookup → offline profile (Bukkit only, guarded by hasPlayedBefore() / isOnline()).
  • Tab completion for check and reset offers the union of online players and known player names. kick remains online-only.
  • /mt reset <player> now also clears the mining-behaviour counters (mining path, vein count, vein clusters, air exposure) and the placed-block / artificial-air tracking maps, in addition to zeroing the violation level. Resetting only the violation counter left a stale mining path behind, which caused the next rare-ore break to immediately re-evaluate the old path and push the violation level back up.

### Fixed BUG

  • /mt kick <player> no longer broadcasts the kick message and the lightning effect for a player who is not online. Since name resolution became offline-aware, the command would otherwise report success and kick nobody.
  • Forge: listener registration no longer relies on the legacy event bus, which has been removed in recent Forge versions. Lifecycle, mining and server-tick listeners are now registered on the EventBus 7 static BUS fields, which had silently stopped firing.
  • Forge / NeoForge: mod resources (config.yml, language.yml, and the Configuration/*.yml group files) are now loaded through the mod-file resource API instead of the classloader, which could not see them inside the mod JAR.
  • Forge / NeoForge: a missing bundled resource or a missing YAML file is now reported as a warning and treated as an empty config, instead of throwing and aborting startup. The same guard was applied to the core resource loader.
  • Fabric: permission-gated commands now work for OP players on Minecraft 26.1+ without LuckPerms installed. The MC 26.1+ permission model is detected once at class-load time, and the bypass and verbose checks now share a single OP-level check.

### Other Changed

  • pack.mcmeta is now bundled into the mod JAR, making it a valid resource pack.
  • Resource filtering during the build is forced to UTF-8 to keep non-ASCII config content intact.
  • Replaced a non-ASCII em-dash in a mods.toml comment.


### Fixed BUG
  • Can't run MinerTrack-related commands in the console on the Fabric platform if LuckPerms isn't installed.


  • Happy using~*


### Fixed BUG
  • Can't run MinerTrack-related commands in the console on the Fabric platform if LuckPerms isn't installed.


  • Happy using~*


### Fixed BUG
  • Can't run MinerTrack-related commands in the console on the Fabric platform if LuckPerms isn't installed.


  • Happy using~*


### Fixed BUG
  • Can't run MinerTrack-related commands in the console on the Fabric platform if LuckPerms isn't installed.


  • Happy using~*
### What's News
#### Fixed BUG
  • The NeoForge platform jar doesn't include mods.toml, so mods can't load in 1.20.x.
  • The config file doesn't generate correctly when there are other mods that include config.yml.
  • Comments get cleared when filling in missing configuration items.


  • Happy using~*
### What's News
#### Fixed BUG
  • The NeoForge platform jar doesn't include mods.toml, so mods can't load in 1.20.x.
  • The config file doesn't generate correctly when there are other mods that include config.yml.
  • Comments get cleared when filling in missing configuration items.


  • Happy using~*
### What's News
#### Fixed BUG
  • The NeoForge platform jar doesn't include mods.toml, so mods can't load in 1.20.x.
  • The config file doesn't generate correctly when there are other mods that include config.yml.
  • Comments get cleared when filling in missing configuration items.


  • Happy using~*
### What's News
#### Fixed BUG
  • The NeoForge platform jar doesn't include mods.toml, so mods can't load in 1.20.x.
  • The config file doesn't generate correctly when there are other mods that include config.yml.
  • Comments get cleared when filling in missing configuration items.


  • Happy using~*
MinerTrack 2.1.1.0 is here! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Translation file wasn't released properly.
  • The Minecraft version required in neoforge.mods.toml is incorrect.

### Data Collection


Joining the data collection program is optional, it helps us better understand usage and make improvements.

We won't collect any private data.


  • Enjoy~*
MinerTrack 2.1.1.0 is here! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Translation file wasn't released properly.
  • The Minecraft version required in neoforge.mods.toml is incorrect.

### Data Collection


Joining the data collection program is optional, it helps us better understand usage and make improvements.

We won't collect any private data.


  • Enjoy~*
MinerTrack 2.1.1.0 is here! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Translation file wasn't released properly.
  • The Minecraft version required in neoforge.mods.toml is incorrect.

### Data Collection


Joining the data collection program is optional, it helps us better understand usage and make improvements.

We won't collect any private data.


  • Enjoy~*
MinerTrack 2.1.1.0 is here! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Translation file wasn't released properly.
  • The Minecraft version required in neoforge.mods.toml is incorrect.

### Data Collection


Joining the data collection program is optional, it helps us better understand usage and make improvements.

We won't collect any private data.


  • Enjoy~*
Forge/NeoForge bugs fixed in MinerTrack 2.1.0.1! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Fixed the issue where permission nodes haven't registered correctly.
  • Fixed the issue where the /mt notify command couldn't send messages in some minecraft versions.

### Package Optimization

  • Now package the JAR separately for each platform.


  • Enjoy~*
Forge/NeoForge bugs fixed in MinerTrack 2.1.0.1! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Fixed the issue where permission nodes haven't registered correctly.
  • Fixed the issue where the /mt notify command couldn't send messages in some minecraft versions.

### Package Optimization

  • Now package the JAR separately for each platform.


  • Enjoy~*
Forge/NeoForge bugs fixed in MinerTrack 2.1.0.1! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Fixed the issue where permission nodes haven't registered correctly.
  • Fixed the issue where the /mt notify command couldn't send messages in some minecraft versions.

### Package Optimization

  • Now package the JAR separately for each platform.


  • Enjoy~*
Forge/NeoForge bugs fixed in MinerTrack 2.1.0.1! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### BUG Fixes

  • Fixed the issue where permission nodes haven't registered correctly.
  • Fixed the issue where the /mt notify command couldn't send messages in some minecraft versions.

### Package Optimization

  • Now package the JAR separately for each platform.


  • Enjoy~*
Forge/NeoForge support is in MinerTrack 2.1.0.0! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### Performance Optimizations

  • Replaced the original Method.invoke() with MethodHandle for improved performance

### Localization

  • Added Russian translation
  • Added German translation

### Multi-Platform Support

  • Added support for Forge and NeoForge

### Bug Fixes

  • Fixed console Verbose mode toggle bug


  • Enjoy~*
Forge/NeoForge support is in MinerTrack 2.1.0.0! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### Performance Optimizations

  • Replaced the original Method.invoke() with MethodHandle for improved performance

### Localization

  • Added Russian translation
  • Added German translation

### Multi-Platform Support

  • Added support for Forge and NeoForge

### Bug Fixes

  • Fixed console Verbose mode toggle bug


  • Enjoy~*
Forge/NeoForge support is in MinerTrack 2.1.0.0! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### Performance Optimizations

  • Replaced the original Method.invoke() with MethodHandle for improved performance

### Localization

  • Added Russian translation
  • Added German translation

### Multi-Platform Support

  • Added support for Forge and NeoForge

### Bug Fixes

  • Fixed console Verbose mode toggle bug


  • Enjoy~*
Forge/NeoForge support is in MinerTrack 2.1.0.0! 🚀

  • Support the Project**

MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:


Thank you so much to every supporter! ❤️


## What's News

### Performance Optimizations

  • Replaced the original Method.invoke() with MethodHandle for improved performance

### Localization

  • Added Russian translation
  • Added German translation

### Multi-Platform Support

  • Added support for Forge and NeoForge

### Bug Fixes

  • Fixed console Verbose mode toggle bug


  • Enjoy~*
MinerTrack 2.0.0.0 is officially released! 🚀

This is the **biggest update** since the inception of the MinerTrack project!
I have invested significant time and effort into a thorough refactoring and optimization to deliver a better experience. I hope you enjoy this update!

  • Support the Project**
MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:

Thank you so much to every supporter! ❤️


## What's News

### Code Refactoring
  • Optimized the original Bukkit-only structure into a platform-agnostic core with a lightweight platform loader, facilitating easier multi-platform expansion.
  • Completely rewrote legacy code to improve performance.

### Configuration Optimization
  • Migrated configuration naming conventions from Bukkit-specific standards to general Minecraft standards for better multi-platform compatibility.
> ⚠️ Breaking Change: If you are upgrading from v1, you must reconfigure your settings after the update!

### Detection Optimization
  • Introduced new reference parameters to reduce false postive.

### Update Checker Optimization
  • Now checking for version updates by platform.

### Fabric Support
  • Version Compatibility**
  • Now supports Fabric for Minecraft 1.18+.

  • Mod Compatibility**
  • Now supports worlds and blocks added by mods. (Effective only in the Mod version)

  • Permission Node Support**
  • Integrated LuckPerms-compatible permission API to support permission nodes on Fabric.

### Bug Fixes
  • Fixed an issue where the /mtrack reset command failed to correctly reset VL on Fabric.
  • Fixed an issue where bypass permissions were not applied correctly.
  • Fixed an issue where the update checker ran on the Fabric main thread, causing server lag.
  • Fixed compatibility issues preventing operation on Fabric versions 1.18–1.21.11.
  • Fixed the issue where the updater didn't differentiate between channels.

  • Note: If you are upgrading from v1, you must reconfigure your settings after the update!**
Enjoy~
MinerTrack 2.0.0.0 is officially released! 🚀

This is the **biggest update** since the inception of the MinerTrack project!
I have invested significant time and effort into a thorough refactoring and optimization to deliver a better experience. I hope you enjoy this update!

  • Support the Project**
MinerTrack has not received any donations in the past year, and the number of GitHub Stars remains low. Your support is my greatest motivation to continue development!
If you appreciate this project, please consider supporting me via:

Thank you so much to every supporter! ❤️


## What's News

### Code Refactoring
  • Optimized the original Bukkit-only structure into a platform-agnostic core with a lightweight platform loader, facilitating easier multi-platform expansion.
  • Completely rewrote legacy code to improve performance.

### Configuration Optimization
  • Migrated configuration naming conventions from Bukkit-specific standards to general Minecraft standards for better multi-platform compatibility.
> ⚠️ Breaking Change: If you are upgrading from v1, you must reconfigure your settings after the update!

### Detection Optimization
  • Introduced new reference parameters to reduce false postive.

### Update Checker Optimization
  • Now checking for version updates by platform.

### Fabric Support
  • Version Compatibility**
  • Now supports Fabric for Minecraft 1.18+.

  • Mod Compatibility**
  • Now supports worlds and blocks added by mods. (Effective only in the Mod version)

  • Permission Node Support**
  • Integrated LuckPerms-compatible permission API to support permission nodes on Fabric.

### Bug Fixes
  • Fixed an issue where the /mtrack reset command failed to correctly reset VL on Fabric.
  • Fixed an issue where bypass permissions were not applied correctly.
  • Fixed an issue where the update checker ran on the Fabric main thread, causing server lag.
  • Fixed compatibility issues preventing operation on Fabric versions 1.18–1.21.11.
  • Fixed the issue where the updater didn't differentiate between channels.

  • Note: If you are upgrading from v1, you must reconfigure your settings after the update!**
Enjoy~
  • The version on the Alpha channel might be unstable.*
  • This version is for early testing; please report any issues promptly.*

### 2.0.0.0-alpha - v2 Rewrite (Multi-Platform & Config Reliability)

#### Major refactor

  • The plugin is being re-architected into a **platform-agnostic core** (common/, core/) with thin platform shims (bukkit/, fabric/).
  • All block / dimension identifiers now use the canonical Minecraft namespace format (minecraft:diamond_ore, minecraft:water, minecraft:air, minecraft:cave_air, minecraft:ancient_debris). World *folder* names in xray.worlds and the group file names (overworld, nether, end) are preserved — only the contents are normalized.
  • The Bukkit platform translates World.Environment to the canonical id at runtime, so the same config.yml works regardless of how the server admin named the on-disk folders.
  • The v1 code path under src/main/legacy/ is preserved for reference but is no longer wired into plugin.yml; BukkitPlatform is the only entry point.

#### Fabric Support
  • Now support Fabric on Minecraft 26.1+.

#### Config auto-completion (DONE)

  • v2 now auto-completes user config.yml and per-world Configuration/<group>.yml against the JAR defaults on startup, so upgrading the plugin no longer requires manual config.yml cleanup.
  • A new _config-version key in every YAML file (main config and each group file) drives an automatic **back-up-and-replace** upgrade path: when a user's version is older than the JAR's, the file is saved as <name>-<yyyy-MM-dd>.yml.bak and seeded with the JAR default. The merge then fills in any keys added between the user's version and the latest.
  • The merge step counts the number of leaf keys it added and logs a summary line, e.g. [Merger] config.yml: filled 5 missing key(s) from defaults. No log is emitted in the steady state, so logs stay quiet.
  • A separate Created <file> from default line is emitted on the first run when the user file doesn't exist yet.
  • A new eager load of group configs in BukkitPlatform.onEnable() ensures the per-world files are copied from the JAR on fresh install and the in-memory CoreConfig is populated before the first mining event.

#### Fixed BUG

  • v1 → v2 config migration: stale user config.yml would silently keep the old layout, causing v2 to fall back to defaults at the call sites without ever updating the file on disk. Root cause was a MemorySection ↔ Map mismatch between Bukkit's YamlConfiguration and the core merger's instanceof Map checks, plus a missing _config-version upgrade path on the main config. Both are now fixed.
  • Group config files were not being created on fresh install (only on the first mining event) — the eager loadGroupConfigs() call in BukkitPlatform.onEnable() fixes this.
  • /minertrack reload was serving the previous 5-second-cached config instead of the freshly-merged one — the cache is now explicitly cleared before reloading.

#### Other improvements

  • BukkitAdapter.reloadConfig() no longer calls plugin.reloadConfig(). v2 reads config.yml via the platform-agnostic ConfigMerger, not Bukkit's JavaPlugin#getConfig(), so the legacy reload call was a no-op.
  • The webhook custom-JSON template in config.yml had a stray quote ("world": %world%',); now properly quoted as "world": "%world%" so the payload is valid JSON.


  • Recommend to rebuild the config.yml and the Configuration/*.yml files after upgrading.*

  • The version on the Alpha channel might be unstable.*
  • This version is for early testing; please report any issues promptly.*

### 2.0.0.0-alpha - v2 Rewrite (Multi-Platform & Config Reliability)

#### Major refactor

  • The plugin is being re-architected into a **platform-agnostic core** (common/, core/) with thin platform shims (bukkit/, fabric/).
  • All block / dimension identifiers now use the canonical Minecraft namespace format (minecraft:diamond_ore, minecraft:water, minecraft:air, minecraft:cave_air, minecraft:ancient_debris). World *folder* names in xray.worlds and the group file names (overworld, nether, end) are preserved — only the contents are normalized.
  • The Bukkit platform translates World.Environment to the canonical id at runtime, so the same config.yml works regardless of how the server admin named the on-disk folders.
  • The v1 code path under src/main/legacy/ is preserved for reference but is no longer wired into plugin.yml; BukkitPlatform is the only entry point.

#### Fabric Support
  • Now support Fabric on Minecraft 26.1+.

#### Config auto-completion (DONE)

  • v2 now auto-completes user config.yml and per-world Configuration/<group>.yml against the JAR defaults on startup, so upgrading the plugin no longer requires manual config.yml cleanup.
  • A new _config-version key in every YAML file (main config and each group file) drives an automatic **back-up-and-replace** upgrade path: when a user's version is older than the JAR's, the file is saved as <name>-<yyyy-MM-dd>.yml.bak and seeded with the JAR default. The merge then fills in any keys added between the user's version and the latest.
  • The merge step counts the number of leaf keys it added and logs a summary line, e.g. [Merger] config.yml: filled 5 missing key(s) from defaults. No log is emitted in the steady state, so logs stay quiet.
  • A separate Created <file> from default line is emitted on the first run when the user file doesn't exist yet.
  • A new eager load of group configs in BukkitPlatform.onEnable() ensures the per-world files are copied from the JAR on fresh install and the in-memory CoreConfig is populated before the first mining event.

#### Fixed BUG

  • v1 → v2 config migration: stale user config.yml would silently keep the old layout, causing v2 to fall back to defaults at the call sites without ever updating the file on disk. Root cause was a MemorySection ↔ Map mismatch between Bukkit's YamlConfiguration and the core merger's instanceof Map checks, plus a missing _config-version upgrade path on the main config. Both are now fixed.
  • Group config files were not being created on fresh install (only on the first mining event) — the eager loadGroupConfigs() call in BukkitPlatform.onEnable() fixes this.
  • /minertrack reload was serving the previous 5-second-cached config instead of the freshly-merged one — the cache is now explicitly cleared before reloading.

#### Other improvements

  • BukkitAdapter.reloadConfig() no longer calls plugin.reloadConfig(). v2 reads config.yml via the platform-agnostic ConfigMerger, not Bukkit's JavaPlugin#getConfig(), so the legacy reload call was a no-op.
  • The webhook custom-JSON template in config.yml had a stray quote ("world": %world%',); now properly quoted as "world": "%world%" so the payload is valid JSON.


  • Recommend to rebuild the config.yml and the Configuration/*.yml files after upgrading.*

### 1.10.1.1 - Path Handling Fix
#### Fixed BUG
  • Path records are incorrectly cleared when players teleport.


Recommended to update.


  • Happy using~*
### 1.10.1.0 - Detection Improve

#### Detection Improvement

  • Add option to ignore artificial air.

#### Code Clear Up

  • Completely removed the code related to air monitor.

#### Configuration Item Changed

Before:
``yaml
cave:
air-threshold: 14 # When the number of air blocks reaches several, the player is considered to be in a cave?
CaveAirMultiplier: 5 # If cave air is found, regarded as how many ordinary air?
detection-range: 3 # 3 = 7x7x7, 2 = 5x5x5
check_skip_vl: true # VL add of whether or not to skip natural behavior
# Prevents players from manually creating air to bypass detection.
air-monitor:
enable: true # Enable or disable
min-path-length: 10 # Minimum digging path required to perform this detection.
air-ratio-threshold: 0.3 # Air percentage threshold (e.g., 0.3 for 30%).
violation-increase: 1 # The value of the increase in rating after each triggered violation.
violation-threshold: 5 # The number of ratings reached should be flagged as suspicion of deliberate creation of artificial air.
remove-time: 20 # How long to remove this record once (in minutes)
`

Now:
`yaml
cave:
air-threshold: 14 # When the number of air blocks reaches several, the player is considered to be in a cave?
CaveAirMultiplier: 5 # If cave air is found, regarded as how many ordinary air?
detection-range: 3 # 3 = 7x7x7, 2 = 5x5x5
check_skip_vl: true # VL add of whether or not to skip natural behavior
ignore-artificial-air: true # When true, ignore recently player-created air when checking for caves
artificial-air-remove-time: 20 # Minutes to consider broken blocks as artificial air
``


  • Recommend update to this version.**

  • Recommend to rebuild the config.yml*


  • Happy using~*
MinerTrack Anti XRay Icon
Download MinerTrack Anti XRay
Select game version
Select platform