1.0.0
Compatibility
Changes
AntiESP 1.0.0 - First Release
Blocks ESP, wallhacks and xray by never sending the client what it shouldn't see.
๐ค Player hiding: players behind walls are removed client-side. Ray-traced against several points on the body, configurable distance and wall count. Optionally keeps their floating nametag and tab-list entry.
๐ฆ Block disguise: chests, shulkers, spawners, barrels and more show as stone from a distance or through walls, and turn real again up close.
โ๏ธ Ore obfuscator: self-written anti-xray. Enclosed ores are sent as stone,
fake veins are scattered in, and in packet mode whole caves are filled with solid
rock (freecam-proof). A flood-fill reveal opens the cave you're standing in, so
caving stays normal. Fake pattern seeded from a fresh SecureRandom salt each
server start.
Requirements
Paper 1.21.8+, Java 21. PacketEvents optional โ needed for cave filling and the tab-list feature; everything else works without it.
Setup
Drop the jar in plugins/ and restart. Before going live, set
ore-obfuscation.identity-test: true once and check the world looks normal โ
that verifies the chunk codec on your server build. Then set it back to false.
Commands: /antiesp reload, /antiesp status ยท Permissions: antiesp.admin,
antiesp.bypass
Known limits
- Anyone who knows your world seed can regenerate ore positions server-side โ no client-side anti-xray can prevent that.
hide-cavesis aggressive; set it tofalseif caving feels off.- Only player block-breaking invalidates the chunk cache (not TNT/pistons/water).
Optional dependencies
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:PkTLH5N3:KfguXEgg"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:PkTLH5N3:KfguXEgg"
}
