Picking a suitable server jar is the first step in optimising your server. We strongly recommend you use Paper which is an optimised version of the classic Spigot server jar. Along with Paper, and Spigot - you can easily install a variety of servers jar from the Versions tab with any servers you have with SoulNode.
Server Configuration
Bukkit.yml
spawn-limits
While there is more to this than "mobs per player", lower values mean fewer mobs. Avoid going too low or the mob shortages will be noticeable. Subsequent values in the guide will make the reduction less noticeable.
The following values are highly recommended;
spawn-limits:
monsters: 50
animals: 8
water-animals: 8
water-ambient: 5
ambient: 5
chunk-gc.period.in.ticks
This unloads vacant chunks faster, ticking fewer chunks meaning a reduced TPS consumption.
chunk-gc:
period-in-ticks: 400
ticks-per.(type)-spawns
This sets how often (in ticks) the server attempts to spawn entities. Increasing the time between spawn attempts should not impact gameplay. Offsetting the tick rates spreads them out more.
ticks-per:
animal-spawns: 400
monster-spawns: 5
water-spawns: 11
water-ambient-spawns: 21
ambient-spawns: 31
Spigot.yml
save-user-cache-on-stop-only
Should the server constantly save user data (false) or delay that task until a stop/restart (true)? This is nice TPS savings on Spigot (less on Paper since it's more efficient).
Take regular backups to avoid data loss in the rare event of a fatal crash, if you enabled this feature.
settings:
...
save-user-cache-on-stop-only: true
...
mob-spawn-range
This sets the max mob spawning distance (in chunks) from players. After limiting spawns in Bukkit, this will condense mobs to mimic the appearance of normal rates.
If your view distance is 6 or smaller, set the spawn range to 1 less than the view distance.
world-settings:
default:
...
mob-spawn-range: 6
...
entity-activation-range
Entities past this range will be ticked less often. Avoid setting this too low or you might break mob behaviour (mob aggro, raids, etc).
Villages should be left alone (if possible) to protect standard game mechanics.
world-settings:
default:
...
entity-activation-range:
animals: 16
monsters: 24
raiders: 48
misc: 8
...
tick-inactive-villagers
Enabling this prevents the server from ticking villagers outside the activation range.
Vanilla behaviour ticks all villagers in loaded chunks. Enable villagers-active-for-panic to save some iron farms from breaking.
world-settings:
default:
...
entity-activation-range:
...
tick-inactive-villagers: false
...
merge-radius
Merging items means less ground item ticking. Higher values allow more items to be swept into piles.
world-settings:
default:
...
merge-radius:
exp: 6.0
item: 4.0
...
nerf-spawner-mobs
When enabled, mobs from spawners will not have AI (will not swim/attack/move). This is big TPS savings for massive mob farms but also messes with behaviour. A farm limiter plugin might be a better solution.
world-settings:
default:
...
nerf-spawner-mobs: true
...
item-despawn-rate
The time (in ticks) before a ground item is removed. While the TPS savings can be significant if reduced, it also impacts gameplay on servers where returning to dropped items is critical.
Use your own judgement for what value you should set this to. It's measured in ticks and there are 20 ticks are in 1 second.
world-settings:
default:
...
item-despawn-rate: 6000
...
arrow-despawn-rate
Similar to item-despawn-rate, but for arrows. Some servers may want to keep arrows on the ground longer, but most will have no complaints if removed faster.