Modded Server Won't Start But Singleplayer Works? It's A Client-Side Mod

Published on

If your modpack runs fine in singleplayer but the dedicated server crashes on startup, a client-only mod is almost always the cause. Here is the exact log line that proves it, and how to find the mod in minutes instead of hours.

Modded server won't start client-side mod fix

There is one modded server problem that shows up more than any other, and it always sounds the same:

"The modpack runs perfectly in singleplayer, but the server crashes the second I start it."

That sentence is a diagnosis on its own. If the pack works client-side and dies server-side, the problem is almost never your RAM, your Java version, or your host. It is a client-only mod sitting in your server's mods folder.

Why this happens

Mods declare which "side" they run on. Some are client-only by design: shaders, minimaps, HUD tweaks, animation and sound mods, anything that draws something on your screen. A dedicated server has no screen, no rendering, no player camera. It has no idea what to do with them.

Your singleplayer client happily loads all of it, because it is a client. Copy that same mods folder to a server and the client-only mods try to load rendering classes that do not exist there, and the server dies during startup.

This is why "it works in singleplayer" is a red herring. Those are two different environments.

The log line that proves it

Do not guess. Open the crash log or latest.log and search for this:

Attempted to load class ... for invalid dist DEDICATED_SERVER

That message is definitive. It means a mod tried to load a client-only class on a dedicated server. The class name in that line tells you which mod it belongs to.

The other very common signature is a Mixin failure:

Caused by: org.spongepowered.asm.mixin...

If you see that, search the same log for either Mixin apply for mod or .mixins.json. Both name the mod directly. If you find sodium.mixins.json, the offending mod is Sodium. If you find memoryleakfix.mixins.json, it is Memory Leak Fix. It really is that direct, the information is sitting in the log.

The usual suspects

Before you start bisecting, just pull these out. They are client-only and should never be in a server mods folder:

  • Rendering and performance: Sodium, Iris, Embeddium, Oculus, OptiFine, Rubidium, Canvas
  • Minimaps: JourneyMap (client jar), Xaero's Minimap, VoxelMap
  • UI and HUD: Mod Menu, Jade/WAILA/The One Probe (client half), Controlling, AppleSkin (client), Inventory HUD
  • Visual polish: shaders of any kind, Dynamic Lights, Better Animations, Sound Physics, Ambient Sounds, Fancy Menu
  • Zoom and camera: Zoomify, Shoulder Surfing, Camera Overhaul

Many modpacks ship a server pack precisely so you do not have to work this out yourself. If the pack you are running offers one on CurseForge or Modrinth, use it, it already has these stripped out.

If the log does not name a mod: bisect

When the error is vague, do not test mods one at a time. Use binary search, it is dramatically faster.

With 100 mods, one-at-a-time could mean 100 restarts. Bisecting finds it in about 7.

  1. Move half your mods out of the folder into a temporary folder.
  2. Start the server.
  3. Crashes? The culprit is in the half that is still there. Starts fine? It is in the half you removed.
  4. Take whichever half contains the problem, split it in half again.
  5. Repeat until one mod is left.

Keep the two halves in clearly named folders so you do not lose track of what you have tested.

Things that look like this but are not

Worth ruling out before you tear your mods folder apart:

  • Server starts, then dies a minute later with no crash log. That is memory, not mods. See exit code 137 and the Linux OOM killer.
  • Server starts fine, crashes only when a player joins. That usually means a mod mismatch between client and server, not a client-only mod. Compare the two mod lists.
  • Server will not start at all, no mods involved. Work through the basics first: Minecraft server not starting troubleshooting.
  • Wrong loader version. Forge, NeoForge and Fabric are not interchangeable, and a mod built for one will not load on another. See Forge vs NeoForge.

A repeatable process

  1. Read the log. Search for invalid dist DEDICATED_SERVER first, then .mixins.json.
  2. If a mod is named, remove it and restart. Done in two minutes.
  3. If not, remove the obvious client-only mods listed above and restart.
  4. Still failing? Bisect.
  5. Once it starts, add back anything you removed unnecessarily, one group at a time.

The important habit is step 1. Most of the hours people lose to this are spent guessing before reading the log, and the log almost always already contains the answer.

Space-Node's modpack hosting gives you full file access and live console output, so you can pull a mod and restart in seconds while you narrow it down. If you are stuck on a log you cannot read, open a ticket and paste it, we will read it with you.


Running a modpack server? View Modpack Hosting Plans

Launch Your VPS Today

Get started with professional VPS hosting powered by enterprise hardware. Instant deployment and 12/7 support included.