Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
AntiXRAY
Ghost-ore anti-xray for Paper/Purpur 1.21.x
Version 1.1.0 · Minecraft 1.21.x · Java 21 · Server-side
AntiXRAY takes a different approach to fighting X-Ray cheats: instead of hiding real ores, it floods the client with realistic fake ore veins and geodes. Fake ores are sent only for base blocks (stone / deepslate / netherrack) that are fully hidden behind opaque blocks, so legitimate players almost never see them. When a cheater digs toward a fake vein and exposes an adjacent block, the decoy reverts to plain stone. X-Ray users end up wasting time chasing veins that turn to dust.
How it works (and what it does not do)
Please read this before deciding if AntiXRAY fits your server:
- Fake ores are client-side decoys. They are placed only in fully hidden blocks, so an X-Ray user sees a cave full of "signals", but any ore they see actually exposed to air/caves is guaranteed real (decoys are never exposed).
- This plugin is noise + troll obfuscation, not true hiding: real ores are still sent to the client normally. It does not remove or mask real ore data. If your priority is to make real ores invisible to X-Ray, this is not that kind of plugin.
- What it does well: it makes bulk X-Ray scanning noisy and frustrating, punishes blind digging toward decoys, and needs no external dependencies.
Features
- Fake ore veins with vanilla-like vein sizes, per-ore weights and Y ranges, for the Overworld (diamond, iron, gold, lapis, coal, copper, redstone, emerald) and the Nether (ancient debris, nether gold, quartz).
- Fake amethyst geodes with configurable shell/middle/inner layers and budding amethyst.
- Placement modes:
VEINS(realistic clusters),DENSITYorPERCENT(scatter). - Deterministic seeding:
WORLD(same for everyone) orPER_PLAYER. - Exposure-aware reverts: decoys revert to real blocks on break, placement, explosions and pistons.
- Per-world control via enabled/disabled world lists.
- Bypass permission so trusted players can see the real world.
- Async computation with a per-tick send budget to control load.
- Runs entirely in memory — no database, no files, no web server.
Commands
| Command | Description | Permission |
|---|---|---|
/antixray reload |
Reload the configuration | antixray.admin |
/antixray debug |
Toggle debug output | antixray.admin |
/antixray flush |
Flush cached spoof data | antixray.admin |
/antixray info |
Show status/info | antixray.admin |
Permissions
| Node | Description | Default |
|---|---|---|
antixray.admin |
Access to /antixray admin commands |
op |
antixray.bypass |
See real blocks (no fake ores sent) | false |
Configuration
Highlights of config.yml:
general:
enabled: true
debug: false
radius:
mode: "CHUNKS" # CHUNKS or BLOCKS
chunks: 4 # 4 = 9x9 = 81 chunks around the player
updates:
refresh-interval-ticks: 60
max-chunks-per-tick: 4
max-blockchanges-per-tick: 8000
async-compute: true
randomization:
seed-mode: "WORLD" # WORLD (shared) or PER_PLAYER
overworld:
enabled: true
base-blocks: [STONE, DEEPSLATE]
fake-ores:
DIAMOND_ORE:
stone-variant: DIAMOND_ORE
deepslate-variant: DEEPSLATE_DIAMOND_ORE
weight: 2
min-vein-size: 2
max-vein-size: 8
min-y: -64
max-y: 16
# ... iron, gold, lapis, coal, copper, redstone, emerald ...
placement:
mode: "VEINS" # VEINS | DENSITY | PERCENT
veins-per-chunk: 60
fake-geodes:
enabled: true
chance-per-chunk: 0.10
min-radius: 3
max-radius: 5
nether:
enabled: true
base-blocks: [NETHERRACK]
# ancient debris / nether gold / nether quartz, sparse veins
worlds:
enabled-worlds: [] # empty = all worlds
disabled-worlds: [world_the_end]
triggers:
on-block-place: true
on-explosion: true
on-piston: true
Each ore entry controls its own vein size and Y range so decoys mimic vanilla
distribution. Higher veins-per-chunk and max-blockchanges-per-tick mean more
convincing noise but more work per tick — tune to your hardware.
Installation
- Requires Paper or Purpur 1.21.x and Java 21.
- Drop the JAR into
plugins/and start the server once to generateconfig.yml. - Adjust ore weights, placement and world lists, then run
/antixray reload.
Dependencies
None required — AntiXRAY runs on the Paper API alone.
Optional: PlayerSettings (soft dependency) — when present, plugin messages follow each
player's chosen language (bundled English and Portuguese; server default via locale in
config.yml).
Support / Source
Source code: https://github.com/henriquescrrrr/carrageis-antixray


