GUIDE · UPDATED SEPTEMBER 2026

Why Does My Minecraft Modpack Server Keep Crashing?

A modpack server almost never crashes for a mysterious reason. It crashes for one of about ten reasons, and the log names which one. This guide shows you where to look and what each one means.

Short answer: open the log and read the first error, not the last line. In order of how often they happen, the cause is a client-only mod on the server, a missing dependency, the wrong Java version, too little RAM, a version mismatch, a mixin conflict, a duplicate mod, a damaged world, or a watchdog kill. Not sure what your log says? Paste it into the free crash analyzer and it names the likely cause and the fix.

Read the first error, not the last line

A Java crash log is written in the order things went wrong. The line at the bottom is the last symptom, usually a generic message such as Exception in server tick loop or a stack trace inside code that had nothing to do with the problem. The line that tells you what actually happened is the first ERROR or FATAL in the run, and it often sits hundreds of lines above the end, while the server was still loading mods.

So: go to the top of latest.log, scroll down to the first line marked ERROR, and read that line and the ten after it. If the server wrote a file into crash-reports/, open it as well; the Description line and the first Caused by in the stack trace carry the same information in compact form. Everything below the first Caused by is consequence, not cause.

Two more habits save time. Loaders print summary lines written for humans: Forge and NeoForge start a block with Missing or unsupported mandatory dependencies or Found duplicate mods, Fabric with Mod resolution encountered an incompatible mod set. They name the mod. And when the log shows no error and simply stops, the process was killed from outside, which almost always means memory (cause 4).

The causes, most common first

Each entry shows what the log looks like, why it happens, and the fix. The fragments are shortened; your log will have more surrounding lines, but the key phrases are the same.

1. A client-only mod is in the server’s mods folder

[main/ERROR] [net.minecraftforge.fml.loading.RuntimeDistCleaner/]: Attempted to load class net/minecraft/client/gui/screens/Screen for invalid dist DEDICATED_SERVER
java.lang.NoClassDefFoundError: net/minecraft/client/gui/screens/Screen

Why it happens. A dedicated server has no renderer, no screens and no keyboard. Shaders (Iris, OptiFine), rendering performance mods (Sodium), minimaps and UI mods (Xaero’s, most HUD mods) and the client half of recipe viewers all reach into net.minecraft.client classes that do not exist on the server, so the loader stops. This is the most common reason a freshly uploaded client pack refuses to boot.

The fix. Delete the named jar from the server’s mods folder and leave it installed on every player’s client. If the log names a class rather than a mod, the mod is usually mentioned a few lines above the error. When a pack ships a server pack, use it instead of the client mods folder.

2. A dependency is missing

[main/ERROR] [net.minecraftforge.fml.loading.ModSorter/LOADING]: Missing or unsupported mandatory dependencies:
	Mod ID: 'geckolib', Requested by: 'ars_nouveau', Expected range: '[4.4,)', Actual version: '[MISSING]'

# Fabric wording:
net.fabricmc.loader.impl.FormattedException: Mod resolution encountered an incompatible mod set!
 - Mod 'Roughly Enough Items' (roughlyenoughitems) requires any version of cloth-config2, which is missing!

Why it happens. Many mods are built on library mods: GeckoLib, Cloth Config, Architectury, Curios, Fabric API and others. Download sites often let you add a mod without its library, and a hand-assembled server folder is easy to leave incomplete. The loader checks every declared dependency before anything else runs, so this error always appears early and always names both mods and the required version range.

The fix. Install the library the log asks for, on the same Minecraft version and loader, inside the version range shown. If the dependency is present but the range does not match, the installed library is too old or too new: replace it rather than adding a second copy, which leads to cause 7.

3. The wrong Java version

Error: LinkageError occurred while loading main class net.minecraftforge.bootstrap.ForgeBootstrap
	java.lang.UnsupportedClassVersionError: net/minecraftforge/bootstrap/ForgeBootstrap has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0

Why it happens. Each Minecraft generation is compiled for a specific Java release. Minecraft 1.16 needs Java 8 or 11. Versions 1.17 through 1.20.4 need Java 17. Version 1.20.5 and everything in 1.21 needs Java 21. The class file numbers in the error map to those releases: 52 is Java 8, 61 is Java 17, 65 is Java 21. The fragment above says the jar was built for Java 21 but launched on Java 17. A too-new Java on an old pack fails differently, usually with a reflection or module error early in loading.

