Repository navigation
Configuration
LucasTHCRR edited this page Oct 22, 2026
·
1 revision
Everything lives in paperstream.yml next to server.properties. Reload with /paperstream reload, settings marked "needs a restart" in their description take effect after a restart.
The values below are the medium defaults, see Profiles for the others.
profile: medium selects the profile. profile-applied is written by PaperStream, do not change it.
| Setting | Default | What it does |
|---|---|---|
chunks.directional-loading.enabled |
true |
Load and send chunks in front of the player before the ones behind. |
chunks.directional-loading.bias |
0.6 |
0 = plain distance order, 0.9 = strongly prefer the view/movement direction. |
chunks.directional-loading.inner-radius |
2 |
Chunks within this radius always load first, regardless of direction. |
chunks.prefetch.enabled |
false |
Generate chunks ahead of fast moving players (elytra, boats, sprinting). |
chunks.prefetch.lookahead-chunks |
6 |
How many chunks beyond the view distance get prepared. |
chunks.prefetch.max-per-second |
40 |
Upper limit of prefetched chunks per player and second. |
chunks.prefetch.min-speed |
0.5 |
Minimum horizontal speed in blocks per tick before prefetching starts. |
chunks.prefetch.keep-loaded-ticks |
300 |
How long a prefetched chunk stays loaded when nobody reaches it. |
chunks.generation-boost |
2.0 |
Fast moving players may generate this many times more chunks at once, as long as the world is not lagging. 1 = off. |
chunks.send-budget-ms |
0.0 |
Main thread milliseconds per tick for building chunk packets. Keeps MSPT flat while chunks load fast. 0 = no limit. |
chunks.fresh-chunks.enabled |
true |
Chunks that were just loaded and have no player close by wait a moment before their block entities, leaf updates and mob spawning run. Mobs loaded from the world file follow the normal activation range right away instead of ticking fully for 10 seconds. |
chunks.fresh-chunks.warmup-seconds |
5 |
Seconds a freshly loaded chunk waits. A player coming close ends the wait at once. |
chunks.fresh-chunks.player-radius |
2 |
Chunks around a player that always tick right away. |
chunks.unload.delay-seconds |
30 |
Chunks a player left stay loaded this long, so flying back or turning around does not read them from disk again. Costs some RAM. -1 = use delay-chunk-unloads-by from paper-world-defaults.yml (10 seconds in Paper). |
chunks.unload.min-per-tick |
50 |
Chunks unloaded at least per tick. Lower = unloading is spread over more ticks, smoother but RAM is freed slower. Paper: 50. |
chunks.unload.fraction-per-tick |
0.05 |
Share of the waiting chunks unloaded per tick when more are waiting. Paper: 0.05. |
chunks.worker-priority.nice |
5 |
Linux only: how many nice steps the chunk worker threads run below the main thread (0 = same priority, up to 19). With 2 to 4 cores the main thread then gets the CPU first while chunks generate. Needs a restart. |
chunks.lag-generation-factor |
0.5 |
While a world is lagging (world.lag-protection.mspt), players may generate only this share of chunks at once. 1 = no change. |
chunks.region-compression |
lz4 |
Compression for newly written chunks: lz4, deflate, none or keep (use server.properties). Old chunks stay readable. |
chunks.pregen.max-concurrent |
16 |
Chunks generated at the same time by /paperstream pregen. |
chunks.pregen.pause-above-mspt |
45.0 |
Pregeneration pauses while the average MSPT is above this value. |
chunks.fast-travel.enabled |
false |
Off by default because it changes how the world behaves: while a player flies fast, only a small area around them ticks (mobs, crops, redstone). View distance stays the same. |
chunks.fast-travel.min-speed |
1.2 |
Horizontal speed in blocks per tick from which a player counts as fast (1.2 = 24 blocks per second). |
chunks.fast-travel.simulation-distance |
3 |
Simulation distance in chunks for fast players. |
chunks.fast-travel.restore-after-ticks |
60 |
Ticks a player has to be slow again before the normal simulation distance comes back. |
| Setting | Default | What it does |
|---|---|---|
entities.tick-throttle.near-distance |
32.0 |
Beyond this many blocks idle mobs tick every 2nd tick. |
entities.tick-throttle.far-distance |
56.0 |
Beyond this many blocks idle mobs tick every 4th tick. |
entities.tick-throttle.lag-mspt |
40.0 |
If a world averages more MSPT than this, throttled mobs in that world tick half as often again. |
entities.tick-throttle.enabled |
true |
Idle mobs far from every player tick less often. Fighting, riding, leashed, hurt or falling mobs are never throttled. |
entities.pathfinding.max-per-tick |
80 |
New paths per world and tick. Mobs chasing an entity get twice this. |
entities.pathfinding.budget-enabled |
true |
Limit new path calculations per world and tick. Mobs that hit the limit simply retry a moment later. |
entities.villager-brain-interval |
20 |
Villagers that have not moved for 10 seconds run their AI only every this many ticks. Trading villagers are never throttled. 1 = off. |
entities.activation-check-interval |
1 |
Check which entities are near a player (entity activation range) only every this many ticks. 1 = every tick like Paper. |
entities.item-piles.max-per-block |
64 |
Dropped items in one block up to which everything ticks normally. |
entities.item-piles.enabled |
true |
Dropped items piling up in one block (item lag machines, broken farms) tick only every few ticks. Nothing is removed: picking up, hoppers and despawning work as before. Death drops never reach the limit. |
entities.item-piles.tick-interval |
20 |
Items in a bigger pile tick only every this many ticks (20 = once per second). |
entities.stack-guard.enabled |
true |
Refuse placing armor stands, minecarts or boats once too many are in one spot (lag machines). Existing ones stay, plugins and commands are never limited. |
entities.stack-guard.max-per-block |
8 |
Of one kind (armor stands, minecarts, boats) in a single block. 0 = no limit. |
entities.stack-guard.max-per-chunk |
96 |
Of one kind in a whole chunk. 0 = no limit. |
entities.stack-guard.message |
<red>Too many of these in one spot. |
Action bar text for a player whose placement was refused (MiniMessage). Empty = no message. |
| Setting | Default | What it does |
|---|---|---|
world.lag-protection.mspt |
45.0 |
5 second average MSPT of a world from which on it counts as lagging. |
world.lag-protection.enabled |
true |
While a world is slow: half pathfinding budget and natural spawning only every 2nd tick, for that world only. |
world.explosions.max-per-chunk-per-tick |
32 |
Explosions beyond this in one chunk and tick are dropped (TNT cannons, creeper farms). 0 = no limit. |
world.idle.after-seconds |
60 |
Seconds without players before idle mode starts. |
world.idle.enabled |
true |
With nobody online, worlds tick only once per second. Plugins keep running normally. |
world.redstone-clocks.max-per-second |
400 |
Redstone component updates (repeaters, comparators, observers, torches, pistons, ...) per chunk and second that still count as normal. |
world.redstone-clocks.throttled-per-second |
40 |
Redstone updates per second a slowed down chunk still gets. The rest waits for the next second. |
world.redstone-clocks.enabled |
true |
Slow down redstone clocks that run far faster than any farm (lag machines). Nothing gets broken, the chunk only gets fewer redstone updates. |
world.redstone-clocks.trigger-seconds |
10 |
A chunk has to stay above the limit this many seconds in a row before it gets slowed down. Short bursts like a big piston door never trigger. |
world.redstone-clocks.cooldown-seconds |
60 |
How long a chunk stays slowed down. It starts again while the clock keeps running. |
world.redstone-clocks.notify |
true |
Tell players with paperstream.notify.redstone (ops by default) where a clock was slowed down. The console always gets it. |
| Setting | Default | What it does |
|---|---|---|
startup.plugin-check |
true |
After the start, list plugins that failed to start and plugins that do the same job as a PaperStream feature. |
| Setting | Default | What it does |
|---|---|---|
proxy.link |
false |
Off by default. Lets this server pair with PaperProxy: /paperproxy link pair on the proxy, then /paperstream pair here. Each part below is its own switch.
|
proxy.announce-shutdown |
true |
On stop or restart, ask the proxy to move players to another server or its limbo first, so nobody gets kicked. Only with proxy.link on. |
proxy.configure-forwarding |
false |
Let pairing set up Velocity forwarding and online-mode by itself. Off: nothing is changed, the console shows what to set in paper-global.yml. |
proxy.allow-restart |
false |
Allow the proxy to restart this server (/paperproxy link restart, rolling restarts). |
proxy.shutdown-wait-seconds |
5 |
On stop, wait at most this long for the proxy to move players to other servers. |
proxy.exec-allowed |
[] |
Commands the proxy may run here with /paperproxy link exec. Empty = none (default). Only the first word counts, so "paperstream" allows all /paperstream subcommands, "*" allows every command. |
PaperStream is not affiliated with PaperMC. Made by LucasTHCR. Discord: https://dc.gg/paperstream · Support: support@paperstream.dev