Skip to content
BlazeZDocs

Nemesis

Packet-level anti-xray and anti-ESP that hides ores, bases, caves, structures and players from cheat clients.

Version
3.6.3
Runs on
Paper, Purpur, Folia
Minecraft
1.21+
Java
21+
Requires
PacketEvents
Works with
PlaceholderAPI, WorldEdit, FastAsyncWorldEdit, WorldGuard, ViaVersion, Geyser, TerraformGenerator
On this page

Nemesis edits the chunk and entity packets each player receives. The world on disk never changes. An x-ray client gets stone where your diamonds are, empty rock where your chests are, and nothing where other players stand behind a wall. A player only gets the real block or entity once they could actually see it, so legit players don't notice anything.

On top of the anti-xray core, Nemesis hides the underground from freecam mods, buries structures and caves in fake rock, keeps skybases out of long-range view, protects your world seed and can bury honeypot stashes that alert staff when someone tunnels straight to them.

Features#

What an x-ray client receives with and without Nemesis

Anti-xray

Ores, chests, spawners and other storage are swapped for rock or air in the chunk packet. The world on disk never changes. Anti-xray

Revealed by line of sight

A player gets the real block only once they can see it, and seeing one ore sends its whole vein, so legit mining feels normal. Anti-xray

Anti-freecam

Below each world's hide level, the underground is replaced with a fake floor until the player goes down there, so a freecam has nothing to look at. Anti-Freecam add-on. The fake floor

Entity hiding

Players and mobs a viewer can't see aren't sent to them, while name tags still draw through walls like vanilla. Hide Entity add-on. Entity hiding

Hidden blocks and their disguises

Matching disguises

A diamond in granite becomes granite, and particles at hidden blocks are cancelled, so nothing gives a position away. What gets hidden

Air pockets

Sealed rooms of fake air make an x-ray view look like caves everywhere, hiding the real ones in noise. Air pockets

Structures, dungeons and caves

Mineshafts, strongholds, trial chambers, monster rooms and natural caves are buried in rock until a player finds them. Hide Structures add-on. Structures

SeedVeil

Faked seed hashes, shifted ore veins, moved map markers and fake /locate answers stop clients from cracking your seed. On by default. SeedVeil

Spawn Stash honeypots

Buried rooms full of loot that nobody finds without x-ray or freecam. Tunnel to one and staff get an alert. Spawn Stash

Output of /nemesis stats

Built for busy servers

Chunk disguising runs on background threads, with performance modes that set how often and how far reveals are checked. Performance modes

Skybase protection

Builds above the ceiling level are cut out of distant chunks, so a freecam sweeping the map sees empty sky. Skybase protection

Camera guard

An optional texture pack turns the whole screen black the moment a player's camera leaves their body, with a quick check that catches clients faking the pack. Camera guard

Xray alerts

Staff are warned when a player mines too many valuable ores too fast, with the ore, the count and the time window. Xray alerts

Permissions#

PermissionLets a playerDefault
nemesis.adminUse every /nemesis command.OP
nemesis.vision.bypass.*See through every hiding feature. Includes the five below.OP
nemesis.vision.bypass.hide-oresSee real ores and hidden blocks.OP
nemesis.vision.bypass.hide-entitiesSee hidden players and mobs.OP
nemesis.vision.bypass.hide-structureSee real structures.OP
nemesis.vision.bypass.air-pocketsSee terrain without air pockets.OP
nemesis.vision.bypass.cave-hideSee real caves.OP
nemesis.freecam.alertGet freecam detection alerts.OP
nemesis.freecam.bypassNever be checked by freecam detection.OP
nemesis.cameraguard.alertGet camera guard verification alerts.OP
nemesis.cameraguard.bypassNever get the camera guard pack or verification.Nobody
nemesis.stash.alertGet Spawn Stash alerts.OP
nemesis.stash.bypassNever trip a Spawn Stash.OP
nemesis.piechart.alertGet alerts when a player mines a pie chart decoy chest.OP
nemesis.xray.alertGet mined-ore alerts.OP
nemesis.xray.bypassNever trigger mined-ore alerts.OP
nemesis.seedveil.bypassSee the real seed and map markers.OP
nemesis.minimapguard.bypassKeep full Xaero's minimap features.OP
blazez.updatesGet the update alert on join.OP

