Skip to main content
Entities are one of the most significant performance consumers in Minecraft servers. Paper provides multiple systems to optimize entity processing while maintaining gameplay quality.

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:
Each type has its own activation range configuration.

Configuration

File: config/spigot.yml

Activation Range Values

Reducing ranges below recommended minimums can break farms, mob AI, and gameplay mechanics.

Wake-Up Inactive Entities

Periodically “wake up” inactive entities to maintain some activity:
-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
Set tick-inactive-villagers: true to prevent villager trading halls from breaking. Disable for pure performance if you don’t use villagers.

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
Enable to limit vertical tracking distance (useful for tall builds):

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
Benefits:
  • More consistent spawning for all players
  • Prevents spawn camping at mob farms
  • Better mob distribution across the world
Comparison:
Keep enabled for survival servers. May disable for specialized farm servers where global caps are preferred.

Mob Spawn Limits

File: config/paper-world-defaults.yml
Set to -1 for default Minecraft limits, or specify custom limits:
Lowering spawn limits below defaults significantly changes gameplay balance.

Ticks Per Spawn

Control spawn attempt frequency per mob category:
Default values (from vanilla):
  • monster: 1 tick (every tick)
  • creature: 400 ticks (20 seconds)
  • water_creature: 1 tick
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 false for static armor stands (significant performance boost)
For servers with hundreds of decorative armor stands, set tick: false for major performance gains.

Markers

Marker entities are invisible entities for technical use. Disable ticking if not using them.

Pathfinding Optimization

Reduces pathfinding performance impact when entities can’t reach their destination.
  • Default: 200 ticks (10 seconds)
  • Disabled: Set to -1

Experience Orb Optimization

File: config/paper-world-defaults.yml
Set to a value (e.g., 100) to limit XP orb merging:
File: config/paper-global.yml
Limit XP orb groups in an area to reduce entity count.

Despawn Ranges

File: config/paper-world-defaults.yml
  • Soft range: Entities have a chance to despawn
  • Hard range: Entities always despawn
Custom example:

Entity-Specific Optimizations

Item Despawn Rates

File: config/spigot.yml
File: config/paper-world-defaults.yml (alternative despawn rates):

Arrow Despawn Rates

File: config/paper-world-defaults.yml
Custom configuration:

Monitoring Entity Performance

Using Spark

Profile entity ticking:
Look for:
  • tickEntity - Entity AI and physics
  • ActivationRange - EAR system performance

Count Entities

Or use a plugin like Essentials:

Optimization Strategies

1. Aggressive Performance (PvP/Minigames)

2. Balanced (Survival)

3. Vanilla+ (Minimal Changes)

Troubleshooting

Mobs Not Attacking

Cause: Activation range too low Solution: Increase monsters 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 loaders

Villagers 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:
  1. Reduce spawn limits
  2. Enable alt-item-despawn-rate for common items
  3. Use entity-per-chunk-save-limit

See Also