NoEntitySupportingBlock
A lightweight Paper/Spigot plugin that stops modern Minecraft clients from revealing
invisible players through the client-side **supporting block** debug renderer.
Demo:
The problem
Since Minecraft 1.21.11, the client tracks each entity's supporting block — the block
an entity is standing on — and a client debug renderer can draw it. It only works while the
entity is standing on a block.
For an invisible player this is a leak: the player model is hidden, but the highlighted block
under their feet gives their exact position away.
The solution
For a remote entity, `onGround` only drives cosmetic/debug behaviour on the client. In vanilla
Entity.checkSupportingBlock(onGround, …), when onGround is false the client sets
mainSupportingBlockPos = Optional.empty() — so the debug renderer has nothing to draw.
This plugin intercepts the outbound entity-movement packets sent to clients on 1.21.11+ and
forces onGround = false for entities that are invisible players without armor. The invisible
player then has no supporting block on the client and can no longer be revealed by the debug
renderer. Only the flag changes — movement itself is untouched.
Anticheat / Grim compatibility
Designed to coexist with packet-based anticheats such as GrimAC:
- The spoof only flips onGround of other entities and never touches their positions, so it
does not corrupt the entity data an anticheat's lag-compensated world relies on. A remote
entity's onGround is not an input to reach/hitbox/movement checks, so it cannot cause false
positives.
- The flag is edited directly in the packet buffer instead of through a re-encoded wrapper. The
plugin never becomes the "last writer" of the packet, so it does not overwrite modifications
made by other packet plugins (e.g. Grim), and it does not depend on PacketEvents'
reEncodeByDefault setting.
Requirements
- A Paper/Spigot server with ViaVersion and PacketEvents installed.
- 1.21.11+ clients are the ones affected; older clients are left untouched.
Commands
| Command | Description |
|----------------|----------------------------|
| `/nesb reload` | Reload the configuration. |
Permissions
| Permission | Description | Default |
|---------------|--------------------------------|---------|
| `nesb.reload` | Allows using `/nesb reload`. | `op` |
A lightweight Paper/Spigot plugin that stops modern Minecraft clients from revealing
invisible players through the client-side **supporting block** debug renderer.
Demo:
The problem
Since Minecraft 1.21.11, the client tracks each entity's supporting block — the block
an entity is standing on — and a client debug renderer can draw it. It only works while the
entity is standing on a block.
For an invisible player this is a leak: the player model is hidden, but the highlighted block
under their feet gives their exact position away.
The solution
For a remote entity, `onGround` only drives cosmetic/debug behaviour on the client. In vanilla
Entity.checkSupportingBlock(onGround, …), when onGround is false the client sets
mainSupportingBlockPos = Optional.empty() — so the debug renderer has nothing to draw.
This plugin intercepts the outbound entity-movement packets sent to clients on 1.21.11+ and
forces onGround = false for entities that are invisible players without armor. The invisible
player then has no supporting block on the client and can no longer be revealed by the debug
renderer. Only the flag changes — movement itself is untouched.
Anticheat / Grim compatibility
Designed to coexist with packet-based anticheats such as GrimAC:
- The spoof only flips onGround of other entities and never touches their positions, so it
does not corrupt the entity data an anticheat's lag-compensated world relies on. A remote
entity's onGround is not an input to reach/hitbox/movement checks, so it cannot cause false
positives.
- The flag is edited directly in the packet buffer instead of through a re-encoded wrapper. The
plugin never becomes the "last writer" of the packet, so it does not overwrite modifications
made by other packet plugins (e.g. Grim), and it does not depend on PacketEvents'
reEncodeByDefault setting.
Requirements
- A Paper/Spigot server with ViaVersion and PacketEvents installed.
- 1.21.11+ clients are the ones affected; older clients are left untouched.
Commands
| Command | Description |
|----------------|----------------------------|
| `/nesb reload` | Reload the configuration. |
Permissions
| Permission | Description | Default |
|---------------|--------------------------------|---------|
| `nesb.reload` | Allows using `/nesb reload`. | `op` |
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.21, 26.1, 26.2
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
NoEntitySupportingBlock is a free Minecraft Java mod. Compatible with Minecraft 1.21, 26.1, 26.2. Downloaded 10 times (via Spigot). Download it and open it directly in the game.