Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
ZRestart
Lightweight Paper-only auto-restart scheduler for Minecraft Java 26.x.
ZRestart schedules native Bukkit.restart() calls, broadcasts configurable countdown warnings across chat, title, boss bar, and sound, and gives admins full manual control — with every player, admin, and console-facing message exposed in messages.yml. Built specifically for Paper 26.x and Java 25+, with no legacy version baggage.
Why ZRestart
- Paper 26.x-first. No compatibility shims for old API versions. Lean codebase targeting the current Paper API directly.
- Familiar schedule format. Uses
DAY;HOUR;MINUTE[;REASON]entries that any experienced admin will recognize on sight. - Real timezone handling. IANA timezone IDs with proper DST gap/overlap behavior and a configurable fallback timezone.
- Atomic reload. A broken config never breaks the plugin — ZRestart keeps the previous valid runtime if a reload fails.
- Versioned configs with automatic migration. Adds new keys on plugin updates, preserves your customizations, and saves timestamped backups before any rewrite.
- Restart-script diagnostic. Detects unsafe
Bukkit.restart()setups on startup and warns you, so a "restart" doesn't silently become a "stop." - Public read-only API for other plugins to query restart state and trigger start/stop programmatically.
Features
⏱️ Scheduling
- Automatic restart scheduling using
Dailyor weekday entries (DAY;HOUR;MINUTE[;REASON]) - Manual restart countdowns:
/zrestart now <interval> [reason] - Live delay and cancel:
/zrestart delay <interval>and/zrestart stop - Flexible interval formats:
30m,1:30,3600,1h 30m, and more
📢 Warnings
- Four channels: chat, title, boss bar, sound — all driven from one shared warning list
- Per-warning sound entries with configurable sound name, category, volume, pitch
- Boss bar with configurable color, overlay, progress, and
show-fromthreshold - Player title popups when manual restarts are scheduled or pending restarts are cancelled
⚙️ Configuration & reliability
- Full MiniMessage support alongside legacy
&color codes - Configurable timezone with DST gap/overlap handling and fallback timezone
- Versioned
config.ymlandmessages.ymlwith automatic schema migration - Timestamped backups before any auto-update rewrite (
config.yml.bak-YYYYMMDD-HHMMSS) - Atomic reload — keeps the previous valid runtime config if a reload fails
- Startup diagnostic for unsafe
Bukkit.restart()setups - Tab-completion for subcommands, intervals, and configured reasons
- Unit tests covering parser, scheduler, warnings, and reload paths
🔌 Integration
- Public read-only API exposing manual + automatic restart state and start/stop triggers
- Optional pre-restart console commands with
CONTINUEorABORTfailure behavior - Soft PlaceholderAPI integration for player-bound messages
- Attempts player and world saves before restart
Use cases
- Daily or weekly automated maintenance restarts on a fixed schedule
- One-off manual restarts for hotfixes, plugin reloads, or emergency maintenance
- Network-wide synchronized restarts using a shared timezone configuration
- Running pre-restart commands (backups, save-all, broadcasts, kicks, webhook triggers) before every restart
- Showing countdown warnings through any combination of chat, title, boss bar, and sound
Pre-restart commands — flexible by design
ZRestart doesn't hardcode behaviors like kicking players or skipping empty restarts. The pre-restart commands section lets you run any console commands in sequence before the restart fires:
pre-restart-commands:
enabled: true
failure-behavior: CONTINUE
commands:
- "save-all"
- "kick @a Server restarting"
- "broadcast See you in 30 seconds!"
Set failure-behavior: ABORT to cancel the restart if any command fails.
Commands
| Command | Description | Permission |
|---|---|---|
/zrestart |
Show help | zrestart.time |
/zrestart time |
Show active or next scheduled restart status | zrestart.time |
/zrestart now <interval> [reason] |
Start a manual restart countdown | zrestart.admin |
/zrestart delay <interval> |
Delay the active countdown | zrestart.admin |
/zrestart stop |
Cancel the active countdown | zrestart.admin |
/zrestart reload |
Reload config.yml and messages.yml |
zrestart.reload |
Permissions
| Node | Default | Allows |
|---|---|---|
zrestart.time |
true |
/zrestart and /zrestart time |
zrestart.admin |
op |
Manual now / delay / stop |
zrestart.reload |
op |
Config and message reload |
Requirements
- Paper 26.1.2+
- Java 25+
- (Optional) PlaceholderAPI 2.12.2+ for placeholder support in player-bound messages
Installation
- Drop
ZRestart.jarinto your server'splugins/folder. - Start the server once so
config.ymlandmessages.ymlgenerate. - Confirm
spigot.ymlhas a validsettings.restart-script. - Edit
plugins/ZRestart/config.ymlfor schedules, channels, timezone, and pre-restart commands. - Edit
plugins/ZRestart/messages.ymlfor all user-facing text. - Run
/zrestart reloadafter config changes.
Scope
ZRestart is intentionally focused. It does not support:
- Spigot, Folia, Velocity, BungeeCord, or any proxy software
- Minecraft versions older than 26.x
- A ZRestart PlaceholderAPI expansion (it consumes placeholders, doesn't expose its own)
- Hardcoded player-kick or skip-empty-server logic — handled flexibly through pre-restart commands instead
Bukkit.restart()requires a properly configuredsettings.restart-scriptinspigot.yml. ZRestart will warn you on startup if this looks misconfigured.
Links & support
- Source code: https://github.com/Zenologia/ZRestart
- Issue tracker: https://github.com/Zenologia/ZRestart/issues
- BuiltByBit: https://builtbybit.com/resources/zrestart.106058/
- Author site: https://zenologiamc.com
Built and maintained by Zenologia.


