
Easy-to-use Xray detection plugin that alerts staff to excessive ore mining. Fully configurable!

VeinGuard is a lightweight plugin that helps server staff detect potential x-rayers. It tracks block breaks in real time for blocks defined in the configuration.
When a player exceeds the configured break limits, VeinGuard alerts staff via in-game messages, console logs, or a Discord webhook, enabling quick responses.
VeinGuard is simple, configurable, and designed to moderate X-ray abuse without impacting server performance.
⚠️ NOTICE: Not all planned features have been implemented yet!


Before installing VeinGuard, make sure your server meets the following requirements:
Download the latest VeinGuard .jar file from: Spigot, Modrinth, Hangar or Github.
Place the VeinGuard .jar file into your server’s plugins folder.
Start the server once to generate VeinGuard’s configuration files.
Edit the configuration files to your liking, then apply changes by:
/vg reload, or
Grant the permission
veinguard.adminto provide access to all features.
Grant the permission
veinguard.modto your moderators. This permission grants the following permissions:veinguard.notifyveinguard.bypassveinguard.commandveinguard.command.checkveinguard.command.helpveinguard.command.toggle-alertsveinguard.command.tracked-blocks.list
You are also free to ignore ^ these permissions and configure them as you please!
veinguard.notify
Receives in-game alert notifications when suspicious mining activity is detected.
veinguard.bypass
Exempts the player from all VeinGuard block tracking and detection checks.
veinguard.bypass.MATERIAL
Exempts the player from block-break tracking for a specific material. Material is CASE SENSITIVE!
Example: veinguard.bypass.DIAMOND_ORE
Intended for staff members or trusted roles.
veinguard.update
Allows the player to receive VeinGuard update notifications.
/veinguard or /vg
veinguard.command/veinguard help
veinguard.help/vg check <player> or /vg check <player> <page>
veinguard.command.check/vg msg <player> <message>
veinguard.command.msg/vg mute <player>
veinguard.command.muteveinguard.notify/vg toggle-alerts
veinguard.command.toggle-alerts/vg tracked-blocks <add|list|remove> <?list [page]> <material> <threshold> <pretty-name>
veinguard.command.tracked-blocks.add veinguard.command.tracked-blocks.list veinguard.command.tracked-blocks.remove/vg unmute <player>
veinguard.command.unmuteveinguard.notify/vg reset <player>
veinguard.command.reset/vg resetall
veinguard.command.resetallveinguard.command.reloadExplore the full VeinGuard Wiki for detailed information about the plugin, including commands, permissions, configuration options, installation guides, and more.
Find a bug or an error? Report it here on our issue tracker:
Get support and stay updated on VeinGuard updates:
VeinGuard uses bStats to collect anonymous usage data. Click to view plugin metrics: