Closed strangeglyph closed 7 years ago
It's a known issue, we do not know why this happens, as obviously the class bxl
is present and that's not a class we are transforming.
Sorry for jumping in. One of my friend encountered the exact same issue, and I took a whole night to investigate, and here is the result:
Due to unknown reason, the line indicated above successfully letting net.minecraftforge.fml.common.versioning.Restriction
bypass the DeobfuscationTransformer
, causing that class still has obfuscated reference to net.minecraft.client.resource.I18n
(i.e. mcp name of class bxl
). Thus, when missing dependencies, Restriction::toStringFriendly
will fail due to it cannot find class bxl
, causing that GuiScreen failed on printing translated, human-readable version range information, or even crashing the game.
NEI in around 1.10.2 era has the exact same issue, causing the exact same crashes, e.g. TheCBProject/NotEnoughItems#22, TheCBProject/NotEnoughItems#23, TheCBProject/NotEnoughItems#27. Due to their removing the no-longer-being-used coremod, they successfully got rid of the issue.
CC @mezz @covers1624 (I know that issue was no longer a thing due to the purge of coremod in CodeChickenLib/CodeChickenCore, but I believe it's still a good lesson - "Do not touching Minecraft-base-related stuff during coremod loading cycle"... So sorry for bothering in advance.)
Indeed, This basically all falls down to ClassLoader bullshit, be careful when on the system ClassLoader, lots of nasty issues like this can be avoided.
Furthermore - the usage of VersionRange for checking Minecraft version is not the best practice IMHO - there is @IFMLLoadingPlugin.MCVersion
which will let FML ignore the coremod when mismatching Minecraft version.
Huge thanks @3TUSK
We are looking at this now.
oops, looks like there were a few other references to Versioning
still in the CoreMod. Some of that was probably special code needed for Galacticraft 3 - which was dual-compatible with both 1.7.2 and 1.7.10 versions of Minecraft.
Anyhow, the issue is properly fixed in build 120, it's now tested to work correctly.
To reproduce: Create a minimal forge installation with MicDoodleCore and AdvancedRocketry. Start the instance. Edit: MultiMC instance too large for github, find it here
Expected behaviour: The "Missing Dependencies" Screen should pop up because AdvancedRocketry depends on libVulpes
Actual behaviour: Minecraft crashes with a
NoClassDefFound: bxl
Log: