Nexal Reload
A development utility that watches the plugins/ folder and loads or reloads plugins the moment their JAR changes, through PlugManX. Drop a freshly built JAR into the folder and it is running a second later, with no manual reload or restart.
Features
- Automatic Reloads - A plugin reloads as soon as its JAR in the plugins folder is modified, e.g. by a build
- New Plugin Loading - JARs newly dropped into the plugins folder are loaded automatically (can be turned off)
- Renamed Builds - A rebuilt JAR with a new file name (e.g.
MyPlugin-1.1.jarnext toMyPlugin-1.0.jar) replaces the running plugin instead of loading it twice, and the console reminds you to remove the old JAR - Upload-Safe - Waits until a JAR has stopped changing before using it, so slow copies and SFTP uploads never reload a half-written file
- Load Notifications - Admins are told when a plugin loaded or reloaded, and when PlugManX failed to load it
- PlugManX Check - When PlugManX is missing, admins are told once and changed JARs wait until it is installed
- Exclusion List - Plugins that must never be reloaded automatically; NexalReload excludes itself by default
- Pause and Resume - Stop monitoring while you need stability, and pick up waiting changes when you resume
- Reload History - The last 20 loads and reloads with their time and file
- Status Screen - Monitoring state, monitored JARs, interval and PlugManX availability with one command
- Admin GUI -
/nexalreload adminopens a menu with the monitor toggle, status, history, a config reload and a Configuration screen for every setting - Configurable Interval - How often the folder is checked; a change applies at once, without a restart
- Fully Customizable Messages - Every message, including the status screen, lives in
messages.ymlwith sounds
Technologies
- Paper API 1.20.1+ - Minecraft server API (Spigot compatible)
- Utilizer - Configuration, messages, items, tasks and GUIs
- ACF - Command framework
- nexal-core - Help menu and license check
- PlugManX - Loads, unloads and reloads the plugins
Dependencies
| Plugin | Required | Purpose |
|---|---|---|
| PlugManX | No (softdepend): nothing is loaded or reloaded without it | Handles the actual plugin load, unload and reload |
Commands
Every command needs nexalreload.admin; players without it do not see the command at all.
Aliases: /nrl, /reload
/reload takes over Bukkit's reload command: /reload, /reload status, /reload admin and every other subcommand below work the same as with /nexalreload. Bukkit's own reload command is still available as /bukkit:reload.
Player Commands
| Command | Description | Permission |
|---|---|---|
/nexalreload | Show the help menu | nexalreload.admin |
/nexalreload help [page] | Show the help menu | nexalreload.admin |
/nexalreload status | View the monitoring state and recent reload history | nexalreload.admin |
Admin Commands
| Command | Description | Permission |
|---|---|---|
/nexalreload admin | Open the admin menu (console: admin help) | nexalreload.admin |
/nexalreload admin help [page] | Show the admin commands | nexalreload.admin |
/nexalreload admin reload | Reload config.yml and messages.yml | nexalreload.admin |
/nexalreload admin pause | Pause JAR monitoring | nexalreload.admin |
/nexalreload admin resume | Resume JAR monitoring | nexalreload.admin |
Admin GUI
| Screen | Contents |
|---|---|
Admin menu (/nexalreload admin) | Configuration, JAR Monitoring (pause or resume), Status, Reload History, Reload, Close |
| Configuration | Monitor Interval, Auto-Load New JARs, Excluded Plugins, Back, Close |
| Excluded Plugins | Every loaded or excluded plugin; click to exclude it or monitor it again |
| Reload History | The last 20 loads and reloads, newest first |
Monitor Interval: left click +1, right click -1, shift for +10/-10, between 1 and 1200 ticks. Every change is saved to config.yml and applies at once.
Permissions
| Permission | Description | Default |
|---|---|---|
nexalreload.admin | Access to all NexalReload commands and the admin menu, and receive load and reload notifications | op |
Configuration
config.yml
# How often to check for JAR file changes (in ticks, 20 ticks = 1 second)
monitor-interval-ticks: 20
# Automatically load new JAR files dropped into the plugins folder
auto-load-new: true
# Plugin names to exclude from monitoring (case-sensitive, matches plugin.yml name)
excluded-plugins:
- NexalReload
A changed interval applies on /nexalreload admin reload, when the file is saved (it is watched), or when changed in the admin menu.
messages.yml
All messages are fully customizable, with sounds: load and reload notifications, failures, the /nexalreload status screen and admin feedback. Colors use MiniMessage gradients with a blue primary color; the palette is listed at the top of the file for find-and-replace. Messages added in an update work without regenerating the file.
Installation
- Install PlugManX (NexalReload monitors without it, but cannot load or reload anything).
- Drop
NexalReload-\<version>.jarinto yourplugins/folder. - Restart the server.
config.ymlandmessages.ymlare created inplugins/NexalReload/. - Build or copy a plugin JAR into
plugins/: it is loaded or reloaded within a couple of seconds.
This is a development tool: keep it off production servers, where reloading plugins at runtime can leave them in a broken state.