This lets us use the same order as in 1.1, so I can also clean up some
changes made for the ordering. Thanks to merging MinecraftProvider's
provideFirst() and provide(), I could safely move the dependency providers
back to where they belong. (Alternatively, I could've moved the libraries
to provideFirst() but it's better to just get rid of it anyway to reduce
isForge() checks.)
Partially reverts commit 3d74e11167.
They need a Java 8 toolchain for testing, but toolchains (more specifically,
the Foojay toolchain resolver plugin) cannot be used in a test kit
environment since the native services it needs are force-disabled.
The versions themselves should still work when used with the correct JDK
via toolchains.
The setup of dependency providers must happen after the custom repositories
added by Loom are finalised, but they're modified by the library processor
system. Therefore, we need to
1. Initialise dependency providers later.
2. Replace usages of specific dependency providers with (potentially slower)
alternatives that don't resolve any dependencies.
This PR rewrites the Minecraft library processing with a more structured and testable set of "library processors". The old code is a mess of special cases and work arounds for various issues on various platforms.
Previously this was only really used on lesser used platforms/versions so wasnt a major issue if things broke, however current shipping Minecraft versions (1.19.4) use an LWJGL version that does not work well on Java versions new than 19. With this change LWJGL is upgraded when using Java 19 or later.
Upgraded libraries are also now only placed on the runtime classpath, this prevents you from using newer library features in your mod.
* SrgMerger: Add mergeSrg overload returning the raw MemoryMappingTree
* Rewrite ForgeLibrariesProvider for consistent transformed output paths
Now it also only transforms fmlloader instead of pointlessly copying
around unrelated files and looking inside them. We know where we can find
the files we need to patch.
Fixes#127 which is caused by the DLI config and runtime fmlloader jar
paths being different due to their transform ID hashes differing.
* Use a local Maven repo instead
* ForgeLibrariesProvider: Adjust comment