JarJar
11 merged pull requests.
New Features
- #23 Config reads enableSortingIndexOverrides (default true) and SortingIndex.<coremod class>=<number> properties into a map. JarUtil.applyConfiguredSortOrder sets the candidate sort order from it, with a built-in sort order 1 for HodgepodgeCore below 2.7.147. - @mitchej123
- Added: SortingIndex override config, enableSortingIndexOverrides option
- Fixed: crash with NEI on Hodgepodge before 2.7.147
- #9 New CoremodExemptions class reads class names from META-INF/jarjar_coremod_exemptions.cfg, and ModCandidateV2Sorter.handleDuplicates skips candidates whose coremod class is listed. The file ships with thaumcraft.codechicken.core.launch.DepLoader. - @mitchej123
- Added: coremod duplicate detection exemption list
Bug Fixes
- #27 ModCandidateV2Sorter computes a separate classpath order (getClasspathOrder) that places API owners ahead of non-owning packagers. JarUtil scans each coremod jar for packages and package-info API versions, and CoreModManagerV2 adds jars to the classpath in that order. - @mitchej123
- Fixed: API owner mods loading after mods that repackage their API
- #25 Config.sortingIndexOverrides changed from fastutil Object2IntMap to a plain HashMap<String, Integer>, and JarUtil reads it with get instead of getInt. - @mitchej123
- Fixed: early class loading of fastutil in Config
- #22 ParallellModDiscoverer.computeJarFile skips META-INF/versions/ entries and module-info.class when building ASM data. ModCandidateV2Sorter.handleDuplicates throws a LoaderException when equal-id candidates share the same file. - @mitchej123
- Added: error when a mod id is found multiple times in the same jar
- Fixed: multi-release jar mods added twice to ASMDataTable, double construction of mod, client and proxy
- #21 ASMModParserV2 PRESCAN now looks for RuntimeVisibleAnnotations and RuntimeInvisibleAnnotations instead of RuntimeVisibleParameterAnnotations. - @mitchej123
- Removed: parameter annotation prescan
- Fixed: compile time annotations missing from ASMDataTable
- #20 COREMOD_COMPARATOR in CoreModManagerV2 now compares getFilename with String.CASE_INSENSITIVE_ORDER. - @mitchej123
- Fixed: load order depending on file name capitalization
- #17 In LoaderV2.identifyMods, releaseParsedData is now called for all modCandidates after the uniqueCandidates loop instead of only inside it. - @Alexdoru
- Fixed: parsed data kept for unidentified mod candidates
- #8 ModContainerFactoryV2 flags candidates containing an @API annotation. LoaderV2 keeps those jars out of the non-mod libs and wraps them in the new APIOnlyWrapper so they go through sorting and send their data to the ASMDataTable. - @mitchej123
- Added: APIOnlyWrapper for API-only jars
- Fixed: DeepResonance not recognising McJtyLib
- Closes #4
- #7 FMLTransformer replaces the body of CoreModManager.handleLaunch with a call to CoreModManagerV2's handleLaunch, as a workaround for FMLLaunchHandler not using CMMV2. - @mitchej123
- Fixed: CoreModManager.handleLaunch not calling CoreModManagerV2
Performance
- #16 Optimized ASMDataTableV2.getAnnotationsFor, ASMModParser no longer parses code, coremod examination moved to a shared ForkJoinPool with Futures joined in order, classes are prescanned for annotations, byte[] reads are pre-sized, GSON/JSON parser is static. Mod candidate sorting is closer to vanilla, all coremods are made available for MixinBootstrap, and the buildscript moves to jvmDowngrader with dependency bumps (RetroFuturaBootstrap 1.0.16, unimixins 0.3.0, GTNHLib 0.9.65). - @mitchej123
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@mitchej123 (11), @Yoshy2002 (2), @Alexdoru (1), @UltraProdigy (1)