The 17 shipped YAML resources, the real config.yml key map with defaults, the addon-config pattern, and the edit-reload-verify loop.
System is built config-first, and its configuration surface is fully documented here rather than hidden behind "check the file": your build ships 17 YAML resources — the four core files plus twelve addon configs — with working defaults that make the server usable from the first boot. The right way to configure is not to rewrite anything; it is to switch off what you do not need, connect the integrations your network uses, and iterate with reloads instead of restarts.
| File | Contents |
|---|---|
config.yml | The master configuration: restart schedule, backups, protection, login lock, scoreboard toggles and the 13 addon master switches |
messages.yml | All core /system texts. The prefix ships empty by default and is fully configurable; the file carries a config version and is auto-merged when a release adds keys |
scoreboard.yml | Scoreboard title + lines, one PlaceholderAPI placeholder per line |
spawn.yml | Written by /system setspawn: spawn coordinates plus the random-region corners |
addons/<name>/config.yml × 12 | One file per addon — animations, antiafk, antiswear, autofly, chatemojis, doublejump, economy, interactivebooks, itemjoin, joinmessage, kaboom, lobbyfireworks |
The addon-config pattern is consistent and worth internalizing: each addon file carries that addon's detailed settings and its own `messages:` tree, while the on/off switches live centrally in config.yml under addons.<name>.enabled. Thirteen toggles exist there — and exactly one of them ships off: addons.economy.enabled is false by default, as covered on the installation page.
These are the real top-level keys with their shipped defaults, so you can plan changes before opening the file. Everything is applied by /system reload unless noted otherwise.
| Key | Default | Controls |
|---|---|---|
restart-time | 04:00 | Daily restart time, HH:mm |
restart-timezone | Asia/Tehran | Timezone for the restart schedule |
pre-shutdown-backup-time | 10 | Minutes before the restart at which the automatic backup runs |
enable-pre-shutdown-backup | true | Toggle for that pre-shutdown backup |
manual-restart-delay-minutes | 5 | Countdown length for /system restart |
reload-warning-times-minutes / -seconds | lists | Warning broadcast schedule for reloads |
pre-restart-protocol.enabled | true | Last-minute lockdown: chests, interactions, X/Z movement and chat freeze in the final minute |
backup-management | max-backups: 3, boot-backup-threshold: 5 | Backup engine: retention count and the boot-count trigger |
backup-folders | world, plugins | Folders archived (must stay inside the server root) |
log-cleaner.boot-threshold | 10 | Run log cleaning every N boots |
old-logs-cleanup | retention-days: 3 | Day-based old-log cleanup |
log-size-watcher | max-size-mb: 500, keep-newest: 5 | Size budget for rotated logs (latest.log is never touched) |
world-protection | protected-worlds list | Per-world build/interaction protection |
sleep-blocker | sleep-blocked-worlds | Bed use blocked in listed worlds |
door-toggle | revert-seconds: 60 | Auto-closing doors, trapdoors and fence gates |
spawn-feature | teleport-on-join-mode: always | Join teleports, join messages and the random-spawn region anti-clustering settings |
potion-effect | SPEED, level 0 | Persistent lobby potion effect in a configured world |
chat-blocker | blocked-worlds | World-level chat mute — it disables ALL chat in the listed worlds |
anticaps | ratio: 15.0, allow-messages-under: 10 | Caps-percentage threshold and progressive decapitalization |
login-lock | CPU 85/80, memory 90/85, startup-lock-seconds: 30 | ServerLoginLock thresholds (lock/unlock pairs) and the startup window |
stairs-addon | cooldown-millis: 500 | Stair seating cooldown |
scoreboard-enabled | true | Scoreboard master toggle |
scoreboard.stagger-buckets | 4 (allowed: 1/2/4/5/10) | How widely the PlaceholderAPI refresh is spread across ticks |
addons.<name>.enabled | economy false, the rest true | The 13 addon master switches |
The twelve addon files each deserve a look eventually; these are the ones most owners open first. Every value below is a shipped default, not a suggestion.
| Addon config | What it controls |
|---|---|
economy | Currency singular/plural names and symbol, starting-balance, mongodb.* and redis.* connection blocks, save interval, and the full /balance / /pay / /money message trees |
joinmessage | 25 shipped rank formats with priorities and 12 join/leave action types ([JSONBROADCAST], [TITLEBROADCAST], [SOUND], [ACTIONBARMSG] and more), plus target world and broadcast scope |
antiswear | The 6,131-entry bad-words regex list, star-replacement vs hide-original, filtered chat commands (msg, tell, whisper…), and the system.antiswear.bypass permission |
chatemojis | 39 emojis in groups, settings.use.{signs,books,anvils}, per-message and duplicate limits, and the regex guard that neutralizes catastrophic patterns |
animations | Tick interval, radius limits, max active animations (256), auto-restore blocks, the sheep-reward command, allowed worlds — the messages tree lists all 33 animation types |
antiafk | AFK threshold, four warning stages with sounds, the AFK title overlay, return message, and system.antiafk.bypass |
kaboom | World gate, cooldowns, launch power (4.5), fire duration, explosion power (0) |
autofly / doublejump | Allowed worlds, boost values, no-fall protection, and the mutual-exclusion messaging between the two |
itemjoin | Hotbar items on join/respawn/world-switch — 4 sample items (compass, player head, nether star, name tag) with slots, skull owners, interact commands and itemflags |
interactivebooks | 6 sample books (mvp, vip, store…) with open/give-on-join, first-join-only and per-book view permissions |
Core texts live in messages.yml (prefix ships empty, so broadcasts come clean unless you set one), and every addon keeps its own messages inside its own file — no cross-file hunting. At runtime the plugin also writes a few data files you should recognize but never hand-edit: spawn.yml from /system setspawn, the backups/ archives, the H2 boot counter, and plugins/System/logs/log/warnings.yml and errors.yml, bounded async mirrors of server warnings and errors.
/system status.addons.<name>.enabled switches — a disabled addon consumes nothing and its commands go silent./system reload — it re-reads the main config, messages, spawn and scoreboard files plus every addon config, without a restart./system status.Your build ships through the license-gated loader with protected configuration and scheduled integrity checks — the same protection story that binds the license to your server. In practice this means one simple rule: make your changes in the shipped configuration itself, and let the loader's integrity checks do their job. If anything about the protection behavior is unclear, your delivery message and the developer's DM support are the place to ask — nothing about the protection is hidden from the buyer it belongs to.
Warning:Do not copy a config between two differently-licensed servers as a shortcut — bindings and integrity checks are per server. Copy the values you need instead, then reload each server individually.
Tip:The loop to remember: edit → /system reload → verify with /system status. Restarts are only needed for integration changes that genuinely require them.