> ## Content Index
> Fetch the complete content index at: https://dedicatedmc.io/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# The SMP tuning guide: three tiers for Paper and Purpur
- URL: https://dedicatedmc.io/blog/smp-tuning-guide/
- Published: 2026-07-29T10:00:00.000Z
- Updated: 2026-10-30T12:20:38.000Z
- Description: A tiered Paper and Purpur config for a survival server, the free wins to apply everywhere, and exactly what each tuning tier trades away.
- Author: Mark E
- Tags: Guide, Minecraft, Performance, Server Admin

A practical, tiered configuration for a survival multiplayer server on Paper or Purpur. Pick one tier for the whole server, apply it, then re-profile with spark and adjust. These are strong starting points, not sacred numbers. Every server is different, so the loop is always: set a tier, watch MSPT and TPS at peak, nudge from there.

The tiers only differ on settings that trade vanilla behaviour for performance:

- **Full-Vanilla.** Every farm, redstone circuit and mob behaves exactly as vanilla. Only optimisations a player could never detect.
- **Kinda-Vanilla.** The widely accepted trade-offs. Almost nobody notices. A few very technical contraptions might.
- **Semi-Vanilla.** Aggressive. Real savings, but some AFK-range farms, item sorters and distance-sensitive builds will behave differently. Only pick this if raw TPS matters more than edge-case builds.

A note on key paths: the standard Paper, Spigot and Bukkit keys below are stable. Villager lobotomize is a Purpur feature and lives in `purpur.yml`, so on stock Paper skip that row and lean on the Paper villager tick-rates instead. Each generated config file is self-documenting, so confirm the exact path in your own files before relying on it, as key names do move between builds. Paths below are accurate as of Paper and Purpur for Minecraft 1.21.x.

## Free wins: apply these in every tier

These change nothing a player can see. There is no reason not to run all of them.

**paper-world-defaults.yml**

- `max-auto-save-chunks-per-tick: 8` (raise toward 20 if you run 20 or more players).
- `prevent-moving-into-unloaded-chunks: true`.
- `delay-chunk-unloads-by: 10s`.
- `treasure-maps.find-already-discovered.loot-tables: true` and `treasure-maps.find-already-discovered.villager-trade: true`. Stops a map request hanging the server while it hunts an ungenerated structure.
- `non-player-arrow-despawn-rate: 20` and `creative-arrow-despawn-rate: 20`. Skeleton and creative arrows you cannot pick up despawn after a second.
- `entity-per-chunk-save-limit`: cap each projectile type around 8 to 10 so a stray arrow machine cannot bloat a chunk.
- `anti-xray.enabled: true` if you want it. It costs a little CPU but is cheaper than any anti-xray plugin.

**server.properties**

- `network-compression-threshold: 256` (set to `-1` only if players connect over a LAN or the same machine).
- `sync-chunk-writes: false`. Stops each chunk save blocking on a synchronous disk write. This is the usual recommendation on Paper; leave it on only if your storage is unreliable and you have no backups.

## The tiered settings

Each row shows Full-Vanilla / Kinda-Vanilla / Semi-Vanilla, then what actually changes.

### View and tick distance (server.properties)

| Key                 | Full | Kinda | Semi | What changes                                                                                             |
| ------------------- | ---- | ----- | ---- | -------------------------------------------------------------------------------------------------------- |
| view-distance       | 10   | 8     | 7    | How far players see. Purely visual, and the single biggest lever on chunk load.                          |
| simulation-distance | 8    | 6     | 4    | How far chunks tick. Below 8 can affect farms that rely on distant chunks ticking, so drop it knowingly. |

Keep view-distance higher than simulation-distance. You can send players a wide view while ticking a smaller area.

### Mob spawning (bukkit.yml, paper-world)

Run `per-player-mob-spawns: true` (paper-world) in every tier. It gives each player a fair, singleplayer-like share of the mob cap, and it is what makes lower caps safe.

| Key                          | Full | Kinda | Semi | What changes                                                                    |
| ---------------------------- | ---- | ----- | ---- | ------------------------------------------------------------------------------- |
| spawn-limits.monsters        | 30   | 20    | 12   | Fewer hostile mobs loaded. Lower values thin mob-farm rates and general danger. |
| spawn-limits.animals         | 10   | 8     | 5    | Fewer passive animals.                                                          |
| ticks-per.monster-spawns     | 1    | 2     | 4    | Time between spawn attempts. Higher saves CPU, slightly slows spawns.           |
| mob-spawn-range (spigot.yml) | 6    | 4     | 3    | Chunks from a player mobs spawn in. Keep at or below simulation-distance.       |

### Entity activation

Activation range is a hard cutoff: an entity outside it stops ticking until a player comes closer. It is the main lever for distant mob cost on Paper, so the tiers lean on it.

