A freecam mod lets a player fly their camera through the ground and look at every tunnel, base and stash below them. BlazeVision stops that by never sending the underground in the first place.
Below a hide level, each player's chunk data is emptied and capped with a solid fake floor. The real world on disk doesn't change. When a player goes down past the reveal level, the real terrain around them is sent back, and when they climb up again the floor returns. A freecam above ground only ever finds a flat layer of deepslate.
BlazeVision works on packets through PacketEvents, so one jar runs on every supported Paper version.
Permissions#
| Permission | Lets a player | Default |
|---|---|---|
antiesp.admin | Use every /antiesp command. | OP |
Commands#
| Command | What it does | Permission |
|---|---|---|
/antiesp | Shows the command list. | antiesp.admin |
/antiesp reload | Reloads config.yml. | antiesp.admin |
/antiesp toggle | Turns BlazeVision off or on until the next restart. | antiesp.admin |
Configuration#
config.yml holds every setting under anti-freecam, plus hide-entities, entity-hide-interval-ticks and the command messages. license.yml holds your license key.
Worlds#
anti-freecam:
default-enabled: true
default:
hide-level: 16
reveal-level: 30
fill-out: 'DEEPSLATE'
worlds:
1:
world: 'world'
hide-level: 16
reveal-level: 30
fill-out: 'DEEPSLATE'
2:
world: 'world_nether'
hide-level: 16
reveal-level: 30
fill-out: 'NETHERRACK'
3:
world: 'world_the_end'
hide-level: 32
reveal-level: 40
fill-out: 'END_STONE'Worlds without an entry under worlds use default, as long as default-enabled is true.
Note
Deleting a world's entry doesn't turn BlazeVision off there while default-enabled is true, it only makes that world use the defaults. To protect only some worlds, set default-enabled: false and list those worlds under worlds.
world-floor.auto-detect (on by default) reads each world's lowest build height, so worlds with custom heights get the floor in the right place. Add a world under world-floor.overrides only if it needs a fixed value.
Other options#
| Key | Default | What it does |
|---|---|---|
reveal-radius | 8 | Chunks around the player that are revealed below the reveal level. 0 resends the whole view distance. |
refresh-chunks-per-tick | 5 | Chunks resent to one player per tick. |
rehide-section | true | Put the floor back when the player climbs above the reveal level. |
remove-light-below-hide-level | false | Also strip light data below the hide level. |
hide-entities | true | Hide entities below the floor from players above it. |
entity-hide-interval-ticks | 10 | Ticks between entity visibility checks (20 is 1 second). |
Messages for the commands sit under messages, each with enabled, a type, the text and an optional sound.
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 this plugin's license.yml.
Install#
- Install PacketEvents. BlazeVision doesn't load without it.
- Put the BlazeVision jar in
plugins/and start the server once. It createsplugins/BlazeVision/withconfig.ymlandlicense.yml. - Paste your license key into
license-keyinlicense.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. - Restart the server.
- After editing
config.yml, run/antiesp reload.
How the fake floor works#
Each world has two heights:
hide-level: everything below this Y is cut out of the chunk data and capped with thefill-outblock. Default16.reveal-level: when a player goes below this Y, the real world is sent back to them. Default30.
The gap between the two means a player mining near the floor doesn't make it flicker. The reveal covers reveal-radius chunks around the player (default 8) and follows them while they're underground, so they never walk into a fake wall. With rehide-section: true (the default), the floor comes back when they climb above the reveal level.
refresh-chunks-per-tick (default 5) caps how many chunks a reveal or rehide sends to one player per tick. Every resent chunk makes the client rebuild it, so raising this makes reveals faster and costs the player FPS. The range is 1 to 30.
Entities below the floor#
With hide-entities: true (the default), mobs, players and dropped items below the fake floor are hidden from anyone standing above it, so an ESP can't draw them through the fake terrain. They show up again as soon as they come above the floor or the viewer goes below it. entity-hide-interval-ticks (default 10) sets how often this is checked.
Falling onto the floor#
When a player falls fast into a mined-out shaft, the normal reveal can arrive after they hit the fake floor. fast-fall-reveal sends the chunks right around them first (radius: 1 is a 3x3 of chunks, up to 4). If they still land on the fake floor during lag, cancel-fall-damage-on-hidden-layer cancels the fall damage. Both are on by default.
Following the player down#
With hide-all-sections: true, the floor doesn't stop at one Y. Every 16-block section below the player stays hidden, and the floor sits hide-all-sections-reveal-margin blocks under their feet (default 10) as they dig down. reveal-level is ignored in this mode, and the floor never rises above hide-level. Off by default.
Shorter view distance underground#
With lower-chunk-distance-underground.enabled: true, a player's view distance drops to distance chunks (default 3) while they're below the reveal level, and goes back to normal when they come up. A freecam or world downloader underground then only gets a small area. Off by default.
Revealing only what the player can see#
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.
| Key | Default | What it does |
|---|---|---|
adaptive-reveal.enabled | false | Turn adaptive reveal on. |
adaptive-reveal.min-radius | 1 | Chunks around the player that are always real. 1 is a 3x3. |
adaptive-reveal.max-radius | 8 | Furthest a visible area can reach, in chunks. |
adaptive-reveal.scan-interval-ticks | 10 | How often the visible area is measured again (20 is 1 second). |
adaptive-reveal.keep-until-surface | false | Keep every chunk the player has seen real until they climb back above reveal-level. |
adaptive-reveal.refresh-all-chunks | false | When 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 stands down while hide-all-sections is on.
Looking down into a cave#
With cave-view-reveal.enabled: true, a player standing up to max-height-above-reveal-level blocks (default 40) above reveal-level gets the real world below when they can see down past the fake floor, for example into a ravine or a cave mouth. scan-interval-ticks (default 10) sets how often that is checked. Off by default.
Troubleshooting#
- Players see chunks pop in or lose FPS when going down: lower
refresh-chunks-per-tick. - Players land on the fake floor when dropping into a cave: keep
fast-fall-revealon and raise itsradiusto2. - A world you removed from
worldsis still protected: see the note in Worlds.