DonutAntiFreecam
Stop freecam and underground peeking — hide everything below your surface Y level with true server-side packet masking.DonutAntiFreecam protects survival, SMP, factions, and earth servers from players using freecam clients to scout bases, ores, and hidden builds underground. While players are on the surface, underground blocks are masked in outgoing packets before they reach the client. When they go underground, they see the real world again — with smooth transitions and smart chunk refresh so players don’t fall through void while remasking.
This plugin requires a license key to work, get one in our discord!
Works on Paper and Folia (1.21+). No ProtocolLib required.
Features
- Inline packet masking — blocks below a configurable Y level are hidden at the network layer (chunk + block change packets)
- Configurable hide threshold — set hide-below-y per server or per world
- Smooth descent — gradual unmasking starts above the threshold (transition-height) so mining down feels natural
- Prioritized chunk refresh — refreshes the player’s current chunk first, then nearby chunks closest-first
- Footing protection — keeps blocks under the player real briefly during remasking to prevent void falls
- Fake block material — replace hidden blocks with AIR or any block (e.g. stone, deepslate)
- Optional multi-layer mode — different fake materials for different Y bands
- World blacklist/whitelist — enable only on worlds that need protection
- Bypass permission — trusted staff can see real blocks when needed
- Lightweight — built on PacketEvents, no heavy per-tick reveal queues
Commands
| Command | Permission | Description |
|---|---|---|
| /donutantifreecam reload | donutantifreecam.reload | Reload config.yml without restarting |
| /donutantifreecam status | (none) | Show plugin status, hide Y, fake material, layers, Folia mode |
| /donutantifreecam debug | donutantifreecam.debug | Show your mask ceiling, block Y, threshold, and transition state |
Permissions
| Permission | Default | Description |
|---|---|---|
| donutantifreecam.reload | op | Reload configuration |
| donutantifreecam.debug | op | View personal masking debug info |
| donutantifreecam.bypass | false | See real underground blocks (staff/testing) |
Configuration
YAML:
license-key: "" # Required — get a key at discord.gg/Kuz5CwbtrQ
enabled: true
hide-below-y: 8 # Mask everything below this Y on the surface
transition-height: 10 # Gradual unmask zone above hide-below-y
fake-material: AIR # What surface players see underground
chunk-refresh:
chunks-per-tick: 8
footing-protection: true
remasking-grace-ms: 1500
layers:
enabled: false # Optional multi-layer fake materials by Y band
worlds:
mode: blacklist # blacklist or whitelist
list: []
overrides: {} # Per-world hide-below-y / fake-material overrides
Requirements
- Paper or Folia 1.21+
- Java 21
- Valid license key in config.yml
