Overview

HalosAntiXray

HalosAntiXray protects your Minecraft server against X-Ray and ESP cheating with three independent layers: Anti X-Ray, Anti ESP, and Fake Ores with detection scoring. This page covers every option in config.yml and how to tune it.

For commands and permissions, see the Commands & Permissions page.


Table of Contents


Anti X-Ray

Prevents X-Ray clients from seeing ore blocks. Each entry maps a list of ores to a single replacement block.

Invalid ore or replacement names are logged as warnings on startup and skipped.

{% hint style="info" %} Match the replacement to the surrounding terrain (stone for the stone layer, deepslate for the deepslate layer, netherrack for the Nether). Mismatched replacements create visible patches. {% endhint %}


Anti ESP

Hides container-style blocks (chests, furnaces, hoppers, spawners, etc.) from players until those blocks become visible to them.

Pattern matching

Pattern
Matches

chest

Exact match only β€” chest itself, not trapped_chest or ender_chest

*_bed

Every bed colour (white_bed, orange_bed, …) but not bedrock

*_door

Every door variant (oak_door, iron_door, …)

*bed*

Anything containing bed β€” including bedrock

Patterns matching zero block types are logged as warnings on startup. Invalid names without wildcards are warned about and skipped.

{% hint style="warning" %} Anti ESP is more expensive than Anti X-Ray. Only add blocks that aren't generated naturally in bulk β€” adding common natural blocks (stone, dirt) will severely impact server performance. {% endhint %}


Fake Ores

Generates decoy ore clusters to detect X-Ray cheaters. Cheaters who try to mine these decoys reveal themselves.

Option
Description

enabled

Master switch for fake ore generation.

view-distance

Radius (in chunks) around the player where fake ores are active.

{% hint style="warning" %} Disabling fake-ores.enabled also disables detection scoring. The detection layer depends on fake ores being active. {% endhint %}

Detection & Alerts

Option
Description

detection.enabled

Toggles detection scoring and staff alerts.

low-confidence

Score threshold for a "possible cheater" alert. Lower = more sensitive, more false positives.

high-confidence

Score threshold for a "likely cheater" alert.

alerts.default-enabled

Default alert preference for staff. Each player can override their own via /hax alerts.

alerts.check-interval

How often (in seconds) the plugin re-evaluates player scores for alerting.

Tuning:

  • Too many false alerts? Raise the thresholds.

  • Suspected cheaters slipping through? Lower the thresholds.

Adjust one threshold at a time and give the server a day or two of activity before re-tuning.

Per-World Generation

Fake ore generation is configured per world. Only worlds listed and marked enabled: true receive fake ores. World names are matched case-insensitively.

Option
Description

stone-ore-type

Ore variant used at stone-layer heights (overworld).

deepslate-ore-type

Ore variant used at deepslate-layer heights. Optional β€” omit to use stone-ore-type everywhere.

ore-type

Single ore type for non-overworld worlds (e.g. Nether) without stone/deepslate variants.

vein-size

Cluster size. Higher = larger veins.

min-height

Minimum Y level for generation.

max-height

Maximum Y level for generation.

rarity

Spawn frequency from 0.0 to just under 1.0. Lower = rarer.

{% hint style="danger" %} Never set rarity to 1.0 or higher. This will freeze the fake-ore generator. Treat the valid range as 0.0 to 0.99. {% endhint %}

{% hint style="info" %} Mirror vanilla ore distributions when picking heights β€” diamonds at Y=80 look wrong, diamonds at Y=-50 look natural. {% endhint %}


Bypass System

Per-player bypass flag β€” when enabled, that player sees the unfiltered world (all three protection layers skipped). Useful for staff verification and trusted players you don't want flagged.

There is no config option for bypass; it's managed entirely through /hax toggle (see Commands & Permissions). Bypass state is persisted via the configured player-data storage and survives restarts.


Threads

Performance tuning per subsystem.

Option
Recommended
Purpose

fake-ore-generator

1/8 of CPU cores (1/4 for higher view-dist.)

Threads for fake ore generation.

ghost-block-ticker

1/4 of CPU cores

Threads for ongoing block updates.

outgoing-packet-handler

1/2 of CPU cores

Threads for outbound packet processing.

force-async-block-checks

false

See warning below.

{% hint style="danger" %} force-async-block-checks: Disabled by default on Minecraft versions below 1.13 because older Bukkit, Spigot, and Paper builds are not thread-safe. Forcing this on pre-1.13 servers causes ghost blocks and undefined behaviour. Use at your own risk. {% endhint %}


Player Data Storage

The plugin persists per-player flags (bypass status, alert preferences) between sessions.

Backend
Notes

sqlite

Efficient at any player count. Recommended for production.

yaml

Human-readable, easy to hand-edit, but rewrites the entire file on each change. Use only at small scale.

Unrecognized values fall back to sqlite with a warning logged.

{% hint style="warning" %} Switching backends does not migrate data. Players fall back to defaults until re-flagged. {% endhint %}


Ghost Block Environment

Throttles for how aggressively the plugin processes block updates each tick. These are per-player limits.

Option
Description

unchecked-ghost-blocks-per-tick

Max new Anti X-Ray block updates processed per tick, per player.

tickable-blocks-per-tick

Max ongoing Anti ESP block updates processed per tick, per player.

Raise if players see delayed ore-reveal on chunk load. Lower if you see tick lag on busy worlds.


Folia Compatibility

HalosAntiXray supports Folia. On Folia:

  • threads.fake-ore-generator and threads.ghost-block-ticker are ignored β€” Folia uses its own region-based scheduler.

  • threads.outgoing-packet-handler still applies.

  • No additional configuration required.


Admin Command

Default is /hax. Change this if it conflicts with another plugin. See Commands & Permissions for full command and permission details.


Quick Reference: Disabling Features

To disable…
Set…

Anti X-Ray for an ore

Remove that ore from anti-xray.replacements

Anti ESP for a block

Remove that block from anti-esp.anti-esp-blocks

Fake ore generation

fake-ores.enabled: false

Detection alerts

fake-ores.detection.enabled: false

Fake ores in one world

fake-ores.worlds.<name>.enabled: false

All staff alerts by default

fake-ores.detection.alerts.default-enabled: false

Protection for one player

/hax toggle <player> (persistent β€” survives restart)

Last updated