The fix. Match Java to the Minecraft version. On Alpenglow the panel picks Java 8, 17 or 21 automatically from the version you select, so this cause does not come up there. On other hosts, change the Java version in the panel’s startup settings; on a machine of your own, install the right JDK and point the start script at it.

4. Out of memory

[Server thread/ERROR]: Encountered an unexpected exception
java.lang.OutOfMemoryError: Java heap space

# or no Java error at all, only the process ending:
[Server thread/INFO]: Preparing spawn area: 84%
Process exited with code 137

Why it happens. Every loaded chunk, entity, mod registry and player inventory sits in the Java heap. When it is full, Java spends most of its time in garbage collection, the server stutters, and then OutOfMemoryError follows. On a hosted server there is a second variant: the container has a hard memory limit, and when the Java process grows past it the process is killed with no stack trace, just an exit code such as 137. Packs with hundreds of mods, entity-heavy farms and chunk loaders that keep whole bases ticking while nobody is online all push memory up.

The fix. Give the server more RAM. As a rule, 4 GB covers a light pack, 6 GB a medium one and 8 to 12 GB a large kitchen-sink pack; the RAM guide has the full table. If the crash returns at a higher size, the cause is what the world holds, not the number: find the farm or the chunk-loaded area that grew and trim it. On Alpenglow you can change RAM between 2 and 12 GB at any time and only pay for the hours the server runs.

5. Loader or Minecraft version mismatch

[main/ERROR] [net.neoforged.fml.loading.ModSorter/LOADING]: Missing or unsupported mandatory dependencies:
	Mod ID: 'minecraft', Requested by: 'create', Expected range: '[1.20.1,1.21)', Actual version: '1.21.1'

Why it happens. The dependency error again, but the missing dependency is Minecraft itself or the loader. It happens when a pack built for 1.20.1 Forge is started on a 1.21 NeoForge server, when a host’s version dropdown was left on a default, or when a pack was half updated: the loader moved on, some mods followed, some did not. A partial update often shows up as a mixin error (cause 6) instead of a clean version complaint, because a mod for the old version tries to patch code that has changed.

The fix. Set the server to the exact Minecraft version and loader the pack names, down to the patch number. Forge and NeoForge are different loaders even where they share a version. If you updated the pack on purpose, update every mod to a build for the new version or remove the ones that have no build yet. The modded server setup guide covers the version matching in more depth.

Halfway through the list and your log still does not match? Paste the whole thing into the crash analyzer. It recognises every case on this page by its log signature and tells you which one you have. Nothing you paste is stored.

6. Mixin failures: two mods patching the same code

org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
Caused by: org.spongepowered.asm.mixin.throwables.MixinApplyError: Mixin [<modid>.mixins.json:ServerLevelMixin] from phase [DEFAULT] in config [<modid>.mixins.json] FAILED during APPLY

Why it happens. Mixins are how mods rewrite Minecraft’s own code. When two mods rewrite the same method, or one mod targets a method that another mod or a newer Minecraft build has changed, the patch cannot be applied and the game stops. The config name in brackets tells you which mod’s mixin failed; the next Caused by line often names the method it could not find. Most of the time this is version drift: one mod was updated, the other was not.

The fix. Update both mods to their latest builds for your Minecraft version. If the failing mixin belongs to an optional mod, especially a performance or tweak mod added on top of the pack, remove it first and retest. Only after that start looking for a real incompatibility on the two mods’ issue trackers.

7. Duplicate mods

[main/ERROR] [net.minecraftforge.fml.loading.ModSorter/LOADING]: Found duplicate mods:
	Mod ID: 'jei' from mod files: jei-1.20.1-forge-15.2.0.27.jar, jei-1.20.1-forge-15.3.0.4.jar

Why it happens. Two jars provide the same mod ID, usually because a new version was dropped into the folder without removing the old one, or because an upload merged two folders. Loaders refuse to guess which one you meant.

The fix. Delete the older file. Check for the same pattern with library mods, which are the ones most often duplicated by accident.