Note

The nemesis.vision.bypass permissions only work when the matching switch under admin-bypass in config.yml is true. All of them are false by default, so OPs see the same hidden world as everyone else until you turn one on.

Commands#

All subcommands except reload must be run in game.

CommandWhat it doesPermission
/nemesisShows the command list.nemesis.admin
/nemesis settingsOpens the settings menu for blocks, entities, anti-xray, anti-freecam, disguises and worlds.nemesis.admin
/nemesis reloadReloads every config file. Works from console.nemesis.admin
/nemesis statsShows the performance mode, active modules, ore cache size, tracked players and memory use.nemesis.admin
/nemesis togglereveal <caves|structures|dungeons>Shows or re-hides one feature for you only, until you log out. Without an argument it shows your current state.nemesis.admin
/nemesis debugReports structure hiding for the chunk you're in.nemesis.admin
/nemesis verify <player>Makes a player redo the camera guard verification. Works from console.nemesis.admin
/nemesis stash <type|list|clear>Buries a stash where you're looking, lists stashes or forgets them.nemesis.admin
Nemesis command list in chat
The command list you get from /nemesis.
Nemesis settings menu
/nemesis settings opens this menu. Each icon leads to one group of settings.

Configuration#

FileWhat it controls
config.ymlAnti-xray, hidden blocks and disguises, performance mode, staff bypass, SeedVeil, minimap guard, Spawn Stash, the panel link and messages.
anti-freecam.ymlFake floor, adaptive reveal, air pockets, vertical mode, skybase protection and freecam detection.
hide-entity.ymlEntity hiding and name tags.
hide-structure.ymlStructure, dungeon and cave hiding.
gui.ymlThe /nemesis settings menus.
license.ymlYour license key and update alerts.

Worlds#

blacklisted-worlds in config.yml turns all of Nemesis off in a world (default otherside). To turn off one module per world, use anti-xray.excluded-worlds, excluded-worlds or excluded-environments in anti-freecam.yml, or the excluded-worlds of skybase protection or the minimap guard.

Staff bypass#

config.yml
admin-bypass:
  everything: false
  hide-structure: false
  hide-entity: false
  hide-ores: false
  air-pockets: false
  cave-hide: false

Each switch works together with its permission. everything pairs with nemesis.vision.bypass.*. For a quick look without changing config, use /nemesis togglereveal.

Bedrock and older clients#

Nemesis works with ViaVersion, ViaBackwards and ViaRewind, and checks at startup that its packet handling runs in the right order next to them (via-compatibility). Bedrock players are detected automatically through Floodgate or Geyser, including Floodgate running only on the proxy. Players whose name starts with bedrock-ignore.bedrock-prefix (default .) count as Bedrock too.

OptionDefaultWhat it does
bedrock-ignore.skip-anti-freecamtrueBedrock players skip anti-freecam (fake floor, reveal refreshes, vertical window, freecam detection). Bedrock rebuilds every resent chunk from scratch, so anti-freecam makes their screen flicker. Ore hiding still applies to them.
bedrock-ignore.enabledfalseBedrock players get the real world with nothing hidden.

Update alerts#

Staff with blazez.updates (OPs by default) get one chat message when they join, listing every installed BlazeZ plugin that has an update waiting. It stays off until you set check-for-updates: true in Nemesis's license.yml.

Install#

  1. Install PacketEvents. Nemesis doesn't load without it.
  2. Put the Nemesis jar in plugins/ and start the server once. Nemesis creates plugins/Nemesis/ with config.yml, anti-freecam.yml, hide-entity.yml, hide-structure.yml, gui.yml and license.yml.
  3. Paste your license key into license-key in license.yml. Your key is under My Licenses on the BlazeZ portal; licenses linked to your Discord account show up there automatically. If yours is missing, open a License Key ticket in the BlazeZ Discord.
  4. Restart the server.
  5. Apply later config edits with /nemesis reload, which also works from the console.

Add-ons#

Anti-xray, anti-ESP for blocks, SeedVeil, Spawn Stash and the minimap guard come with every license. Three modules are add-ons that your license may or may not include:

Add-onCovers
Anti-FreecamThe fake floor, air pockets, vertical mode and skybase protection (anti-freecam.yml).
Hide EntityHiding players and mobs you can't see (hide-entity.yml).
Hide StructuresStructure, dungeon and cave hiding (hide-structure.yml).

