New Server Bootstrap
Stand up a working base server, then layer the gamemode stack on top.
Current facts (verified 2026-06-07): Minecraft is 26.1.x. Latest Paper is 26.1.2 build 69. Paper 26.1+ requires Java 25. Velocity is 3.5.0-SNAPSHOT (needs Java 21+). Always re-query the API for the live latest build at setup time.
Steps
- Scope. Single server or a network? Gamemode? Host (self-hosted, Pterodactyl/Pelican, other)? Player count? → recommend Paper by default (see Folia note below).
- Download the latest Paper build — use the Fill v3 API (the old v2 API stopped builds
2025-12-31). Do NOT hand-construct download URLs; read the URL from the API response. Helper:
Manually:node "${CLAUDE_PLUGIN_ROOT}/skills/new-server-bootstrap/scripts/fetch-paper.mjs" 26.1.2 # prints the resolved STABLE build + download URL (and --download to fetch it)GET https://fill.papermc.io/v3/projects/paper/versions/{MC}/builds, pick the newestchannel: STABLE, downloaddownloads."server:default".url. A descriptiveUser-Agentis required by the API. - Install Java 25 (Paper 26.1+ will not start on older Java). Verify
java -version. - EULA + first run. Run once:
java -jar paper.jar --nogui→ it writeseula.txtand stops. Seteula=true(or pass-Dcom.mojang.eula.agree=true). Restart → it generatesserver.properties+ the world and comes online. - Startup script. Use the template
assets/startup.sh.tmpl(Java 25 + Aikar's/G1 flags +--nogui). KeepXms == Xmxwith host headroom (leave ~1–1.5 GB; on a panel keepXmxbelow the container limit — seepterodactyl-ops). Aikar's flags are PaperMC's documented default; only consider Generational ZGC as a Java-25 alternative, never mixed. - server.properties starter values — see
assets/the table below. Setonline-mode,view-distance,simulation-distance,max-players,motd,difficulty,gamemode. - Network? If multiple servers, set up Velocity (
assets/velocity.example.toml): first run generatesvelocity.toml+forwarding.secret; setplayer-info-forwarding-mode = "modern", put the secret into each backend'spaper-global.yml(assets/paper-global.example.yml), set each backendonline-mode=false, and firewall backend ports. Full detail:proxy-network. - Gamemode stack → hand off to
gamemode-stacksfor the archetype's plugins. - Review → run
audit-configon the finished tree; tune withperformance-tuning.
server.properties starter values
| Key | Default | Sane starter |
|---|---|---|
online-mode |
true | true standalone; false only behind a proxy (never expose such a backend) |
view-distance |
10 | 8–10 (6–8 high-pop) |
simulation-distance |
10 | 6–8 (biggest TPS lever; keep ≤ view-distance) |
max-players |
20 | your real cap |
difficulty |
easy | normal for most SMP |
gamemode |
survival | per server type |
spawn-protection |
16 | 0 if unneeded |
enable-rcon |
false | keep false; if enabled, strong password + firewall (confirm first) |
Folia vs Paper
Default to Paper. Choose Folia only with ≥16 physical cores, high concurrent players
spread across regions (skyblock/SMP-style), and a plugin list where every plugin declares
folia-supported: true. Most stacks are not Folia-ready.