moincraft

๐Ÿ–ฅ๏ธ Server

Paper/Purpur server operation, JVM flags, config tuning, profiling, pregen, and plugin rules.

The Minecraft server layer is Paper/Purpur-oriented. Prefer modern Paper/Purpur over legacy Spigot unless a specific compatibility constraint requires otherwise.

Runtime baseline#

  • Java 21+ for modern Paper/Purpur.
  • Fixed heap sizing (-Xms = -Xmx) with OS headroom.
  • Aikar-style G1GC flags for predictable pauses.
  • Paper/Purpur config changes tracked by intent, not copied blindly.

Key tuning areas#

Area Principle
server.properties Keep simulation/view distance aligned with bot and hardware limits.
Bukkit/Spigot/Paper configs Reduce entity, collision, and container tick pressure deliberately.
Spark Profile before tuning. Fix hot paths, not vibes.
Chunky/world pregen Pregenerate active exploration areas before blaming plugins.
Dynmap/map plugins Avoid internal public webserver; use external reverse proxy/cache if published.

Plugin rules#

  • Keep lifecycle clean: minimal onLoad, register/validate in onEnable, cancel/flush/close in onDisable.
  • Avoid /reload; use full restarts.
  • World/entity/block mutation belongs on the correct server thread/scheduler.
  • DB/HTTP/file work belongs async with timeouts.
  • Validate command args and rate-limit heavy operations.
  • Secrets live in environment/config stores, never hardcoded.

Sources: wiki/content/docs/server.md, moincraft/docs/moincraft-stack-cheatsheet.md, moincraft/docs/security-hardening.md.