The /reload command has been around in Bukkit since the early days. The goal was to allow server owners to quickly and easily reload configuration files of plugins and the server. However, to make it easier on plugin developers, the command ended up having a fatal flaw that made it unsafe to use. This decision was unlike earlier server platforms like hMod, which behaved in a much more controlled manner. The Bukkit team decided that the reload command should disable every plugin, and then try to enable it again.

As Java doesn't provide a supported or safe way to unload or reload code that is already loaded, this started to cause a few subtle issues and errors. Loading everything again in some cases caused conflicts between the way it loaded initially and the way it loaded during reload. This issue is especially severe when replacing plugin jar files. Due to this, both Spigot and Paper have never recommended the use of the reload command. Significant distaste for the reload command due to the issues it caused was already evident as early as 2011, only shortly after Bukkit had started. Since then, these issues have gotten significantly worse.

As Minecraft evolved, what needed reloading became a lot more complicated, until the concept of reloading became utterly infeasible. Every recent update has seen the reload command cause further issues. Right now, no one should ever use the /reload command under any circumstance. It causes significant instabilities within Minecraft, Bukkit, Spigot, Paper and almost any plugin that uses the Bukkit API. Currently, an action as simple as checking player permissions can cause issues after a reload. If a plugin errors after a reload, it's (likely) not the plugin's fault, but instead a symptom of the fundamentally broken reload command.

If you need to:

  • Add a new plugin
  • Update an existing plugin
  • Remove a plugin

RESTART YOUR SERVER

If you need to:

  • Reload a plugin's configuration

Use the plugin-provided reload command, for example /cb reload will reload CraftBook's configuration. If the plugin you're using doesn't have one, request one or restart the server.

If you've replaced any jar files, reloading the server WILL create issues, even if you don't notice it. The /reload command is ALWAYS unsafe and error-prone.

A note on PlugMan

Using plugins such as PlugMan to enable or disable plugins is still problematic. It not only hits the same issues as above, but it also breaks expectations that plugins have about the server. As Bukkit is not designed for plugins to load by themselves, this can cause issues where plugins are in an invalid state. Not only that, it's common for plugins to assume the server has just started when the plugin loads, so the plugin may be working with incorrect data if started later on.

Note! This warning doesn't apply to Sponge's reload command. The Sponge reload command does not do what Bukkit does, and instead sends an event to plugins telling them a reload was requested. It is then the plugin's responsibility to reload configurations.

Note! If you want to use the Minecraft /reload command to reload datapacks on Bukkit, you can safely use /minecraft:reload.

This article is part of a series on how to run a Minecraft server. Click here to check out more!

Maddy Miller

This article was written by Maddy Miller, a software engineer at Clipchamp at Microsoft. In her spare time she works on writing articles, as well as developing the Minecraft mods WorldEdit, WorldGuard, and CraftBook. Her opinions are her own and do not reflect her employer.

Want to help me write more posts like this? Check out my Patreon!