AntiXray - A X-Ray Protection Plugin

Packet-level X-ray protection for Hytale — hide your ores from wall-hacks and catch the cheaters who dig for the fakes.
Back to Files

AntiXray-1.2.0.jar

File nameAntiXray-1.2.0.jar
Uploader
stoshestoshe
Uploaded
Jul 28, 2026
Downloads
4
Size
162.5 KB
File ID
8524190
Type
R
Release
Supported game versions
  • 0.5

What's new

AntiXray v1.2.0

The honeypot works now.

  Three separate bugs meant that on a normal world, obfuscation covered a fraction of what it claimed   and detection could barely fire at all. This release fixes all three, and splits the ore field into   camouflage and bait so that every valuable ore an X-ray user can see is a trap.


Fixed: obfuscation stopped a few seconds after a player joined

  • MaxTrapsPerPlayer capped a per-player list of every fake position at 40,000 — but at the default reach one player's field is roughly 100,000 positions
  • The cap was hit almost immediately, new chunks stopped being obfuscated, and protection only resumed in scraps as the client unloaded chunks
  • This is what "fake ores show up in random chunks, not the ones I'm standing in" actually was
  • The field is no longer stored. Which rock becomes a fake, which ore is masked, where a section's bait sits — all of it is a pure function of the block position and the surrounding terrain, identical for every player, so a break recomputes the answer instead of looking it up
  • Nothing per-player is kept but which chunk sections a client has already been sent

Fixed: MaxY left the surface unprotected

  • The old default of 128 sits below the surface on ordinary worlds — a player standing at y140 had everything at and above eye level untouched
  • Now 256
  • To be clear about what this knob is: it's a CPU limiter, not what keeps the surface clean. Every fake requires a fully-buried block, so exposed terrain is skipped no matter how high this is set. Lower it only on a strictly-underground server

Fixed: honeypots were nearly impossible to trip

  • The break handler checked whether the block was still fully enclosed — but it never is. To break a block you must be able to see its face, so the check rejected essentially every genuine hit
  • Traps are now recognised by position alone

New: the ore field has two tiers

The single FakeOrePalette split in two, and that split is what makes detection trustworthy:

CamouflageTrap
ConfigFakeOrePalette, FakeOreDensityTrapOrePalette, TrapChancePerSection
Orescommon metals (copper, iron)valuable ores (gold, mithril, …)
Densityhundreds per chunk~one per 12 sections
Mining near itrevealed before you reach itnever revealed
Breaking itnothinghoneypot hit

Real valuables are masked as plain rock and the camouflage field is common-only, so a cheater cannot tell bait from anything else — because there is nothing else.

Changed: honeypot hits are a rate, not a lifetime tally

  • Hits used to accumulate forever, so an honest miner who tunnelled blind into a trap once a month would eventually flag themselves
  • Hits are now counted inside HoneypotWindowSeconds (default 30 min), like the mining-rate heuristic already was
  • What separates a cheater isn't the total — it's how many they find in a short time
  • HoneypotFlagThreshold drops from 4 to 3 to suit the window

Server compatibility is now declared

  • manifest.json declares ServerVersion: ">=0.5.6 <0.6.0" instead of "\*"
  • The server enforces this itself: outside the range the plugin is refused at load with an incompatibility message, rather than half-working against an API it wasn't built for
  • Hytale 0.6.0 introduces native spectate, which replaces this plugin's custom follow-camera — the range deliberately stops before it
  • 1.0.0 and 1.1.0 declared "\*", so they will happily load on 0.6 and misbehave instead of refusing. Upgrade before you update the server

Also in this release

  • One source of truth for the version. The banner, panel title and update check all read the version the server parsed from manifest.json, which the build fills in from gradle.properties. A constant in the source could previously drift from the built jar and make the update check compare the wrong number
  • Status tab reports camouflage and trap ids separately (Ore ids resolved: 12 camouflage, 8 trap) — a non-zero camouflage count with zero traps means detection can't fire
  • MaxChunksPerTick raised from 8 to 16, so the field keeps up with a player walking
  • The debug Nearest traps tool reads the recomputed field instead of the removed position list
  • Portuguese translations for every new string (en\_us and pt\_br remain at full key parity)
  • A RELEASING.md checklist, since the in-game update check depends on the tag matching what the jar reports

Upgrading

  1. Replace AntiXray-1.1.0.jar with AntiXray-1.2.0.jar in your server's mods/ folder
  2. Restart

Config: two keys were added (TrapOrePalette, TrapChancePerSection, Detection.HoneypotWindowSeconds) and existing files pick up their defaults automatically — nothing was renamed or removed, and your suspicion data carries over.

Two defaults worth reviewing if your config.json pins them to the old values, because they are the fixes above:

  • Obfuscation.MaxY — set it to 256 unless your server is strictly underground
  • Obfuscation.FakeOrePalette — if yours is still \["Ore\_\*"\], the camouflage field includes valuables and every trap is buried under identical-looking bait, so detection will never fire. Narrow it to the common metals

Requires a Hytale server in the >=0.5.6 <0.6.0 range. Built and tested against 0.5.7.


  📖 Documentation   ·   Changelog

<sub>Requires a Hytale server. No client mod needed.</sub>

This mod has no additional files