πŸ“˜ Complete Minecraft Performance Optimization Guide (Spigot, Paper, Purpur, PufferFish)

Image

  • 09/11/2025

:blue_book: Complete Minecraft Performance Optimization Guide

Spigot, Paper, Pufferfish, Purpur – Essential Settings, Plugins, and Best Practices

──────────────

:wrench: Introduction

──────────────

The performance of a Minecraft server depends as much on hardware quality as on how precisely it is configured.
This guide is for administrators who want to get the best out of their setup, whether for a survival, minigame, roleplay, or semi-RP server.

We’ll cover recommended settings for key configuration files (bukkit.yml, spigot.yml, paper.yml, purpur.yml…), along with tips on Java, hardware, and useful plugins.

The goal: maintain a stable 20 TPS, reduce CPU load, and ensure a smooth experience even with many players or entities.

.

:gear: Choosing the Right Base: Spigot, Paper, Pufferfish, or Purpur?

──────────────

Spigot: the historical baseβ€”stable and compatible with most plugins, but its optimizations are limited and outdated.
Paper: now the standard choice, offering better multithreading and many configurable optimizations.
Pufferfish: a performance-focused fork of Paper (pathfinding, memory, hoppers). Ideal for large servers.
Purpur: built on Pufferfish, adds hundreds of customization options without sacrificing stability.

In short:
β€’ Standard server β†’ Paper
β€’ Heavily loaded server β†’ Pufferfish
β€’ Custom server β†’ Purpur
β€’ Avoid β€œmiracle” or paid JARs claiming unreal performance.

.

:globe_showing_europe_africa: Render & Simulation Distances

──────────────

Key parameters:
β€’ simulation-distance β†’ distance where AI, redstone, and entities are active (CPU impact).
β€’ view-distance β†’ distance of chunks visible to players (network/rendering impact).

Recommended starting points:
β€’ Overworld: simulation 4 / view 8–10
β€’ Nether/End: simulation 3–4 / view 6–8
β€’ Keep view-distance β‰₯ simulation-distance for smooth visuals without excess AI.

Where to adjust:
β€’ server.properties β†’ simulation-distance & view-distance (global values).
β€’ Paper (per world) β†’ paper-world-defaults.yml or each β€œworld” file.
β€’ mob-spawn-range β†’ spigot.yml β†’ world-settings β†’ default β†’ mob-spawn-range

# spigot.yml (example) world-settings: default: mob-spawn-range: 4 # Recommended 3–6, never above simulation-distance

Why adjust it?
β€’ Smaller radii concentrate mobs near players, reducing total entity count.
β€’ Keeping mob-spawn-range ≀ simulation-distance avoids spawns in inactive chunks.

Additional Paper/Pufferfish options:
β€’ prevent-moving-into-unloaded-chunks: true β†’ prevents elytra freeze issues.
β€’ delay-chunk-unloads-by: 10s β†’ prevents constant chunk loading/unloading.

.

:gear: Optimizing the bukkit.yml File

──────────────

The bukkit.yml file controls mob spawn limits and frequency. Default values are often too high.

spawn-limits: sets the maximum number of active mobs per player.
Values that are too high quickly overload the server, especially with multiple players.

spawn-limits: monsters: 40 animals: 8 water-animals: 5 water-ambient: 5 ambient: 1

ticks-per: defines how often Minecraft tries to spawn mobs.
Increasing these values spreads out spawn cycles and relieves CPU load.

ticks-per: animal-spawns: 400 monster-spawns: 10 water-spawns: 20 water-ambient-spawns: 20 ambient-spawns: 20 autosave: 6000

:light_bulb: The goal is to reduce unnecessary scans while keeping natural mob activity.

.

:gear: Optimizing the spigot.yml File

──────────────

spigot.yml contains key parameters influencing entities and redstone.

entity-activation-range:
Defines the distance at which entities become β€œactive.”
The fewer entities active far from players, the better your performance.

entity-activation-range: animals: 16 monsters: 24 raiders: 48 misc: 8 tick-inactive-villagers: false

entity-tracking-range:
Distance at which entities are visible to players.
Slightly larger than activation-range to prevent pop-ins.

entity-tracking-range: players: 48 animals: 48 monsters: 48 misc: 32 display: 128 other: 64

merge-radius:
Merges ground items and XP to reduce entity count.

merge-radius: item: 4.0 exp: 6.0

Other recommendations:
β€’ mob-spawn-range: 4–6
β€’ nerf-spawner-mobs: true (disables AI for mobs from spawners)
β€’ max-entity-collisions: 2
β€’ arrow-despawn-rate: 300
β€’ item-despawn-rate: 4000

:light_bulb: Combine these settings with balanced spawn limits for smooth performance.

.

:gear: Optimizing the paper.yml File

──────────────

paper.yml adds extra optimizations for redstone, hoppers, entities, and chunks.

Saving & spawns:
β€’ max-auto-save-chunks-per-tick: 6
β€’ per-player-mob-spawns: true (balances mob spawns per player)

Despawn ranges:

despawn-ranges: soft: 28 hard: 96

Redstone and hopper optimization:

redstone-implementation: ALTERNATE_CURRENT use-faster-eigencraft-redstone: true hopper: cooldown-when-full: true disable-move-event: true amount: 1

:light_bulb: Enable the Alternate Current redstone engine to greatly reduce CPU load from circuits.

.

:gear: Optimizing pufferfish.yml & purpur.yml Files

──────────────

Pufferfish and Purpur inherit from Paper but offer deeper optimization settings.

Main recommendations:

region-file-cache-size: 256 enable-async-mob-spawning: true entity-collision-optimization: true use-faster-block-entity-ticking: true

Purpur-specific:

villager-brain-ticks: 2 entities-can-use-portals: false

:light_bulb: These reduce the impact of complex entities (villagers, ticking blocks, collisions, etc.).

.

:gear: Useful Performance Plugins

──────────────

β€’ Spark β†’ real-time CPU/memory profiling.
β€’ FarmLimiter / FarmControl β†’ limits entities in farms.
β€’ Plan β†’ overall performance statistics.

:warning: Avoid so-called β€œmiracle” plugins (LagRemover, UltimateLagFixer, etc.) β€” they’re often useless or harmful.

.

:bar_chart: Conclusion & Best Practices

──────────────

β€’ Use Paper, Pufferfish, or Purpur.
β€’ Fine-tune distances, AI, and redstone.
β€’ Analyze with Spark and monitor your TPS.
β€’ Restart properly and back up before updates.
β€’ Limit heavy entities (villagers, farms).

:warning: Avoid:
β€’ β€œMiracle” plugins
β€’ Extreme settings
β€’ Outdated Java versions

:sparkles: In summary:
A proper balance between hardware, configuration, and maintenance = steady 20 TPS and happy players!


πŸͺ