You set your Minecraft server to hard, hostile mobs spawn, everything looks right. Then the server restarts and you are back on peaceful, with players asking why nothing is attacking them. You set it again, it works, and the next restart wipes it out. It feels like the setting is not saving at all.
The good news: nothing is broken, and it is one of the most common Minecraft server questions we see. In almost every case the difficulty is being reset by a plugin you forgot you had, not by your server settings. This guide explains exactly what is happening and how to make hard (or any difficulty) actually stick.
The Short Version
On a plain server, the difficulty line in server.properties is applied when the server starts. But the moment you install a multi-world plugin, that plugin takes over world settings and applies its own saved difficulty on every startup. The two most common culprits are MultiWorld and Multiverse. They each store a difficulty value per world, and they re-apply it every time the world loads, quietly overriding both server.properties and any difficulty you set by hand while the server was running.
So the loop looks like this:
- The server starts.
- The world-management plugin loads your world and forces its saved difficulty (often peaceful, because that is what the world was created with).
- You run the in-game command to set it to hard. It works for the rest of that session.
- You restart. The plugin loads the world again and forces peaceful again.
The fix is not to fight it in server.properties. The fix is to change the difficulty in the plugin that is actually in charge.
Why server.properties Looks Right but Does Nothing
This is the part that trips everyone up. Open server.properties in the LoafHub panel and you will very likely see difficulty=hard already. That is why the problem is so confusing: the setting you would expect to control this is correct, and it still does not work.
That is because a multi-world plugin does not read difficulty from server.properties for a world it manages. It reads difficulty from its own configuration file and applies that instead, after the server has started. Whatever server.properties says gets overwritten a moment later. Editing server.properties, including through the panel’s config tools, will not change the outcome as long as the plugin is managing that world.
Why the /difficulty Command Does Not Stick Either
The vanilla /difficulty hard command does change the difficulty of the world you are standing in, immediately. That is why it appears to work when you run it. The problem is that it only changes the live world; it does not update the multi-world plugin’s saved value. So on the next restart the plugin loads its own config again, sees peaceful, and forces peaceful right back.
In other words, you are correcting the symptom every session instead of changing the source. The plugin always wins on startup.
How to Tell if a Plugin Is Overriding You
Two quick checks:
- Open your
pluginsfolder in the file manager. If you see a folder namedMultiWorld,Multiverse-Core, or any other world-management plugin, that is your prime suspect. It is very easy to install one of these early on, set up your worlds, and completely forget it controls difficulty. - Look inside that plugin’s folder for a per-world settings file. For MultiWorld that is
world.json. For Multiverse it isworlds.yml. Open it and search fordifficulty. If it saysPEACEFUL(or0), you have found exactly what is resetting your server on every boot.
One more thing worth checking: a plugin folder can sit in plugins without the plugin actually being loaded (a leftover from a jar you removed). The one that matters is the plugin that shows up in your server’s startup log as loaded. If you have both MultiWorld and Multiverse folders, confirm which one is actually running before you edit anything.
The Fix
Set the difficulty inside the plugin that manages the world, not in server.properties. Pick the method that matches your plugin.
MultiWorld
MultiWorld stores each world’s settings in plugins/MultiWorld/world.json. Every world you have (your overworld, the Nether, and the End) gets its own entry, and each one has its own "difficulty" value. To fix it:
- Open
plugins/MultiWorld/world.jsonin the LoafHub file manager. - Change every
"difficulty": "PEACEFUL"to the difficulty you want, for example"difficulty": "HARD". Do this for each world entry, not just the first one, or one dimension will stay peaceful. - Save the file, then reload MultiWorld or restart the server so it reads the new value.
You can also set it with MultiWorld’s own commands (run /mw in the console to see its help) so that it writes the value to world.json for you. The key point is to change it through MultiWorld, not the vanilla command, so the change is saved permanently.
Multiverse
Multiverse keeps world settings in plugins/Multiverse-Core/worlds.yml, and it also gives you commands to change them. The reliable path is to use Multiverse’s own command to set the world’s difficulty (run /mv in the console to see the current syntax for your version), or edit the difficulty for each world in worlds.yml directly, then reload Multiverse. As with MultiWorld, once the difficulty is stored in the plugin’s own config it will survive restarts.
No world-management plugin at all
If you checked your plugins folder and there is genuinely no world manager, then server.properties really is in charge. Set difficulty=hard there, save, and restart the server so it takes effect. You can use /difficulty hard in-game to change the current session immediately, and because nothing is overriding it, the server.properties value will hold on the next restart.
Do This Once and Forget It
The reason this problem lingers for so long is that the setting that appears to control difficulty is not the one actually controlling it. Once you set the difficulty in the plugin that manages your worlds, it stops resetting and you never have to touch it again. No more setting it every session, and no more players logging in to a peaceful world by surprise.
If you run a plugin-heavy world like this, it is worth keeping your server on hardware that keeps up during peak hours so difficulty is the only thing you have to think about. You can see our Minecraft plans on the Minecraft hosting page.
Frequently Asked Questions
Why does my Minecraft difficulty reset to peaceful after every restart?
A multi-world plugin such as MultiWorld or Multiverse is almost certainly applying its own saved difficulty when each world loads. That saved value is usually peaceful, and it overrides whatever server.properties says. The plugin re-applies it on every startup, which is why the reset happens every time.
I already set difficulty to hard in server.properties. Why doesn’t it work?
Because a world-management plugin does not use server.properties for the worlds it manages. It reads difficulty from its own config and applies that after the server starts, overwriting the server.properties value. As long as the plugin is in charge of that world, editing server.properties will not change the result.
Why does the /difficulty command work until I restart?
The vanilla /difficulty command changes the live world immediately, so it works for that session. It does not update the plugin’s saved difficulty, so on the next restart the plugin loads its own value again and forces peaceful back. You are fixing the symptom each session rather than the source.
How do I know which plugin is doing it?
Open your plugins folder and look for a world-management plugin such as MultiWorld or Multiverse-Core. Open its per-world config (world.json for MultiWorld, worlds.yml for Multiverse) and search for difficulty. If it reads peaceful, that is the setting that keeps resetting your server. Confirm the plugin is actually loaded in your startup log, since a leftover folder can exist without the plugin running.
I changed it and it still resets. What am I missing?
Two things usually cause this. First, you may have changed only one world entry; make sure every world (overworld, Nether, and End) is set to the difficulty you want. Second, you may have edited the config while the server was running and it got overwritten on shutdown; change it, then reload or restart so the plugin reads the new value cleanly. If you have more than one world-management plugin installed, only the loaded one matters, so set it there.