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
Warning: Invalid coordinate packets can crash the server instantly. This check is critical for server stability.