“Mixin apply failed” on a Minecraft server: what it means and how to fix it
A mixin is a patch that a mod applies to one of Minecraft's own classes while the game loads. “Mixin apply failed” means one of those patches could not be applied, so the mod loader stopped the server rather than run a half-patched class. The message names the mixin config that failed, and that name is almost always the mod you need to look at.
What the error is actually telling you
Most modern Minecraft mods do not replace Minecraft's code; they patch it in memory as it loads, using a library called Mixin. Each mod ships one or more config files named something like sodium.mixins.json, and the Mixin subsystem reads those configs and applies the patches they list to the target classes they name.
A failure means one specific patch could not be applied to one specific target class. The loader treats that as fatal on purpose: a class that was supposed to be patched and was not is a class that will misbehave in a way nobody can debug, so it stops the boot instead.
The two spellings of the same problem
Mixin fails in two phases and prints different exception types for each. They mean different things to a mod developer and the same thing to you: one mod's patches were rejected.
| What you see in the log | Phase | What happened |
|---|---|---|
| Mixin apply for mod <id> failed / MixinApplyError | apply | The patch reached its target class and could not be written to it. |
| MixinTransformerError | apply | The transformer itself threw while rewriting the class. |
| InvalidMixinException | prepare | The mixin was rejected during validation, before it was ever applied. |
| InvalidInterfaceMixinException | prepare | An interface mixin declared something the subsystem refuses (a non-public method in an interface mixin, for example). |
A prepare-time failure never prints the apply-time wording, which is why searching only for “Mixin apply failed” sometimes turns up nothing for a crash that is plainly a mixin problem. Search for the exception type instead.
The four things that actually cause it
1. A client-only mod running on a dedicated server
This is the most common one, and it is the reason a pack that launches fine on your own machine dies on the server. A dedicated server has no rendering, no GUI and no input handling, so the classes a client mod wants to patch do not exist in the server jar at all.
- Tell-tale: the target class sits under net/minecraft/client/ or com/mojang/blaze3d/.
- Tell-tale: the same log also carries “invalid dist DEDICATED_SERVER” (Forge and NeoForge on 1.13+) or “for invalid side SERVER” (Forge on 1.7–1.12).
- Tell-tale: the mod is tagged Client on its CurseForge or Modrinth page, or its fabric.mod.json sets "environment": "client".
That family has its own signatures and its own fixes, including the awkward case where a server mod hard-requires a client-only one.
Read the invalid dist DEDICATED_SERVER guide2. Version skew between the mod and Minecraft
A mixin names the exact method it patches. Rename or reshape that method in a new Minecraft version and the patch has nowhere to land. This is what you get from a mod jar built for 1.20.1 dropped into a 1.21 server, or from one mod in a pack that was never updated with the rest.
The give-away is a target-not-found message naming a Minecraft method, often followed later in the log by a NoSuchMethodError or NoSuchFieldError from the same mod.
Version skew has a Java-side sibling: a jar built for a newer Java than the server is running. Our lookup table lists the Java major version Mojang publishes for every Minecraft release, generated from Mojang's own version manifest.
Minecraft to Java version lookup3. Two mods patching the same method
Two mods can both patch the same Minecraft method and be individually correct. Whichever applies second can find the method already rewritten into a shape its patch does not match. Performance mods, world-gen mods and anything that touches the entity or chunk-tick path are the usual pair, and the fix is normally a compatibility mod the authors publish, or dropping one of the two.
4. A stale loader or a half-finished update
The Mixin library ships inside the mod loader. A pack built against an older Fabric or NeoForge loader can hit validation that a newer loader applies more strictly, and a pack update that replaced some jars but not others leaves exactly the version skew described above. Re-installing the pack cleanly rules both out faster than reading the log does.
How to find the mod in the log
- Open logs/latest.log, or the crash report under crash-reports/, and scroll to the very bottom.
- Find the last “Caused by:” line. That is the real failure; everything above it is context.
- In that frame, look for a name ending in .mixins.json. The text before the first dot is normally the mod id — create.mixins.json is Create, ftbchunks.mixins.json is FTB Chunks.
- Match that id to a filename in your mods folder. Ids and filenames differ often enough that it is worth checking, not assuming.
- If no config is named, take the first package in the stack that is not net.minecraft, net.fabricmc, net.neoforged or org.spongepowered — that package belongs to the mod at fault.
One caution on step 5: a line at WARN level, or an exception rendered underneath a WARN prefix, proves nothing. It means something probed a class, failed, and handled it. Only an exception at ERROR or FATAL level, or one inside the crash report itself, attributes blame.
How to fix it
- Back up the world folder first. Everything below is reversible; the backup is what makes that true.
- Move the suspect jar out of mods/ and start the server. If it boots, you have your answer in one restart.
- If you want that mod: replace it with the build published for your exact Minecraft version AND your loader, not just the right loader. A 1.20.1 jar in a 1.21 pack is the single most common cause here.
- If it is client-only, it belongs in your own mods folder, not the server's. Client-only mods do not need a server-side copy to work.
- If two mods conflict, look for a compatibility or bridge mod from either author before you choose between them.
- If the pack shipped this way and the crash is on first boot, re-install the pack cleanly before assuming a mod is broken — a partial download produces the same symptom.
What MineXHost's launcher does with this crash
Every server here is started by MineXEngine, our own launcher. When a mixin failure comes back, it reads the crash, pulls the failing config name out of the fatal frame, and maps that config to the jar in mods/ that ships it. That match is confidence-gated: if the config cannot be tied to exactly one jar, the engine says so rather than picking one.
On your server, nothing is deleted for you. Crash recovery is identify-only on customer servers by design — the engine names the file in your console and leaves mods/ exactly as you uploaded it. Quietly removing a mod from a server somebody is paying for is not a decision a launcher should make on its own.
When a pack genuinely cannot boot on a dedicated server without a change, the engine writes a proposal naming the exact file and the evidence for it, and the panel shows you that list. Nothing moves until you approve it, and the approval is scoped to that one change list — a different crash produces a new proposal and asks you again.
One case is handled before the first boot instead of after a crash: a mod whose own metadata declares itself client-only (environment "client" in fabric.mod.json or quilt.mod.json, the equivalent in mods.toml) is moved out of mods/ during install, because a mod that declares itself client-only will never run on a dedicated server. That pass acts on what a mod says about itself, never on a guess from its name.
MineXHost runs Forge, NeoForge, Fabric and Quilt packs on MineXEngine — our launcher auto-detects the modpack, picks the right Minecraft loader and Java version, tunes the JVM for your RAM, and auto-recovers from the crashes that normally end a modded server's evening. Pick your RAM, paste the pack, and play.
See hosting plansFrequently asked questions
What does “Mixin apply failed” mean on a Minecraft server?
Mixin apply failed means a mod tried to patch one of Minecraft's own classes while the server was loading and the patch could not be applied, so the mod loader stopped the boot instead of running a half-patched class. The message names the .mixins.json config that failed, and that name normally identifies the mod at fault. The target class named alongside it tells you why the patch failed — most often because the class does not exist on a dedicated server, or because the mod was built for a different Minecraft version.
How do I find which mod caused a mixin crash?
Read the crash from the bottom: find the last “Caused by:” line and look for a name ending in .mixins.json. The text before the first dot is usually the mod id, so create.mixins.json points at Create. Match that id to a filename in your mods folder. Ignore the wall of “@Mixin target ... was not found” warnings above it — those are mixins the loader disabled deliberately and they are not the failure. If no config is named, take the first package in the stack that is not net.minecraft, net.fabricmc, net.neoforged or org.spongepowered.
Why does the modpack work on my client but crash the server?
A dedicated server has no rendering, no GUI and no input handling, so the classes a client mod patches simply do not exist in the server jar, and a mixin that applies cleanly on your machine fails outright on the server. Check whether the failing mixin targets a class under net.minecraft.client or com.mojang.blaze3d. If it does, that mod is client-only: keep it in your own mods folder and remove it from the server's. Client-side mods do not need a server copy to work in multiplayer.
Can I fix a mixin error by deleting the mixins.json from the jar?
No — deleting a mixin config from inside a jar leaves the mod's own code expecting patches that were never applied, which usually trades a clean startup crash for a subtler failure hours later. Remove the whole jar instead, or replace it with the build published for your exact Minecraft version and mod loader. Editing the contents of a mod jar also makes the mod unsupportable by its author, so a bug report against a modified jar will not get far.
Will removing the mod delete my world?
Removing a mod does not delete your world, but it does remove that mod's blocks, items and entities from it, and anything placed from that mod disappears from where it stood. Back up the world folder before removing anything, and expect the server to report missing content the first time it loads the world afterwards. Vanilla terrain and every other mod's content are unaffected, and putting the mod back restores its content where the chunks were not re-saved without it.
Does MineXHost remove the broken mod for me automatically?
Not on your own server without asking: MineXEngine identifies the jar that owns the failing mixin and names it in your console, but crash recovery is identify-only on customer servers, so your mods folder stays exactly as you uploaded it. When a pack cannot boot on a dedicated server at all without a change, the panel shows you the specific file and the evidence behind it, and applies the change only after you approve that exact list. Mods that declare themselves client-only in their own metadata are the one exception — those are moved aside during install.