Skip to content

Tuner

Paper already has most of the levers. Every "Paper optimisation guide" is a list of keys in paper-world-defaults.yml, spigot.yml and bukkit.yml that Paper ships conservative and tells you to hand-edit. EmberMC's tuner is that list as a command: it shows you the plan, tells you what players could notice, backs the files up, writes, and can put everything back.

/ember tune show performance     what the preset would change, writing nothing
/ember tune apply performance    write it, with backups
/ember tune revert               write upstream defaults back
/ember tune backups              list the backups every apply made
/ember tune restore <stamp>      put that backup's files back exactly - the real undo

Presets: vanilla (upstream defaults), balanced, performance, extreme. Each preset builds on the gentler one.

What it looks like

EmberMC » Tune » performance (preview)
  config/paper-world-defaults.yml  (applies on /paper reload)
    misc.redstone-implementation: VANILLA → ALTERNATE_CURRENT
      you may notice: Update order can differ from vanilla in rare edge-case contraptions.
    misc.update-pathfinding-on-block-update: true → false
      you may notice: A mob walking towards a spot may take a moment longer to notice a block placed in its path.
    collisions.max-entity-collisions: 8 → 4
      you may notice: Entities in a dense crowd push fewer neighbours per tick.
    hopper.disable-move-event: false → true
      kept: EmberEssentials listen for InventoryMoveItemEvent and would stop seeing hopper moves
  spigot.yml  (needs a restart)
    world-settings.default.entity-activation-range.animals: 32 → 24
  Summary: 27 to change, 4 already set, 1 kept for safety
  Nothing written. /ember tune apply performance to write it.

The rules it follows

Show before write. show computes the whole plan and touches nothing. apply writes exactly that plan.

Every line says what you could notice. A preset is a set of trade-offs. Each key carries the observable effect in plain words, so you decide with your eyes open - nothing is hidden behind "optimised".

Refuse what would break a plugin. Some keys are only safe for some plugin sets. Disabling the hopper move event is the classic one: it is a big win on a plugin-heavy server unless a plugin relies on InventoryMoveItemEvent, in which case it silently breaks protection or logging. The tuner checks the live server and keeps the key, naming the plugins, rather than applying it.

Back up first, and know the difference between revert and restore. Every file written is copied to ember-backups/<file>.<timestamp>.bak beforehand. revert writes Paper's defaults - which is not necessarily what you had. If your bukkit.yml said monsters: 0 on purpose, revert makes it 70. restore <stamp> puts your own files back byte for byte; backups lists the stamps, oldest last, and the oldest is usually the state before you started.

Say when it takes effect. Paper's world defaults apply on /paper reload. spigot.yml and bukkit.yml are read at startup only; the plan says so per file and the summary reminds you.

What the presets change

Areabalancedperformanceextreme
Redstonemisc.redstone-implementationAlternate Current
Pathfindingmisc.update-pathfinding-on-block-update-off
VillagersPOI validation · secondary POI sensor (ticks)-60 · 80120 · 120
Armor standscollision lookups · tickinglookups off+ ticking off
Collisionscollisions.max-entity-collisions-42
Projectile pilesentity-per-chunk-save-limit arrows · pearls · orbs · snowballs · fireballs16 each
Explosionsenvironment.optimize-explosionson
Hoppersignore occluding blocks · empty check every N ticks · move event-on · 4 · -on · 8 · off (guarded)
Tick ratesspawners · container update · grass spread-2 · 3 · 44 · 3 · 4
Chunksprevent moving into unloaded · auto-save chunks/tickon · -on · 8
Activation range (Spigot)animals · monsters · raiders · misc · water · villagers · flying-24 · 24 · 48 · 8 · 8 · 24 · 2416 · 20 · 32 · 4 · 8 · 16 · 16
Inactive villagers (Spigot)tick-inactive-villagers-off
Tracking range (Spigot)animals · monsters · misc-48 · 64 · 3248 · 48 · 32
Spawning (Spigot / Bukkit)mob-spawn-range · monsters · animals · water · ambient · ticks-per monster spawns-6 · 50 · 8 · 3 · 8 · 24 · 40 · 8 · 3 · 8 · 4
Merging (Spigot)item · exp merge radius-3.5 · 4.03.5 · 6.0
Arrows (Spigot)despawn rate (ticks)-300
Spawner mobs (Spigot)nerf-spawner-mobs--on

- leaves Paper's default; means the same as the preset to the left. vanilla restores every key to Paper's shipped default. The exact key for every row is what /ember tune show <preset> prints.

Where the numbers come from

One of these keys has been measured on EmberMC's own profiler: the redstone engine, on a 961-dust plane with a clock, went from 2.20 ms to 0.20 ms mean in the block-ticks phase (p95 9.25 → 0.74). That is Paper's Alternate Current engine; EmberMC's contribution is turning it on by default for new installs. The rest of the table is Paper's documented behaviour and the settled practice of large survival servers. Treat a preset as where to start; the profiler is how you find out what it did on your server.