A Spigot plugin for automated resource-world resets with a unified /rwr command tree and phase-aware
ResourceWorldResetter v4.0.0

Automated Resource World Resets with Phase-Aware Status and Unified /rwr Commands
ResourceWorldResetter v4 is the next generation of automatic resource world resets. It introduces an explicit phase-based reset model, a unified /rwr command tree, and improved operator visibility into reset progress and failures.
⚠️ BREAKING CHANGE: v4 introduces a new unified /rwr command structure. Old commands (/rwrgui, /resetworld, /rwrregion, /rwrresume, etc.) no longer exist. Server owners must update scripts and permissions. Auto-migration is provided for configs.
What's New in v4
✓ Explicit Reset Phases
- Reset progress is tracked using phases: IDLE → PRECHECK → TELEPORT → UNLOAD → DELETE → RECREATE → VERIFY → COMPLETE (or FAILED on error)
/rwr statusreports the exact phase for in-progress or failed resets- Reset state metadata is persisted for better operational visibility
✓ Unified Command Structure
- All functionality is grouped under
/rwrsubcommands - Built-in help:
/rwror/rwr help - Legacy command aliases are intentionally removed in v4
Built-in help: /rwr help now shows a complete, command-by-command help page with usage examples and permission notes for every subcommand.
✓ Full Operator Visibility
/rwr status— shows exact phase, next reset time, resume phase, and last failure reason/rwr next— displays next reset timestamp, warning timestamp, and countdown in server timezone- No more guessing whether a reset is stuck, blocked, or progressing
Key Features
Core Features:
- Automatic Resource World Resets — daily, weekly, monthly schedules
- Selective Region Resets — reset specific areas without deleting the entire world
- GUI-Based Configuration — no manual YAML editing needed
- Multiverse-Core Integration — handles world deletion and recreation
Safety & Reliability:
- State Machine Foundation — explicit phases and persisted state tracking
- Failure Recovery Controls — resume and cancel controls for incomplete reset handling
- Failure Visibility — phase and failure details exposed in status output
- Safe Player Teleportation — guarantees solid ground; automatic fallback if no safe spot exists
- Graceful Shutdown Handling — incomplete reset state is detected and can be managed with
/rwr resume
Operator Experience:
- Phase-Level Status Reporting —
/rwr statusshows exact phase, not just "IN_PROGRESS" - Reset Scheduling Transparency —
/rwr nextshows countdown to next reset - Recovery Options —
/rwr resumeand/rwr resume cancelfor interrupted resets
Player Experience:
- World Teleport GUI —
/rwr tpfor easy world navigation;/rwr backto return - Configurable Warnings — countdown broadcasts before scheduled resets
- Region Throttling — batch chunk unloading prevents lag spikes
- Custom Events — plugin integration via PreResetEvent, PostResetEvent, RegionPreResetEvent, RegionPostResetEvent
v4.0.0 Breaking Changes
Old commands no longer exist:
/rwrgui→ use/rwr gui/reloadrwr→ use/rwr reload/resetworld→ use/rwr reset now/rwrregion→ use/rwr region <enable|disable|list|add|remove|addhere>/rwrresume→ use/rwr resume [cancel]
What is automatic:
- Config is auto-migrated from v3 schema to v4 on first startup
- A backup is created as
config.v3.backup.yml - Old reset-state format is archived
What admins must do:
- Update all scripts and automation to
/rwrsubcommands - Update permission nodes in your permission plugin
- Run
/rwr statusto verify setup - Test with
/rwr reset nowduring low activity
See MIGRATION.md for the full upgrade guide.
Commands & Permissions
| Command | Description | Permission |
|---|---|---|
| /rwr help | Show all supported /rwr subcommands |
resourceworldresetter.admin |
| /rwr gui | Open the admin configuration GUI | resourceworldresetter.admin |
| /rwr reload | Reload config from file | resourceworldresetter.admin |
| /rwr status | Show current phase, next reset, and failure/resume details | resourceworldresetter.admin |
| /rwr next | Show next reset timestamp, warning timestamp, and countdown | resourceworldresetter.admin |
| /rwr reset now | Force an immediate reset | resourceworldresetter.admin |
| /rwr resume [cancel] | Resume or cancel incomplete reset recovery | resourceworldresetter.admin |
| /rwr region <enable|disable|list|add|remove|addhere> | Manage region-based resets | resourceworldresetter.admin |
| /rwr tp | Open world teleport menu | resourceworldresetter.admin |
| /rwr back | Teleport back to previous location | resourceworldresetter.admin |
Permissions
The plugin exposes granular permission nodes for player-facing teleport commands so servers can allow them to non-admin players while keeping admin operations restricted.
Player-Facing Commands (available to all by default):
resourceworldresetter.tp— Allows/rwr tpto open the world selection GUI. Default:true(all players).resourceworldresetter.back— Allows/rwr backto teleport back to your last recorded location. Default:true(all players).
Admin-Only Commands:
- All other subcommands (
gui,reload,reset,resume,region,status,next) are protected byresourceworldresetter.admin(default:oponly).
The root /rwr command has no permission gate; Spigot allows all users to execute it, and permission checks happen per subcommand. This enables non-admins to use player-facing commands while keeping administration features restricted.
Configuration (v4 Schema)
# configVersion: 4 Schema version
# worldName: "Resources" Target resource world
schedule:
# mode: "daily" daily, weekly, or monthly
time:
# hour: 3 24-hour format (0-23)
# warningMinutes: 5 Minutes before reset for warnings
# day: 1 For weekly: 1-7 (Mon-Sun); For monthly: 1-31
# preflight: Reserved for v4.1+ production hardening
tps:
# min: 15.0 Abort if TPS drops below this (0 = disabled)
# onFail: "delay" delay, abort, or force
players:
# max: 0 Abort if more players online (0 = disabled)
onFail: "delay"
disk:
# freeGB: 5.0 Abort if free disk falls below this (0 = disabled)
onFail: "delay"
regions:
# enabled: false Enable selective region resets
# populated via /rwr region add
metrics:
# enabled: false Optional anonymous telemetry
Supported Versions
- Minecraft: 1.20.5+ (Spigot API 26.1+)
- Java: 25 or newer
- Multiverse-Core: 4.3.1+ (fully compatible with v5)
- Tested on: Spigot 26.1, 26.1.1, 26.1.2
Installation
- Download the latest v4 release from GitHub Releases
- Back up your plugin folder and worlds
- Place RWR-4.0.0.jar into
plugins/ - Ensure Multiverse-Core 4.3.1+ is installed
- Restart your server (auto-migration will run if upgrading from v3)
- Create your resource world (e.g.,
/mv create Resources normal) - Run
/rwr guiand click Change World to select it - Configure schedule and preflight gates via GUI or
config.yml
How It Works
- Admin configures target world and reset schedule via
/rwr gui - On scheduled reset, plugin enters phase-based flow: PRECHECK → TELEPORT → UNLOAD → DELETE → RECREATE → VERIFY → COMPLETE
- Players are safely teleported to a fallback world with visual warnings
- World is deleted and regenerated by Multiverse-Core
- Status is visible at any time via
/rwr status(exact phase reported) - If reset fails, admins can inspect failure reason and control recovery with
/rwr resume
Important Information
Time Zone Awareness: The plugin schedules resets based on the server's local system time.
Data Loss Warning: Once a world is reset, all data within it is permanently deleted, including player structures and inventories. Back up your world files before configuring and using this plugin.
Preflight Gates: v4.0.0 includes preflight configuration keys (TPS, players, disk) in the schema for forward compatibility. Full gate enforcement and policy controls are targeted for v4.1+.
Reset Phases: Monitor /rwr status to see which phase the current or last reset reached. Phase information is essential for troubleshooting reset failures.
Support & Documentation
Full Guides:
- README](https://github.com/TamaWish/ResourceWorldResetter)**) — overview, features, and configuration
Issues & Support:
- Report bugs: GitHub Issues
- Join Discord: LozDev Mines
- Contributions welcome: Pull requests accepted
Author & License
Author: Lozaine GitHub: TamaWish Discord: LozDev Mines License: MIT License