* Change zip entry ordering to place manifest first
* Add handling for signature related files
* Update jar file hash
* Hopefully update correct file hashes this time
* Change jar hashes
* Add correct source hashes
* Fixes Integration tests locally often fail with download errors #878
* Hopefully fixes Loom is very slow to download files, often hanging for 10+ minutes #877
* "Forcing downloading" error should show much less often.
* Progress loggers get closed when download fails.
* Download assets uses a maxmium of 10 threads.
* Update tests to run against 8.3 nightlys.
* Fix windows arm tests as Mojang back-ported this change to all 1.19 versions.
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.
Single JARs break things like source generation on newer versions and
pretty much have no difference there, so we should log a warning,
similar to what we do for merged JARs not being supported on 1.2.5 or
older.
* Add test for #801
* Add test for #572
* Rewrite mod configuration remapping internals to fix bugs
Fixes#801. Fixes#572.
- Instead of individual mod configs getting remapped, Loom now remaps
"collector configs": `mod[Compile/Runtime]Classpath[source set name]`
(eg `modRuntimeClasspathMain` -> `modRuntimeClasspathMainRemapped`)
- This lets us use Gradle's `org.gradle.usage` attributes to select
whether it's a compile-time or runtime dependency
- Note: Remap configurations sourcing from `api` are partially left
intact due to their special logic in the `namedElements` configuration.
- Setting the proper usages fixes#801.
- No dependency files are added to the real target configurations
(like `api` and `implementation`) anymore.
- This fixes#572, since `runtimeClasspath` and `compileClasspath` don't
leak transitive dependencies unlike `implementation` etc.
* Fix checkstyle
* Fix split env dependency consumers
* Only use collector configs for remapped deps and let the inputs stay intact
This way the code has less duplication.
* Improve log messages
* Update year
* Add some comments
* Fix compilation
* Use LinkedHashMap for reliable iteration order through remapped configs
* Use ImmutableMap.of instead of Map.of for reliable ordering
* ModConfigurationRemapper: Move namedElements handling out of forEach
* Add regression test for a crash where loader is resolved after other mods
* Fix the aforementioned bug
* Rename InstallerDataTest -> DependencyOrderTest
* Add TODO about refresh dependencies
The code currently processes the same deps multiple times when
--refresh-dependencies/-Dloom.refresh=true/a cache invalidation
is applied.
Co-authored-by: modmuss50 <modmuss50@gmail.com>
* Add gradle 8 tests
Reuse gradle home between tests
Misc perf and mem optimisations
* Fix build warning.
* Added multi mc version test
* Use server launcher in ServerRunner
Co-authored-by: Luna <62033805+Luna5ama@users.noreply.github.com>