| Key (spigot.yml)                  | Full | Kinda | Semi | What changes                                                                  |
| --------------------------------- | ---- | ----- | ---- | ----------------------------------------------------------------------------- |
| entity-activation-range.animals   | 32   | 24    | 16   | Lower stops distant animals ticking. Semi breaks some AFK-range animal farms. |
| entity-activation-range.monsters  | 32   | 24    | 24   | Monsters need a little range to stay responsive.                              |
| entity-activation-range.villagers | 32   | 24    | 16   | Affects village and iron farms at range.                                      |
| entity-activation-range.misc      | 16   | 12    | 8    | Item frames, paintings, boats.                                                |
| entity-activation-range.water     | 16   | 12    | 8    | Fish and squid.                                                               |

### Villagers

Throttling villager sensors is invisible to players (just less frequent checks), so every tier does it. Kinda and Semi add Purpur's lobotomize on top. On stock Paper, use the tick-rates alone.

| Key                                                                         | Full  | Kinda | Semi | What changes                                                                                                                                                                                                                              |
| --------------------------------------------------------------------------- | ----- | ----- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| tick-rates.behavior.villager.acquirepoi (paper-world)                       | 120   | 120   | 120  | The heaviest villager behaviour.                                                                                                                                                                                                          |
| tick-rates.behavior.villager.validatenearbypoi                              | 60    | 60    | 60   | POI validation frequency.                                                                                                                                                                                                                 |
| tick-rates.sensor.villager.secondarypoisensor                               | 80    | 80    | 80   | The competitor and secondary POI scan, often the villager hotspot in a profile.                                                                                                                                                           |
| tick-rates.sensor.villager.nearestbedsensor                                 | 80    | 80    | 80   | Bed search frequency.                                                                                                                                                                                                                     |
| mobs.villager.lobotomize.enabled (purpur.yml, under world-settings.default) | false | true  | true | Skips the brain for villagers that cannot reach a job site or bed. Kills the POI-scan lag in a penned trading hall. Full-Vanilla leaves it off and relies on confining villagers instead, which is a build choice, not a mechanic change. |

Whichever tier you run, the durable fix for a trading hall is still to bound the villager count and pen them so they cannot path. Config raises the ceiling. It does not remove the cost of an unbounded, dense population.

### Items, redstone and explosions (paper-world, spigot.yml)

| Key                                   | Full    | Kinda              | Semi               | What changes                                                                                                    |
| ------------------------------------- | ------- | ------------------ | ------------------ | --------------------------------------------------------------------------------------------------------------- |
| merge-radius.item (spigot)            | 2.5     | 3.0                | 4.0                | Items merge over a wider area. Too high and drops appear to teleport, and some farms miscount.                  |
| merge-radius.exp (spigot)             | 3.0     | 4.0                | 6.0                | Same idea for XP orbs.                                                                                          |
| alt-item-despawn-rate.enabled (paper) | false   | true               | true               | Junk drops (dirt, sand, cobble, leaves) despawn faster. Barely noticeable.                                      |
| redstone-implementation (paper)       | VANILLA | ALTERNATE\_CURRENT | ALTERNATE\_CURRENT | Faster redstone. Only very technical circuits see minor timing differences.                                     |
| optimize-explosions (paper)           | false   | true               | true               | Faster explosion maths, very slight damage inaccuracy.                                                          |
| nerf-spawner-mobs (spigot)            | false   | true               | true               | Spawner mobs get no AI until pushed. Most grinders still work on water streams, a few AI-dependent ones do not. |

Hoppers are deliberately left at vanilla in all three tiers. Raising `hopper-transfer` or `hopper-check` (spigot.yml) does save time, but it breaks item sorters and redstone clocks, which almost every SMP relies on. Not worth it here.

### Armour stands (paper-world)

| Key                                      | Full  | Kinda | Semi  | What changes                                                                                             |
| ---------------------------------------- | ----- | ----- | ----- | -------------------------------------------------------------------------------------------------------- |
| armor-stands.do-collision-entity-lookups | false | false | false | Removes armour-stand collision checks. Safe, and a real win if a build has many stands.                  |
| armor-stands.tick                        | true  | false | false | Off stops gravity and water pushing on stands. Breaks the rare contraption that relies on stand physics. |

## What breaks at each tier, in one place

- **Full-Vanilla:** nothing. If a player finds a difference, it is a bug, not a setting.
- **Kinda-Vanilla:** very technical redstone timing may drift (alternate-current), spawner grinders that need mob AI change (nerf-spawner-mobs), and armour-stand physics contraptions stop. Lobotomize makes penned villagers that cannot reach a job site or bed stop thinking, which is the point, but it also affects any build that relies on those villagers moving.
- **Semi-Vanilla:** the above, plus AFK-range farms may underperform (lower activation range), and mob-farm rates drop (lower caps). Item sorters are still fine because hoppers stay vanilla.

## After you apply a tier

1. Restart, let the server settle, and get players on it.
2. Run a spark profiler over a busy period, not an idle one. The averaged tree lies when the load is spiky, so drag-select the worst window.
3. Read MSPT, not vibes. If a tick sits well under 50ms with headroom, you are done. If not, expand `processPacketsAndTick` and find the real cost before you change more settings.
4. Change one thing at a time. Cargo-culting a whole config makes it impossible to know what helped.