Entities are one of the most significant performance consumers in Minecraft servers. Paper provides multiple systems to optimize entity processing while maintaining gameplay quality.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/PaperMC/Paper/llms.txt
Use this file to discover all available pages before exploring further.
Entity Activation Range
Entity Activation Range (EAR) is a performance feature that reduces tick rate for entities far from players. Inactive entities are “activated” periodically rather than every tick.How Activation Range Works
Entities are categorized into activation types:Configuration
File:config/spigot.yml
Activation Range Values
| Entity Type | Default | Recommended Low | Recommended High |
|---|---|---|---|
| animals | 32 | 24 | 48 |
| monsters | 32 | 24 | 48 |
| raiders | 64 | 48 | 96 |
| misc | 16 | 12 | 24 |
| water | 16 | 12 | 24 |
| villagers | 32 | 24 | 48 |
| flying-monsters | 32 | 24 | 64 |
Wake-Up Inactive Entities
Periodically “wake up” inactive entities to maintain some activity:Wake-Up Configuration Explained
Wake-Up Configuration Explained
-max-per-tick: How many entities to wake up per tick-every: How often (in ticks) to wake entities (20 ticks = 1 second)-for: How long (in ticks) entities stay awakeExample: animals-every: 1200 with animals-for: 100 means animals wake for 5 seconds every 60 seconds.Villager-Specific Settings
- villagers-work-immunity-after: Villagers stay active for this long after working
- villagers-active-for-panic: Always activate panicking villagers
- tick-inactive-villagers: Enable to maintain villager AI when inactive
Entity Tracking Range
Controls the distance at which players receive entity updates. Entities beyond tracking range are not sent to clients. File:config/spigot.yml
Tracking Range vs Activation Range
- Activation Range: Controls server-side entity ticking
- Tracking Range: Controls network updates to clients
Tracking range should generally be larger than activation range. If tracking range is smaller, players won’t see entities that are still being ticked.
Y-Axis Tracking Range
Paper adds vertical tracking range limits: File:config/paper-world-defaults.yml
Per-Player Mob Spawning
Paper’s per-player mob spawning distributes mob caps across individual players rather than globally. File:config/paper-world-defaults.yml
- More consistent spawning for all players
- Prevents spawn camping at mob farms
- Better mob distribution across the world
| Feature | Vanilla | Per-Player |
|---|---|---|
| Spawn distribution | Global cap | Per-player cap |
| Player in populated area | Gets most spawns | Fair share |
| Player exploring alone | Few spawns | Full spawn rate |
Mob Spawn Limits
File:config/paper-world-defaults.yml
-1 for default Minecraft limits, or specify custom limits:
Ticks Per Spawn
Control spawn attempt frequency per mob category:- monster: 1 tick (every tick)
- creature: 400 ticks (20 seconds)
- water_creature: 1 tick
Spawn Rate Optimization Example
Spawn Rate Optimization Example
Reduce creature spawn frequency to improve performance:Higher values = fewer spawn attempts = better performance but fewer mobs.
Entity Behavior Optimizations
File:config/paper-world-defaults.yml
Armor Stands
- do-collision-entity-lookups: Disable if armor stands are purely decorative
- tick: Set to
falsefor static armor stands (significant performance boost)
Markers
Pathfinding Optimization
- Default:
200ticks (10 seconds) - Disabled: Set to
-1
Experience Orb Optimization
File:config/paper-world-defaults.yml
100) to limit XP orb merging:
config/paper-global.yml
Despawn Ranges
File:config/paper-world-defaults.yml
- Soft range: Entities have a chance to despawn
- Hard range: Entities always despawn
Entity-Specific Optimizations
Item Despawn Rates
File:config/spigot.yml
config/paper-world-defaults.yml (alternative despawn rates):
Arrow Despawn Rates
File:config/paper-world-defaults.yml
Monitoring Entity Performance
Using Spark
Profile entity ticking:tickEntity- Entity AI and physicsActivationRange- EAR system performance
Count Entities
Optimization Strategies
1. Aggressive Performance (PvP/Minigames)
2. Balanced (Survival)
3. Vanilla+ (Minimal Changes)
Troubleshooting
Mobs Not Attacking
Cause: Activation range too low Solution: Increasemonsters activation range to 32+
Farms Not Working
Cause: Entities not ticking when players are far away Solution: Ensure farm is within activation range or use chunk loadersVillagers Not Trading/Breeding
Cause:tick-inactive-villagers: false
Solution: Enable tick-inactive-villagers: true
Too Many Entities
Cause: Mob farms, XP farms, or spawner accumulation Solutions:- Reduce spawn limits
- Enable alt-item-despawn-rate for common items
- Use entity-per-chunk-save-limit