Guidefor players4 min read
When a mod's core and addon jars fall out of sync
Xaero's Minimap and XaeroLib, Sophisticated Backpacks and Sophisticated Core: mods shipped as a library jar plus one or more addon jars, and what happens when you update only one of the pair.
Why some mods ship as two jars
Several popular mods are actually two downloads. Xaero's Minimap needs XaeroLib. Xaero's World Map needs the same XaeroLib. Sophisticated Backpacks needs Sophisticated Core. This isn't an accident or a packaging mistake: rendering code, data storage, and UI framework that multiple feature mods from the same author all need gets factored out once, into a shared library jar, instead of being duplicated inside every addon that uses it.
It's a reasonable architecture. Xaero's Minimap and Xaero's World Map both need the same map-rendering internals, so XaeroLib holds those once and both addons build on it. Sophisticated Backpacks needs storage and UI plumbing that Sophisticated Core provides, and other addons in that family use the same core rather than reimplementing it. The split saves the author real duplicated work, and it's common across the modding ecosystem well beyond these two examples.
The catch is that you now have two jars that both have to be right, not one.
Why this pairing is stricter than an ordinary dependency
A mod that depends on Fabric API is depending on something slow-moving and broadly compatible. Fabric API adds features without breaking old ones for long stretches, so a mod built against last month's Fabric API usually still works against this month's. That looseness is why checking mod compatibility treats "needs a library" as a mostly-solved problem once the library is present at roughly the right version.
A core and addon jar from the same author are a different situation. The interfaces between them are internal, not a published stable API, because both jars are maintained by one author who can change either side freely. That's exactly what makes the split useful for the author in the first place, and exactly what makes it fragile for you: the addon is often pinned to a narrow range of the core, sometimes to one specific version, not "anything equal or newer." Update one jar without the other and you've broken that pin.
This is what shows up, repeatedly, in real reports on both mod families:
- "It says I need XaeroWorldMap 1.44.0 but I only have 1.39.12."
- "Your lib is made for older versions... I don't know what you would have to do for that to not work."
- "Sophisticated Backpacks and Sophisticated Core keep 'failing to load correctly.'"
- "Sophisticated Core is incompatible with the new version of Just Enough Items."
Different mods, same failure shape: one half of a pair moved and the other didn't.
What the crash actually looks like
Sometimes the loader catches it cleanly, with a message naming the exact version it wanted. Other times it gets further before failing, and you get a real crash. A field or method that existed in the old core jar simply isn't there anymore, because the addon was compiled against a newer core than the one sitting in your mods folder. From a real Waystones crash log:
Caused by: java.lang.NoSuchFieldError:
Class net.blay09.mods.waystones.core.WaystoneVisibility does not have
member field 'TEAM'
That's the signature of a version mismatch between tightly coupled jars, not a corrupted
install or a genuine bug. The addon (or a mod depending on it) is calling a symbol,
TEAM on WaystoneVisibility, that only exists in a newer build than what's on disk.
NoSuchFieldError and NoSuchMethodError both mean the same thing: compiled against one
version, running against another.
The tell: which jar the error names versus which jar you touched
The direction is the diagnostic. Read the error and ask which jar it's unhappy with, then compare that against which jar you remember downloading:
- Error names the core, you just updated the addon. The addon now expects a newer core than you have. Update the core to match.
- Error names the addon (or a symbol the addon owns), you just updated the core. The addon was built against the old core's internals and hasn't caught up. Update the addon, or if no newer addon build exists yet, revert the core.
Either direction, the mismatch is never really about the jar the error names. It's about the jar you didn't touch.
The fix: update both, from the same moment
Don't patch one jar and leave the other. When either half of a core-addon pair needs updating:
- Delete both old jars. Not just the one you're upgrading.
- Download both current jars, from the same release moment, both from the same author's current pages.
- Check the addon's own page for the core version it states it needs. That number is authoritative; your memory of what you installed originally is not.
If you're using a modpack manager or launcher, don't assume it updates dependency pairs atomically. Some update every mod in a pack together; others surface individual mods as available updates and let you apply them one at a time, which is exactly the gap that produces this error. After any update, however it was applied, open the mods folder and verify both jars' version numbers by hand, especially for a mod family you know ships in pairs.
When you're not sure a mod is part of a pair
If a mod page lists a "required" or "library" dependency from the same author, rather than a general-purpose library like Fabric API or Cloth Config, assume the pairing is tight until proven otherwise. Why mods are loader specific covers the broader reason mods are compiled against specific internals rather than a stable API, and the same logic applies here: two jars from one author, sharing unpublished internal code, move together or not at all.

