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.
This lays the ground work for split client and server mod code. With this first phase when enabled loom will generate a clientonly and common minecraft jar. Fabric loader and API will both need changes to support this before it can be used to develop mods.
Phase two of this project will handle splitting mod code into a client and common source set along with spliting any dependencies.
Mostly fixes#539 by sepreating decompile tasks
* Rewrite CFR decompiler interface. Support javadoc
* CFR line numbers and fixes.
* Cleanup and fix
* Use WorkerExecutor to fork, massively cleans up the fernflower code, but does remove the fancy multithreaded logging.
* Use IPC to get logging back from the decompilers.
* Cleanup UnpickJarTask, fix leak in IPCServer
* Used published CFR build
* Handle older windows versions that do not support AF_UNIX.
* Fixes and basic unit test
* Improve memory handling of genSources
* Stop decompile worker JVM