EntiPerf
EntiPerf reduces server and entity lag. It targets the work that grows with entity count (AI, pathfinding, collisions, item and XP piles, rendering) and also removes server freezes caused by blocking chunk lookups. It is built to stay out of the way of other performance mods.
Beta (0.1.5): Gains depend on your world and server. Measure with spark before and after installing.
Where it helps
- Server (TPS / MSPT): This is where most of the gain is. Install it on the server.
- Client (FPS): Render distance limits, LOD, and occlusion culling. Install it on the players' clients too, if you want these.
It also works in singleplayer, where both sides run together.
Features
Server-side
- Distance-based AI ticking: Mobs far from players think less often. Their movement and navigation keep running, so they do not stutter. Mobs that are chasing or attacking a player are not affected.
- Inactive distant mobs: Mobs far beyond the activation range move and think only every few ticks, like Paper's activation range. Villagers, raiders, protected mobs, and mobs that are falling or could drown are never paused.
- Pathfinding throttling: Failed path searches wait before retrying. Distant mobs recalculate paths less often.
- Collision throttling: Crowded mobs check pushing less often. Vanilla cramming damage still applies, so farms do not grow without limit.
- Villager optimization: Villagers in locked trading cells skip most brain scans. Trading, restocking, and iron golem detection keep working.
- Zombie block search skip: Zombies stop searching for turtle eggs when no matching block is nearby. Behavior is the same as vanilla.
- Item and XP merging: Nearby stacks and orbs merge. Stack limits, pickup delays, and ownership are respected. XP totals stay exact.
- Chunk entity caps: Soft and hard limits per chunk. Natural spawns stop when a chunk is full.
- Cleanup: Stuck falling blocks, grounded arrows, and armor stands are handled.
- Non-blocking chunk lookups: When vanilla or any mod asks for a chunk "only if it is already loaded", the server no longer freezes while that chunk is still loading. It answers "not loaded" instead, like Paper's chunk system. On a test server this wait caused multi-second ticks.
- Chunk wait detector: Logs when the server thread waits for a chunk and names the likely mod. See
/entityperf chunkwaits.
- Crash guard: An entity that throws an error during its tick is quarantined instead of crashing the server. Automatically disabled if Neruina is installed.
Protected by default: named mobs, tamed and leashed mobs, bosses, passengers in boats and minecarts, and villagers that are trading or in danger. You can change this in the config.
Client-side
- Per-category render distance (mobs, animals, items, XP orbs, block entities)
- Occlusion culling for entities behind walls (turned off automatically when EntityCulling is installed)
- Shadow, name tag, and fire effects reduced at distance
- Optional HUD with TPS, MSPT, FPS, and optimization counters
Configuration
- In-game: Press F8 to open the settings screen. Press F9 to toggle the HUD.
- Profiles:
BALANCED, AGGRESSIVE, FARM_REDSTONE_SAFE, or CUSTOM. Switch them in the settings screen or with /entityperf profile <name>.
- Files:
entityperf-server.toml (server) and entityperf-client.toml (client).
- Per-entity rules: Whitelist entities to exclude them, or set custom tick rates with
namespace:id=maxTickInterval|activationRange, for example minecraft:sheep=6|16.
Commands (alias /ep)
/entityperf status: current counters
/entityperf top: densest chunks
/entityperf profile <name>
/entityperf whitelist add|remove <id>
/entityperf rule set|remove|list
/entityperf quarantine list|clear
/entityperf cleanup
/entityperf chunkwaits and /entityperf chunkwaits reset
/ep reload
Compatibility
Detects and works alongside Sodium, Iris, EntityCulling, Lithium, Neruina, spark, and Observable. Sodium and EntityCulling are optional. The mod runs without them.
Requirements
- Minecraft 1.21.1
- NeoForge 21.1 or newer
License
MIT