Skip to main content
NPCs standing alone in empty parts of the world cost almost nothing: an NPC with nobody near its home is skipped entirely. Servers with hundreds of NPCs run fine on the defaults, and three knobs in config.yml let you tune the trade-off between smoothness and tick time:
All three apply on /nme reload, no restart needed.

activation-range

The big one. An NPC with no player within this many blocks of its home is skipped entirely, at the cost of a single distance check. Measured from the home rather than the NPC itself, so it stays correct while a wandering NPC roams. Set it comfortably above the furthest an NPC needs to notice you: following reaches 16 blocks, and wandering or chasing NPCs also range out to their own radius. 0 turns the optimisation off and ticks every NPC.

behaviour-interval

How often an NPC re-decides where to walk, in ticks. The walking itself stays smooth between decisions, so raising this reduces decisions per second, not the smoothness of the movement.

look-interval

How often heads turn, in ticks. 1 is every tick and smoothest; 2 is usually indistinguishable and halves the work. Above about 4, head turns start to look steppy.

What it’s worth

Measured with 300 wandering, look-enabled NPCs in loaded chunks (Paper 26.2, server tick time, lower is better; about 0.9 ms of each figure is the NPC entities’ own vanilla cost, which no plugin can remove): NPCs nobody is near cost roughly nothing. Even with all 300 active at once, the load stays modest.