Minecraft Server Entity Optimization: How to Fix Entity Lag and Boost Performance
# Minecraft Server Entity Optimization: How to Fix Entity Lag and Boost Performance
If your Minecraft server is still lagging despite having enough RAM and decent hardware, entities are most likely the culprit. Mobs, item drops, experience orbs, projectiles — all of these objects are processed every single tick, and when there are too many of them, your TPS takes a nosedive.
In this guide, we'll walk you through how to systematically identify entity lag and eliminate it with the right configuration values.
What Are Entities and Why Do They Cause Lag?
In Minecraft, all moving objects are classified as entities: mobs, players, animals, item drops, minecarts, boats, and more. The server must update every single one of these objects 20 times per second (at stable 20 TPS) — calculating positions, running AI routines, checking collisions.
The problem: every additional entity increases CPU load linearly. On a vanilla-like server, you can easily accumulate thousands of entities, especially through:
- Item drops in farm areas
- Mob stacking from uncapped spawners
- Experience orbs after large fights
- Animals on player farms
Step 1: Diagnose Your Entity Lag
Before changing anything, you need to know where the problem actually is. Use /timings report (Spigot/Paper) or the Spark profiler (/spark profiler) to identify exactly which entity types are consuming the most processing time.
You can also use /paper entity or /paper mobcaps to get a live breakdown of entity distribution across your server.
PulseNode continuously monitors your server's performance metrics and can help you pinpoint spikes in entity processing time directly on the timeline — no manual profiling required.
Step 2: Set Entity Limits in bukkit.yml
The first and most impactful setting is in bukkit.yml. Here you can define how many mobs are allowed to exist per chunk group:
spawn-limits:
monsters: 50 # Default: 70
animals: 8 # Default: 10
water-animals: 3 # Default: 5
water-ambient: 10 # Default: 20
ambient: 4 # Default: 15
These values reduce the maximum number of simultaneously spawned mobs on your server. Reducing them to 50–60% of the defaults has virtually no noticeable impact on gameplay but significantly reduces CPU load.
Step 3: Configure Entity Activation Ranges in paper-world.yml
Paper offers a powerful feature: Entity Activation Range. Entities that are far from players are ticked less frequently — saving a massive amount of CPU cycles.
In config/paper-world.yml (Paper 1.19+) or paper.yml (older versions):
entity-activation-range:
animals: 16 # Default: 32
monsters: 24 # Default: 32
raiders: 48
misc: 8 # Default: 16
water: 8
villagers: 16 # Default: 32
flying-monsters: 32
tick-inactive-villagers: true
wake-up-inactive:
animals-max-per-tick: 4
animals-every: 1200
monsters-max-per-tick: 8
monsters-every: 400
villagers-max-per-tick: 4
villagers-every: 600
flying-monsters-max-per-tick: 8
flying-monsters-every: 200
Especially important: villager optimization. Villagers have extremely complex AI routines and are often the single biggest entity bottleneck on servers. Reduce their activation range to 16 blocks.
Step 4: Entity Merging and Despawn Rates
Item Merging
In spigot.yml, you can define the radius within which nearby dropped items are merged together:
world-settings:
default:
merge-radius:
item: 3.5 # Default: 2.5
exp: 6.0 # Default: 3.0
A larger merge radius means fewer individual item entities existing at once — a genuine game-changer on farm-heavy servers.
Tuning Despawn Rates
In spigot.yml, you can also configure entity despawn distances:
entity-despawn-ranges:
soft: 28
hard: 96
The soft value determines the distance at which mobs can randomly despawn. The hard value is the absolute cutoff. Lower values mean fewer active entities and better performance.
Step 5: Purpur and Pufferfish-Specific Optimizations
If you're running Purpur, you have additional options in purpur.yml:
mobs:
zombie:
aggressive-towards-villager-when-lagging: false
villager:
brain-ticks: 2 # Only calculate AI every 2nd tick
lobotomize:
enabled: true
check-interval: 100
The lobotomize option disables the AI of villagers that are stuck behind a fence or inside a building and can't move — a massive performance win on trading halls.
Pufferfish introduced Dynamic Activation of Brain (DAB), which dynamically adjusts AI calculation frequency based on distance to the nearest player. This feature has since been integrated into Paper itself:
dab:
enabled: true
start-distance: 8
max-tick-freq: 20
activation-dist-mod: 8
Step 6: Optimize Mob Spawners
Mob spawners are frequently the source of extreme entity pile-ups. In paper-world.yml:
spawner-nerfed-mobs-should-jump: false
mob-spawner-tick-rate: 2 # Default: 1
Setting the tick rate to 2 means spawners are only processed every other tick — barely noticeable to players but a real win for your CPU.
Summary: The Most Important Entity Optimizations
| Configuration | File | Impact |
|---|---|---|
| Reduce spawn-limits | bukkit.yml | Fewer simultaneous mobs |
| Lower entity-activation-range | paper-world.yml | Inactive entities tick less often |
| Increase merge-radius | spigot.yml | Fewer item entities |
| Lower entity-despawn-ranges | spigot.yml | Faster despawning |
| Villager lobotomize | purpur.yml | Caged villagers without AI |
| Enable DAB | paper-world.yml | Dynamic AI calculation |
Conclusion
Entity lag is one of the most common performance issues on Minecraft servers — but also one of the most fixable. With the configurations above, you can reduce CPU load from entities by 30–60% without your players noticing any meaningful difference in gameplay.
The key is to regularly monitor which entities on your server are consuming the most processing time. PulseNode makes this easy with continuous performance monitoring — so you'll immediately know when a new farm or player build causes an entity spike, allowing you to take targeted action before it ruins the experience for your community.