Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for Zenologia

Paper-only auto-restart scheduler for Minecraft 26.x with fully customizable countdowns.

Report ZRestart?

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 Daily or 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-from threshold
  • 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.yml and messages.yml with 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 CONTINUE or ABORT failure 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

  • /zrestart — Show help (permission: zrestart.time)
  • /zrestart time — Show active or next scheduled restart status (permission: zrestart.time)
  • /zrestart now <interval> [reason] — Start a manual restart countdown (permission: zrestart.admin)
  • /zrestart delay <interval> — Delay the active countdown (permission: zrestart.admin)
  • /zrestart stop — Cancel the active countdown (permission: zrestart.admin)
  • /zrestart reload — Reload config.yml and messages.yml (permission: zrestart.reload)

Permissions

  • zrestart.time (default: true) — Allows /zrestart and /zrestart time
  • zrestart.admin (default: op) — Allows manual now / delay / stop
  • zrestart.reload (default: op) — Allows 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.jar into your server's plugins/ folder.
  • Start the server once so config.yml and messages.yml generate.
  • Confirm spigot.yml has a valid settings.restart-script.
  • Edit plugins/ZRestart/config.yml for schedules, channels, timezone, and pre-restart commands.
  • Edit plugins/ZRestart/messages.yml for all user-facing text.
  • Run /zrestart reload after 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 configured settings.restart-script in spigot.yml. ZRestart will warn you on startup if this looks misconfigured.

*Built and maintained by Zenologia.*

Information

CategoryAdmin Tools
Published onMay 17, 2026
LicenseGPL
Downloads2
Stars0
Watchers0

Pinned Versions

Members