neoforged / FancyModLoader

The fancy mod loader for NeoForged
Other
62 stars 31 forks source link

JarJar does not skip loading libraries that are already on the classpath #202

Open Technici4n opened 2 weeks ago

Technici4n commented 2 weeks ago

identifyMod is used by JarJar to skip jar-in-jar'ed dependencies that are already loaded. For libraries however, it returns the file name which makes it impossible to override a jar-in-jar'ed dependency with a different version. It would be better to return the module name for libraries.

https://github.com/neoforged/FancyModLoader/blob/a9958a7ad72a44cc9ef88ece85b8f7bb8f72785f/loader/src/main/java/net/neoforged/fml/loading/moddiscovery/locators/JarInJarDependencyLocator.java#L111-L117

lukebemish commented 4 days ago

If I understand how that works right, the identity stuff for files with a mod ID is also wrong there -- you could have a library jarar-ed with mods foo and bar and a root level file with the single mod foobar and the latter would replace the former which is wrong. Simple fix is to just join by something that's not part of a mod ID, right? Maybe ,, that's done elsewhere.