If an add-on is missing from your license, its module stays off whatever the config says, and the console tells you which one on every load. Set silence-missing-access-warnings: true in config.yml to hide that warning.

Anti-xray#

Every block type in hidden-block-types is swapped for a disguise block before the chunk is sent. Ores become the rock around them, and containers, spawners and other block entities become air. When a player has a clear line of sight to a hidden block, Nemesis sends them the real one.

Diagram of what an x-ray client receives with and without Nemesis
Diagram: the same chunk seen by an x-ray client. Left, a server without anti-xray. Right, Nemesis sends only the ores the player can see.

A few details keep this invisible to legit players:

  • Once an ore is revealed it stays revealed until the player is 3 chunks away (keep-ores-in-view), so turning your head doesn't make ores flicker.
  • Seeing one ore reveals its whole vein (reveal-whole-ore-stack).
  • The disguise matches the stone next to the ore when transformations.sample-neighbour-stone is on, so a diamond in granite becomes granite, not a lone block of deepslate.
  • Particles at a hidden block's position are cancelled, so they don't give its position away.
  • After a WorldEdit or FastAsyncWorldEdit edit (//set, //paste and so on) the affected chunks are scanned again (world-edit-support).
Diagram: ores reach the client only when the tunnel exposes them, and seeing one ore sends its whole vein.

What gets hidden and what it turns into#

hidden-block-types hides a block at every height. The default list covers every ore, ancient debris, chests, barrels, shulker boxes of every color, spawners, furnaces, hoppers and the other storage blocks an ESP client looks for.

Diagram of hidden blocks and their disguises
Diagram: what a few hidden blocks become in the chunk packet with the default transformations.

hidden-block-types-below-level hides a block only below a Y level. Use it for blocks that are only suspicious deep down, like cobblestone at Y 8:

config.yml
hidden-block-types-below-level:
  COBBLESTONE: 40
  STONE_BRICKS:
    level: 30
    worlds:
      - world

transformations decides the disguise. environment-default sets the fallback per dimension (DEEPSLATE in the overworld, NETHERRACK in the nether, END_STONE in the end), and other sets it per block:

config.yml
transformations:
  sample-neighbour-stone: true
  environment-default:
    normal: DEEPSLATE
    nether: NETHERRACK
    the_end: END_STONE
  other:
    DIAMOND_ORE: STONE
    ANCIENT_DEBRIS: NETHERRACK
    CHEST: AIR

max-hide-section (default 10) is how many 16-block sections, counted up from the bottom of the world, get hidden. Raise it if you want blocks higher up covered.

Proximity hiding#

Line of sight is a weak rule in the open. A player on the nether roof or in an air base can see everything within their render distance, so an ESP client gets every chest and spawner out there. With anti-xray.proximity-hiding.enabled: true, a hidden block also has to be within distance blocks (default 20) before it's revealed. Line of sight still applies on top.

Off by default, because legit players then stop seeing their own base from across the valley.

KeyDefaultWhat it does
distance20Reveal range in blocks, from the eyes. 1 to 256.
ignore-yfalseMeasure horizontally only.
rehidetrueHide the block again when the player walks out of range. With false, range only decides when a block first appears.
distancesemptyPer-block overrides, for example SPAWNER: 8.

Pie chart compatibility#

Hiding containers also flattens the blockentities slice of the F3 pie chart, so players can no longer use it to find bases. Turn on anti-xray.pie-chart-compat.enabled if you want the pie chart to keep working.

For every hidden chest, shulker, spawner, sign or other rendered block entity, Nemesis sends a decoy chest to a random buried spot in the same 16x16x16 section. The pie chart reacts the same way it would to the real one, but an ESP client only sees decoys, so it can't find the base any more precisely than the pie chart can. Decoys only go into solid rock that Nemesis hasn't changed, and each one stays in the same spot every time the chunk loads. A decoy turns back into its real block when a player gets within reveal-distance, when a block next to it is broken or blown up, or when the real container is broken.

A legit player has no reason to dig into a decoy. When someone mines one, staff with nemesis.piechart.alert get an alert with the player, position and how many decoys that player has mined this session. One hit can be bad luck while strip mining. Several are a strong sign of x-ray or ESP. Nothing is punished automatically.

Off by default, because ESP users still learn roughly which section each hidden container is in.

KeyDefaultWhat it does
enabledfalseSend decoy chests so the pie chart keeps working.
reveal-distance4Range in blocks at which a decoy turns back into its real block. 1 to 32.
alert.enabledtrueAlert staff when a player mines a decoy.
alert.permissionnemesis.piechart.alertWho gets the alert.
alert.messagesee configAlert text. Placeholders: %player%, %x%, %y%, %z%, %world%, %count%.

Performance modes#

vision-mode.selected-mode sets how often Nemesis checks for blocks to reveal, and how many chunks around each player it checks.

ModeCheck everyChunk radius
performance1000 ms2
medium (default)150 ms2
hard100 ms3
Output of /nemesis stats
/nemesis stats shows the active mode, which modules run and how much the ore cache holds.

Chunk disguising runs on background threads (anti-xray.obfuscation-threads, 0 means half the CPU cores). If a chunk takes longer than obfuscation-timeout-millis (default 10000), the real chunk is sent instead so nobody is left waiting.

anti-xray.excluded-worlds turns anti-xray off in some worlds while everything else keeps running. The end is in it by default, since it has no ores.

Anti-freecam#

A freecam mod detaches the camera from the body, so a player can fly it through the ground and look at every tunnel and base below them. Anti-freecam stops that by never sending the underground in the first place.

The fake floor#

Below each world's hide-level, the chunk data a player receives is replaced with the fill-out block. When the player goes below reveal-level, the real world is sent back around them within reveal-radius chunks (default 8). When they climb back above it, the floor returns (rehide-section: true).

anti-freecam.yml
worlds:
  1:
    world: 'world'
    hide-level: 16
    reveal-level: 30
    fill-out: 'DEEPSLATE'
    enabled: true

Worlds without an entry use the default block (same values) as long as default-enabled is true. To turn anti-freecam off in one world, give it an entry with enabled: false, or add it to excluded-worlds. Deleting a world's entry only makes it fall back to the defaults.

excluded-environments turns anti-freecam off in every world of a dimension, whatever the world is called. It holds THE_END by default, so End worlds keep their real floor while anti-xray, entity hiding and hide-structure keep running there. Remove it to protect the End too, or add NETHER or NORMAL.

Block updates below the floor are dropped (cancel-block-update-below) so a freecam can't watch someone mining down there. cancel-fall-damage-on-hidden-layer protects a player who lands on the fake floor during lag, and fast-fall-reveal resends chunks right away when someone falls fast, so they don't rubber-band on it.

refresh-chunks-per-tick (default 5) caps how many chunks a reveal resends per tick per player. Lower it if players report FPS drops when crossing the reveal level.

Adaptive reveal#

With adaptive-reveal.enabled: true, a player below reveal-level only gets the area they can actually see sent back, instead of every chunk within reveal-radius. A player in a sealed pocket gets the chunks right around them, a long tunnel reveals a strip along it, and a big cave reveals as far as its walls reach. Everything else stays behind the fake floor, so a freecam flown out of the cave finds nothing.

anti-freecam.yml
adaptive-reveal:
  enabled: false
  min-radius: 1
  max-radius: 8
  scan-interval-ticks: 10
  keep-until-surface: false
  refresh-all-chunks: false
KeyDefaultWhat it does
enabledfalseTurn adaptive reveal on.
min-radius1Chunks around the player that are always real, so they never walk into the fake floor. 1 is a 3x3.
max-radius8Furthest a visible area can reach, in chunks. Never more than the player's view distance.
scan-interval-ticks10How often the visible area is measured again (20 is 1 second).
keep-until-surfacefalseKeep every chunk the player has seen real until they climb back above reveal-level, instead of hiding it again once it is out of sight.
refresh-all-chunksfalseWhen the player goes below reveal-level, resend every chunk in their view: the visible area real, the rest refilled with the fake floor. Off means only the visible area is resent.

Adaptive reveal replaces reveal-radius underground. It stands down while hide-all-sections or vertical mode is on.

Air pockets#

Air pockets carve sealed cubes of fake air into solid stone. An x-ray client draws them like caves, which hides the real caves in noise. The cubes follow a set grid, so the same chunk always gets the same pockets.

Air pockets seen from inside the terrain. The rooms are fake air the client receives, the real rock is untouched.
KeyDefaultWhat it does
shapeCUBECUBE for solid boxes, CLUSTER for random 2x2x2 shapes.
cube-size8Edge length of a cube. 2, 4, 8 or 16.
min-y / max-y-120 / 96Height band that gets pockets.
source-blocksstone types and dirtBlocks that may be carved.
reveal-on-external-breaktrueRefill a pocket with real rock when someone mines into it, so nobody falls into fake air.
reveal-layers2How far that refill reaches. 2 refills ahead of the player, which matters on high ping.

Vertical mode#

With vertical.enabled: true, a player underground only receives real chunks in a box around them: chunk-distance (default 5, an 11x11 box). Outside it, the bottom max-hide-section sections are cut out and shown as fill-out-block (AIR for void, or a solid block). The box moves with the player.

sticky-reveal: true keeps a chunk real once the box has shown it, so terrain stops shifting as the box moves. It's off by default because a player who walks the map keeps every chunk they passed.

Skybase protection#

The same idea pointed up. With skybase-protection.enabled: true, everything at or above ceiling-level (default 200) is cut out of chunks outside a box around the player. A freecam sweeping the map sees empty sky, while anyone near a base sees it normally. The cut includes block light and live block updates up there, and it stands down when the player flies within reveal-margin (default 16) blocks of the ceiling.

Warning

Set ceiling-level above your tallest natural terrain. Anything above it disappears for distant players, so a ceiling below your mountain peaks flattens them on the horizon.

worlds sets a ceiling per world, and excluded-worlds skips worlds.

Freecam detection#

A freecam user mines and opens containers through walls and behind their own head, which no vanilla client can do. With freecam-detection.enabled: true, Nemesis checks each interaction against the player's recent eye positions and look directions. A player is flagged after min-hits (default 4) impossible interactions within window-seconds (default 10).

Staff with nemesis.freecam.alert get a chat alert, at most once every cooldown-seconds (default 60) per player. Nemesis never punishes on its own. With enforcement.enabled: true, a flagged player's line of sight stops revealing the underground for duration-seconds (default 120).

Creative and spectator players, Bedrock players (while skip-anti-freecam is on) and anyone with nemesis.freecam.bypass are never checked. Off by default. Tune fov-degrees and min-hits on a test server before turning it on.

Camera guard#

Camera guard sends players a small texture pack. Played normally nothing looks different, but as soon as the camera leaves the body (freecam), the whole screen turns black. Third person (F5) still works. It works in anti-freecam worlds on Java clients 1.21.6 or newer. Bedrock players, older clients and anyone with nemesis.cameraguard.bypass don't get the pack, and spectators are never blacked out.

anti-freecam.yml
camera-guard:
  enabled: false
  third-person: true
  required: true
  host: ''
  port: 8164
  url: ''
  skip-client-brands: []
  console-feedback: false
  response-timeout-seconds: 0
  custom-pack: ''
  required-failed-message: "&#FF0000&lNEMESIS\n&7A required resource pack was declined."
KeyWhat it does
enabledTurns camera guard on. Off by default.
third-personKeeps the F5 camera working. false blacks out third person too.
requiredPlayers who decline the pack, or never load it, are disconnected with required-failed-message. Players can't chat or use commands until the pack has loaded.
hostThe address players download the pack from. Empty uses the address they joined with.
portNemesis serves the pack itself on this port. Open it in your firewall.
urlSend the pack from your own web host instead. With url empty and port: 0, merge plugins/Nemesis/camera-guard-pack.zip into your own server pack.
skip-client-brandsClient brands that never get the pack or verification, for example [lunarclient].
console-feedbackLogs pack and verification results to the console. Off by default.
response-timeout-secondsKicks players who never answer the pack request within this many seconds. 0 turns it off. Needs required: true.
custom-packA zip in plugins/Nemesis/ to use as the base pack instead of the built-in one, for your own camera guard pack with verification. It needs pack.mcmeta in its root. Empty uses the built-in pack.
required-failed-messageThe kick message for players who decline or never load a required pack.

Verification#

Hacked clients can tell the server the pack loaded without ever loading it. Verification catches that. It only runs when Nemesis serves the pack itself (url empty, port above 0).

  • Every player gets their own copy of the pack from a private link. A client that says the pack loaded but never downloaded it fails right away.
  • Players who really loaded it get a short menu: click every item that matches the one at the bottom. The items only look different with that player's own pack, so without it every slot looks the same.
  • Until they pass, players can't use commands, chat, break or place blocks, interact, attack or drop items. Escape closes the menu, and any of those actions opens it again.
  • On a fail, staff with nemesis.cameraguard.alert get an alert, or the player is kicked with fail-action: KICK. This also covers clients that fake having loaded the pack.
anti-freecam.yml
camera-guard:
  verification:
    enabled: false
    load-timeout-seconds: 60
    timeout-seconds: 45
    attempts: 3
    targets: 4
    remember-minutes: 30
    open-delay-ticks: 20
    fail-action: ALERT
    alert-permission: nemesis.cameraguard.alert
KeyWhat it does
load-timeout-secondsHow long a player has to load the pack before the check fails.
timeout-secondsHow long the menu can stay open before the check fails. Time with the menu closed doesn't count.
attemptsWrong clicks allowed before the check fails.
targetsHow many matching items are in the grid (1 to 8).
remember-minutesSkips the menu for players who passed within this time. The private-link check still runs. 0 asks every join.
open-delay-ticksWait after the pack loads before the menu opens.
fail-actionALERT warns staff, KICK also kicks the player.

The messages and gui sections under verification hold every chat line and menu text. Use /nemesis verify <player> to make someone redo the check.

Entity hiding#

Players and mobs in hidden-entity-types are removed from a viewer's packets until the viewer could see them. Visibility is checked from up to 3 points, set in hide-entity-check-types:

CheckLooks from
PLAYER_EYE_VIEWThe player's eyes.
THIRD_PERSON_VIEW5 blocks behind the eyes, like the F5 camera.
PLAYER_EYE_VIEW_MINUS_1YSlightly lower eyes, the height of a sneaking player.

By default an entity stays visible once seen. re-hide-entities: true hides it again when it breaks line of sight, but only beyond re-hide-entities-min-distance blocks (default 30), so nobody pops out of view mid-fight.

Vanilla draws player names through walls. So that a hidden player's name doesn't vanish and give the feature away, Nemesis draws the name tag back for the players they're hidden from (hidden-player-nametags). It follows team prefixes, colors and sneaking like a normal name tag.

disable-hide-entity-completely: true turns the module off.

Structures, dungeons and caves#

With enabled: true in hide-structure.yml, structures in whitelist are replaced with rock in the chunk packet. A player gets each piece back when they can see it within reveal-distance blocks (default 48). Walking into a structure's bounding box reveals the whole thing and everything hidden inside it for the rest of that world visit (reveal-on-entry). Ores and chests inside still follow anti-xray.

hide-structure.yml
enabled: false
highest-hide-level: 100
reveal-distance: 48
reveal-on-entry: true
fill-mode: SMART
whitelist:
  - 'BURIED_TREASURE'
  - 'MINESHAFT'
  - 'STRONGHOLD'
  - 'TRIAL_CHAMBERS'

Structures that reach above highest-hide-level stay visible, so villages and other surface builds are untouched. fill-mode is SMART (fills the structure and blends into the terrain around it), SOLID or NONE.

Whitelist entries take the vanilla name (MINESHAFT) or a namespaced key from a custom generator (terraform:catacombs). On TerraformGenerator worlds, a plain MINESHAFT also covers its mineshafts.

hide-dungeons: true also buries vanilla monster rooms, which aren't registered structures. It finds them by their spawner and fills dungeon-radius blocks (default 4) around it.

Cave hiding#

cave-hide fills natural caves with rock until a player is inside one or sees it. It's on by default, needs anti-xray on, and is part of the Hide Structures add-on. The area within presence-radius-blocks (default 6) of the player is always real, so nobody ends up standing inside fake rock. A reveal spreads through the connected cave up to reveal-spread-radius-blocks (default 96). Once a player is standing inside a cave, every hidden cave in the chunks within enter-reveal-chunk-radius (default 2, so 5x5 chunks) opens at once instead of piece by piece as they look around. Set it to 0 to turn that off.

Run /nemesis debug in a chunk where structure hiding seems to do nothing. It prints the world's generator, the structures found in that chunk and why each one is or isn't hidden.

Output of /nemesis debug
/nemesis debug in a chunk: generator, world gates, active features and the structures found there.

SeedVeil#

SeedVeil stops clients working out your world seed, which would let them find ores and structures without exploring. It's on by default and needs no setup.

  • The hashed seed sent at login and respawn is replaced with a fake one. It stays the same for each dimension, so LOD mods like Distant Horizons and Voxy keep their saved terrain.
  • Ore veins and the fingerprints of structures like end cities and ocean monuments are shifted off their seed-based positions.
  • Map markers are moved and /locate answers with a believable fake.
  • Seed-cracking commands such as /seedcracker are blocked, and a player who keeps trying gets disconnected. Plain /seed still works.

Eyes of Ender point at the real stronghold by default. With seedveil.protect-eye-of-ender: true, they lead to a made-up stronghold first, then switch to a real one close by when the player gets there. It's off by default because players can notice it.

nemesis.seedveil.bypass exempts staff from the fake seed, map markers, command blocking and the Eye of Ender decoy. Set seedveil.enabled: false if it conflicts with another plugin that changes world generation or maps.

Spawn Stash#

Spawn stashes are honeypots: a small buried room with valuable blocks, a spawner and a loot chest. Nobody should find one without x-ray or freecam, so when a player mines within catch-radius blocks (default 4), staff with nemesis.stash.alert get an alert with the player, position and stash type, and the stash turns back into solid rock. Nothing is punished automatically.

A player tunnels straight to a buried stash. The stash turns back into rock and staff get an alert.

Place one by looking at a block and running /nemesis stash <type>. Types: diamond, netherite, emerald, gold, amethyst. /nemesis stash list shows every stash and whether it was caught, and /nemesis stash clear forgets them all (their blocks stay in the world).

With spawn-stash.auto-scatter.enabled: true, Nemesis keeps count stashes (default 5) buried within radius blocks (default 500) of spawn in the listed worlds, between min-y and max-y, and buries a replacement when one is caught.

Spawn Stash is off by default. Turn it on with spawn-stash.enabled: true. Staff with nemesis.stash.bypass never trip a stash.

Xray alerts#

Xray alerts warn staff when a player mines too many valuable ores too fast. When a player breaks alert-at ores of one group within window-minutes (default 5), staff with nemesis.xray.alert get a chat alert with the player, the ore, the count and their Y level. The same player and ore won't alert again for cooldown-seconds (default 120). Nothing is punished automatically, and players with nemesis.xray.bypass are never counted.

Off by default. Turn it on with xray-alerts.enabled: true.

KeyDefaultWhat it does
window-minutes5How far back mined ores are counted.
cooldown-seconds120Wait before the same player and ore alert again.
logtrueAlso log every alert to console.
permissionnemesis.xray.alertWho gets the alert.
messagesee configAlert text. Placeholders: %player%, %count%, %ore%, %minutes%, %y%.
excluded-worldsemptyWorlds where nothing is counted.
oresdiamond 10, ancient debris 6, emerald 6, gold 24Ore groups, each with a display name, an alert-at count and its blocks.

Minimap guard#

Xaero's Minimap and World Map obey fair-play flags a server can send. With minimap-guard.enabled: true, Nemesis sends them on join and world change:

  • FAIR (default) turns off cave mode and the entity radar. nether-cave-mode-allowed: true keeps world-map cave mode in the nether.
  • FULL turns the minimap off.

Players without the mod see at most one blank chat line when they join. excluded-worlds skips worlds, and staff with nemesis.minimapguard.bypass never get the flags.

Web panel#

Nemesis links your server to the Nemesis panel on its own, using your license key. The connection is outgoing only, so you don't open any ports. Open the panel from the BlazeZ portal to edit settings, turn modules on and off, and reload without joining the server.

Turn the link off with cloud.enabled: false in config.yml.

Troubleshooting#

  • A module does nothing even though it's enabled: check the console on startup for a missing add-on warning, see Add-ons.
  • Structure hiding does nothing: enabled in hide-structure.yml is false by default. If it's on, stand in the chunk and run /nemesis debug.
  • OPs still see fake blocks: the bypass needs both the permission and the admin-bypass switch.
  • Players see terrain pop in or FPS drops near the reveal level: lower refresh-chunks-per-tick in anti-freecam.yml.
  • Mountains look cut off in the distance: raise skybase-protection.ceiling-level.