How to Hot-Swap Plugins Without Downtime
Learn how to hot swap plugins on a minecraft server using PlugManX and safe procedures that keep players online during plugin changes.
What Hot-Swapping Means
Hot swapping is the practice of replacing a plugin on a running server without restarting. You unload the old version, drop in the new JAR, and load it, all while players stay connected. When done correctly, you can hot swap plugins on your minecraft server with zero downtime and minimal disruption. When done incorrectly, you corrupt data, leak memory, and create bugs that haunt you for weeks.
This guide covers when hot swapping is safe, which tools to use, and how to do it step by step.
The Tool: PlugManX
PlugManX is the maintained fork of the original PlugMan plugin. It provides commands to load, unload, reload, enable, and disable individual plugins at runtime. Install it once and it becomes your primary tool to hot swap plugins on your minecraft server.
Core commands:
/plugman list # Show all loaded plugins
/plugman info MyPlugin # Show plugin details, dependencies
/plugman unload MyPlugin # Unload a plugin cleanly
/plugman load MyPlugin # Load a plugin JAR
/plugman reload MyPlugin # Unload then load (shortcut)
PlugManX handles the lifecycle correctly for most plugins: it unregisters commands, cancels scheduled tasks, removes event listeners, and closes the class loader before loading the new version. This is vastly safer than Bukkit's /reload command, which attempts to restart everything at once.
Step-by-Step Hot-Swap Process
Follow this exact sequence to hot swap plugins on your minecraft server safely:
- Step 1: Back up the current plugin JAR and its config folder. Copy
plugins/MyPlugin.jarandplugins/MyPlugin/to a backup directory. - Step 2: Check dependencies with
/plugman info MyPlugin. If other plugins depend on this one, they may break during the swap. - Step 3: Unload the plugin:
/plugman unload MyPlugin. Watch the console for errors. - Step 4: Replace the JAR file in the plugins folder. Delete the old JAR, upload the new one.
- Step 5: Load the new version:
/plugman load MyPlugin. Check the server logs for startup errors. - Step 6: Test the plugin in-game immediately. Run key commands, check that features work.
If anything goes wrong at step 5 or 6, unload the new version, restore the backup JAR, and load the original. You are back to a working state without a restart.
Plugins You Should Not Hot-Swap
Some plugins are not safe to hot swap. Avoid live swapping these categories:
- World generators: Custom terrain generators register with the server at startup and cannot be cleanly re-registered.
- NMS plugins: Plugins that use internal Minecraft server code (net.minecraft.server) often hook into systems that PlugManX cannot safely detach.
- Protocollib-dependent plugins: Plugins that modify packets can leave orphaned packet listeners that cause errors for every connected player.
- Database-heavy plugins: Plugins with open database connections may not close them properly during unload, leading to connection pool exhaustion.
- Core dependencies: Vault, PlaceholderAPI, and ProtocolLib are used by dozens of other plugins. Unloading them cascades failures across your entire plugin stack.
For these plugins, use a staging server to test the update, then schedule a full restart during a low-traffic window.
Hot-Swap vs. Reload vs. Restart
| Method | Downtime | Safety | Use case |
|---|---|---|---|
| Per-plugin reload command | None | Safest | Config changes only |
| PlugManX hot swap | None | Safe for most plugins | Plugin updates, JAR replacements |
| /reload | None | Unsafe | Never recommended |
| Full restart | 30-60 seconds | Safest | Server JAR updates, risky plugins |
Always prefer per-plugin reload commands when available (see our safe reload guide). Use PlugManX to hot swap plugins on your minecraft server when you need to replace a JAR. Use a full restart when the change is too risky for live swapping.
Monitoring After a Hot-Swap
After every hot swap, monitor the server for 10 to 15 minutes. Watch for increasing memory usage (a sign of leaked class loaders), error spam in the console, and player reports of broken features. If you use Grafana monitoring, check the TPS and memory graphs for anomalies right after the swap. A clean hot swap shows no change in the metrics. A bad one shows a step-up in memory usage that never comes back down.
See a well-run server in action: Astroworld MC, IP play.astroworldmc.com, Java + Bedrock.