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 inonEnable, cancel/flush/close inonDisable. - 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.