NoCom Exploit Check
Validates player coordinates and detects position exploits.
What It Does
The NoCom (No Communication) exploit check validates position packets to ensure players aren't sending impossible coordinates, teleporting illegally, or exploiting movement mechanics.
What is NoCom?
NoCom refers to exploits where players manipulate their position packets to:
- Teleport to arbitrary coordinates
- Move faster than possible
- Phase through walls
- Bypass spawn protection
- Escape combat illegally
How It Works
GAPE validates every position packet:
- Coordinate validity: X, Y, Z must be valid numbers (not NaN or Infinity)
- World bounds: Coordinates must be within world border
- Movement distance: Can't move too far in one tick
- Vertical limits: Can't be below Y=-64 or above Y=320 (1.18+)
- Rotation validity: Yaw and pitch must be valid angles
What It Protects Against
Invalid Coordinate Exploits
Sending position packets with NaN (Not a Number) or Infinity coordinates crashes the server or causes undefined behavior.
Teleportation Hacks
Moving thousands of blocks instantly by sending fake position packets.
Out-of-Bounds Exploits
Teleporting outside the world border to access restricted areas or bypass protections.
Vertical Limit Bypass
Moving to Y=10000 or Y=-10000 to exploit chunk loading, escape combat, or break game mechanics.
Validation Details
Coordinate Validity
- NaN check: X, Y, Z must be valid numbers
- Infinity check: Coordinates can't be ±Infinity
- Number type: Must be proper floating point numbers
World Bounds
- World border: Must be within configured world border
- Vertical limits: Y between -64 and 320 (configurable)
- Horizontal limits: ±30 million blocks (Minecraft limit)
Movement Distance
- Horizontal: Maximum ~10 blocks per tick normally
- Vertical: Maximum ~3 blocks per tick (jumping/falling)
- Total: Maximum ~12 blocks per tick combined
- Elytra/vehicles: Higher limits when using elytra or riding
Rotation Validity
- Yaw: Must be between -180 and 180 degrees
- Pitch: Must be between -90 and 90 degrees
- Not NaN: Rotation values must be valid numbers
Configuration Options
Coordinate Limits
- Min Y: -64 (1.18+), 0 (1.17 and earlier)
- Max Y: 320 (1.18+), 256 (1.17 and earlier)
- Horizontal: ±30000000 (Minecraft limit)
Movement Tolerance
Maximum blocks per tick:
- Strict (10 blocks): Vanilla limits only
- Normal (15 blocks): Allows some lag compensation (default)
- Lenient (25 blocks): For laggy servers or modded movement
Vehicle Mode
Higher limits when player is in vehicle:
- Elytra: 50-100 blocks per tick
- Boat: 20-30 blocks per tick
- Minecart: 15-25 blocks per tick
Violation Threshold
- 3: Strict, low tolerance
- 5: Balanced (default)
- 10: Lenient, high tolerance
Common Exploit Patterns
NaN Coordinate Crash
Sending position with X=NaN, Y=NaN, Z=NaN causes the server to crash when processing entity movement.
Infinity Teleport
Setting Y=Infinity causes the player to teleport to an impossible position, breaking chunk loading.
Instant Teleport
Sending position packet moving from (0, 64, 0) to (10000, 64, 10000) in one tick.
Under-World Exploit
Teleporting to Y=-1000 to access void for duplication exploits or escape combat.
False Positives
Potential legitimate causes:
- Server lag: Lag can cause large apparent position jumps
- Teleport commands: /tp or /home may trigger movement check
- Vehicle desync: Exiting vehicles can cause position desync
- Ender pearls: Long ender pearl throws
- Elytra flight: Fast elytra movement
Solution: Increase movement tolerance or whitelist teleport events.
Integration with Anti-Cheat
NoCom check works alongside traditional anti-cheat:
- GAPE NoCom: Validates packet-level coordinate data
- Anti-cheat: Validates movement logic and physics
- Together: Comprehensive movement protection
Why This is Critical
Invalid coordinates can:
- Crash the server instantly
- Corrupt chunk data
- Break world generation
- Cause undefined behavior in plugins
- Allow bypassing all anti-cheat checks
Performance Impact
- Per movement packet: ~150ns validation
- Frequency: Every position packet (20-30 per second per player)
- Memory: ~100 bytes per player (storing last position)
Handling Teleports
GAPE distinguishes between legitimate teleports and exploits:
- Plugin teleports: Detected via API hooks, allowed
- Command teleports: /tp commands are whitelisted
- Ender pearls: Tracked and validated separately
- Exploit teleports: No corresponding event, blocked
Server-Specific Configuration
Vanilla Servers
Strict limits work well:
- 10-15 blocks per tick limit
- Vanilla Y limits
- Low violation threshold
Modded Servers
More lenient for modded movement:
- 25-50 blocks per tick
- Adjusted Y limits if mods change world height
- Higher violation threshold
Minigame Servers
Variable based on games:
- High limits for parkour/racing games
- Standard limits for combat games
- Per-world configuration
Best Practices
- Always validate coordinates for NaN and Infinity
- Set movement tolerance based on server performance (lag compensation)
- Whitelist plugin/command teleports
- Higher limits for elytra and vehicles
- Monitor false positives from legitimate teleports
- Enable kick on high violation count (10+)
- Alert staff for repeated exploit attempts