Chunk Send Rate Limiting
Paper limits how quickly chunks are sent to players to prevent network congestion and client lag. File:config/paper-global.yml
Configuration
| Value | Use Case | Effect |
|---|---|---|
75.0 | Default - balanced | Good for most servers |
50.0 | Limited bandwidth | Reduces network usage |
100.0 | High-speed connections | Faster chunk loading |
-1.0 | Unlimited | No rate limiting |
Auto-Configure Send Distance
File:config/paper-global.yml
- Server view distance: 10 chunks
- Player A’s client: 8 chunks
- Player B’s client: 12 chunks
auto-config-send-distance: true:
- Player A receives 8 chunks (saves bandwidth)
- Player B receives 10 chunks (server maximum)
This significantly reduces bandwidth usage without affecting player experience, as clients with low view distance can’t render additional chunks anyway.
Packet Rate Limiting
Paper includes packet rate limiting to prevent packet spam exploits and reduce processing overhead. File:config/paper-global.yml
Global Packet Limiting
- interval: Time window for rate measurement
- max-packet-rate: Maximum packets allowed in the interval
- action:
KICK: Disconnect the playerDROP: Silently drop excess packets
Understanding Packet Rate Calculation
Understanding Packet Rate Calculation
With
interval: 7.0 and max-packet-rate: 500.0:The player can send up to 500 packets in a 7-second window, averaging ~71 packets/second.If exceeded, the configured action is taken.Per-Packet Type Overrides
Configure specific packet types differently:Spam Limiters
File:config/paper-global.yml
Tab-Complete Spam
- increment: Violation points added per request
- limit: Maximum points before action taken
Recipe Spam
Incoming Packet Threshold
- Default:
300 - Disabled: Set to
-1
Network Compression
File:config/paper-global.yml
Compression Level
Controls network packet compression (zlib).| Level | CPU Usage | Bandwidth | Use Case |
|---|---|---|---|
-1 | Disabled | Highest | LAN/localhost only |
1-3 | Low | High | Fast CPU, limited bandwidth |
4-6 | Medium | Medium | Default - balanced |
7-9 | High | Low | Slow connections, powerful CPU |
Region File Compression
File:config/paper-global.yml
| Format | Speed | Compression Ratio | CPU Usage |
|---|---|---|---|
| NONE | Fastest | 1:1 (none) | Lowest |
| LZ4 | Fast | ~2:1 | Low |
| ZLIB | Medium | ~3:1 | Medium |
| GZIP | Slow | ~3:1 | High |
Entity Tracking and Network Updates
Entity Tracking Range
Controls the distance at which entity position updates are sent to clients. File:config/spigot.yml
Players won’t see entities beyond tracking range, which may affect gameplay (e.g., not seeing distant mobs or players).
Full Position for Hard-Colliding Entities
File:config/paper-global.yml
- Enabled: More accurate collisions, slightly higher bandwidth
- Disabled: Saves bandwidth, may cause collision issues
Player Connection Limits
File:config/paper-global.yml
- Default:
5players per tick - High traffic: Increase to
10-20 - DDoS protection: Reduce to
1-2
Proxy Configuration
BungeeCord
File:config/paper-global.yml
spigot.yml
Velocity
File:config/paper-global.yml
HAProxy / Proxy Protocol
Network Performance Monitoring
Monitor Network Usage
Use system tools to monitor bandwidth:Spark Profiling
Profile packet handling:NetworkManager- Packet processingPacketEncoder/PacketDecoder- Packet serialization
Optimization Strategies
1. High-Bandwidth Server
2. Limited-Bandwidth Server
3. DDoS Protection
Troubleshooting
Slow Chunk Loading for Players
Symptoms: Chunks load slowly during teleportation or flight Solutions:- Increase
player-max-chunk-send-rateto 100+ - Enable
auto-config-send-distance - Reduce network compression level
Players Getting Kicked
Symptoms: “Exceeded packet rate limit” kicks Solutions:- Increase
max-packet-ratein packet-limiter - Increase
incoming-packet-threshold - Change action from
KICKtoDROPfor specific packets
High Bandwidth Usage
Symptoms: Server using excessive bandwidth Solutions:- Reduce entity tracking ranges
- Reduce
player-max-chunk-send-rate - Increase compression level to 6-7
- Enable
auto-config-send-distance
Compression CPU Usage
Symptoms: High CPU usage in packet encoding Solutions:- Reduce compression level to 3-4
- Ensure you’re not on localhost with compression enabled
Advanced: Client Interaction Validation
File:config/paper-global.yml
- Default: Use vanilla validation
- Higher values: Allow interactions from slightly farther (helps with lag)
- Lower values: Stricter anti-cheat