8. World problems

[Server thread/ERROR]: Failed to load chunk [12, -7]
net.minecraft.nbt.NbtException: Unexpected end of file in region r.0.-1.mca
[Server thread/ERROR]: Encountered an unexpected exception
net.minecraft.ReportedException: Exception ticking world

Why it happens. Two different things live here. The first is a version check: every world stores the Minecraft version that last saved it in level.dat (the DataVersion field), and an older server refuses to open a world saved by a newer one because it cannot read the newer block and entity formats. The second is corruption: a region file cut short by a crash, a full disk or an interrupted upload. A corrupted world usually starts, runs for a while and then crashes with Exception ticking world the moment a player walks near the bad chunk.

The fix. For the version case, run the server on the version that saved the world, or accept that the world stays on the newer version. For corruption, restore the affected region file or the whole world from a backup taken before the damage; this is the situation automatic backups exist for. Without a backup, deleting the single broken region file loses that area and keeps the rest of the world.

9. Watchdog kills: the server froze

[Server Watchdog/ERROR]: A single server tick took 60.00 seconds (should be max 0.05)
[Server Watchdog/ERROR]: Considering it to be crashed, server will forcibly shutdown.

Why it happens. The watchdog is a safety thread that stops the server when one game tick runs longer than a set limit, 60 seconds by default. Nothing is broken; something is doing far too much work in a single tick. Common triggers are large redstone contraptions, thousands of entities crammed into a farm, a player entering a heavy modded dimension that generates terrain on the fly, or a mod placing a very large structure. The crash report for a watchdog kill includes a thread dump of the server thread, which shows what the server was busy with when it was stopped.

The fix. Read the thread dump for the class names that repeat; they point at the mod or system doing the work. Install the spark profiler and run /spark profiler during a session, or check /forge tps per dimension, to see the ticking cost while the server is alive. Then fix the cause: break up the farm, lower the cramming limit, pregenerate the heavy dimension, or remove the mod. Raising max-tick-time in server.properties only lets the freeze last longer before it is noticed; treat it as a last resort while you hunt the culprit.

10. Not a crash at all

[Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

[Server thread/WARN]: **** FAILED TO BIND TO PORT!
[Server thread/WARN]: Perhaps a server is already running on that port?

[Server thread/ERROR]: Failed to check session lock for world ./world, aborting
[Server thread/ERROR]: ... already locked (possibly by a Minecraft process)

Why it happens. Several stops look like crashes but are the server declining to start. The EULA has not been accepted in eula.txt. Another process is using the port. A world is locked by a second instance that was never stopped, which is the session.lock message. A malformed server-icon.png or a broken datapack produces a loud error, after which the server either continues without it or refuses to load the world, depending on the version.

The fix. Fix the named thing: set eula=true, stop the other instance and wait for it to release the port and the lock, replace the icon with a 64 by 64 PNG, remove or repair the datapack. None of these need a mod change.

What you see, what it means, what to try first

NoClassDefFoundError on net.minecraft.client
Client-only mod on the server
Remove that jar from the server mods folder
Missing or unsupported mandatory dependencies
Library mod missing
Install the named mod in the required range
UnsupportedClassVersionError, class file version
Wrong Java version
Match Java to the Minecraft version
OutOfMemoryError or exit code 137
Not enough RAM
Raise RAM, then look at farms and chunk loaders
Mod ID minecraft, actual version differs
Version or loader mismatch
Set the exact version and loader the pack names
Mixin apply failed, MixinTransformerError
Two mods conflicting after an update
Update both, or remove the optional one
Found duplicate mods
Two versions of one jar
Delete the older file
Failed to load chunk, Exception ticking world
Corrupted region file
Restore from backup
A single server tick took 60.00 seconds
Watchdog, one tick too long
Read the thread dump, profile with spark
EULA, failed to bind to port, session lock
Not a crash
Accept the EULA, stop the other instance

Fix one thing at a time

The slowest way to fix a crashing server is to change five things and press Start. If it works you do not know why, and if it fails you have five new suspects. The fast way is a loop: change one variable, start the server, read the first error again. Either the error is gone and you move to whatever appears next, or it is the same and you undo the change before trying the next idea.

Keep a copy of the mods folder before removing jars, and a backup of the world before touching region files. When the first error changes to a different one, that is progress: loading stops at the first fault, so fixing it reveals the next one that was hiding behind it. Three or four rounds usually reach a clean start.

Every cause on this page leaves a clear line in the log, and a good panel should read that line for you. On Alpenglow the console watches the boot and explains the failure in plain language as it happens, naming the client-only mod, the missing library, the duplicate jar or the memory limit. For what else separates a panel that helps from one that shows a black console, see what better Minecraft server hosting looks like.

A server that tells you why it crashed

Forge, NeoForge, Fabric, Quilt, Paper, Purpur, Spigot and vanilla, with one-click CurseForge and Modrinth packs or your own server pack upload. Java is chosen for you, RAM moves between 2 and 12 GB whenever you want, backups run automatically, and you pay per hour: 1 credit is one hour of 1 GB at €0.01.

Start with 50 free credits

Just want the diagnosis? Paste your log into the free crash analyzer.

Common questions

Where do I find the crash log for my modpack server?+

The console output is the log. Most hosts keep the last run in logs/latest.log, and a real crash additionally writes a file into crash-reports/ with a timestamp in its name. Read latest.log from the top until the first ERROR line, then open the crash report for the stack trace and, for watchdog kills, the thread dump.

Why does my modded server crash only when a specific player joins?+

Usually something in that player’s data: an inventory item from a mod that has been removed, a modded dimension they logged out in, or a corrupted chunk near their position. Check the crash report for the player’s name or the coordinates it mentions. Moving the player’s data file out of world/playerdata resets that player and confirms the cause.

My server crashes after I added one mod. Is the mod broken?+

Not necessarily. Check in this order: is it a client-only mod, does it need a library you did not add, is it built for your exact Minecraft version and loader, and does it conflict with a mod you already have through a mixin error. The log names the case. Removing the mod and confirming the server starts again is the quickest test.

Will more RAM stop my modpack server from crashing?+

Only when the log shows OutOfMemoryError or the process is killed for exceeding its memory limit. Dependency errors, Java version errors, mixin conflicts and watchdog kills do not change with RAM. Raise RAM when the log says memory; otherwise fix what the log names.

What does the crash analyzer do with my log?+

You paste the server or modpack log, it looks for the known failure patterns described in this guide and tells you the likely cause and the fix. Logs are analysed on the spot and never stored.

Should I raise max-tick-time to stop watchdog crashes?+

Only temporarily. A tick that takes 60 seconds means players are frozen for 60 seconds either way. Raising the limit or setting it to -1 hides the shutdown but keeps the freeze. Use spark or the thread dump in the crash report to find what is taking the time and fix that instead.

Keep reading

Cost

How Much Does a Minecraft Server Cost in 2026?

Free hosts, flat monthly plans, pay-per-hour credits and self-hosting compared, with worked math for a four-friend SMP and a calculator.

Server software

Paper vs Spigot vs Purpur: Which Should You Use?

The three plugin platforms compared on performance, plugin compatibility, configuration depth and update speed, plus how to switch between them.

Sizing

How Much RAM Does a Minecraft Server Need?

2 GB for a small vanilla group, 4 GB for plugins or light modpacks, 6 to 12 GB for large packs, and why RAM is not the only kind of lag.

Migration

How to Move a Minecraft World to a New Host

Take your Java world from Aternos, Realms, a friend’s PC or another host: where the world folder lives, how to download it, what to check, and how to upload it.

Modded

How to Host a Better Minecraft Server (Forge and NeoForge Packs)

Pick the right Better MC edition (Fabric, Forge or NeoForge), give it 6–8 GB RAM, install the pack in one click, and fix the crashes these packs throw.

Sizing

Minecraft Server RAM for 2, 5, 10 and 20 Players

A sizing table by player count for vanilla, Paper, light and heavy modpacks, and why loaded chunks and view distance matter more than headcount.

Modded

How to Host a Modded Minecraft Server

Match the Minecraft version and loader, use the server pack, give it enough RAM, and fix the startup crashes everyone hits once.

Free tool

Minecraft Crash Log Analyzer

Paste a server or modpack log and get the likely cause and the fix in plain language. Free, and logs are never stored.

All guides →