|
3 | 3 | import com.google.common.collect.HashMultimap;
|
4 | 4 | import com.google.common.collect.Multimap;
|
5 | 5 | import com.mojang.logging.LogUtils;
|
| 6 | +import cpw.mods.jarhandling.JarMetadata; |
6 | 7 | import cpw.mods.jarhandling.SecureJar;
|
7 | 8 | import dev.su5ed.sinytra.connector.ConnectorUtil;
|
8 | 9 | import dev.su5ed.sinytra.connector.loader.ConnectorEarlyLoader;
|
|
21 | 22 | import net.minecraftforge.forgespi.locating.IDependencyLocator;
|
22 | 23 | import net.minecraftforge.forgespi.locating.IModFile;
|
23 | 24 | import net.minecraftforge.forgespi.locating.IModLocator;
|
24 |
| -import net.minecraftforge.forgespi.locating.IModProvider; |
25 | 25 | import org.apache.maven.artifact.versioning.ArtifactVersion;
|
26 | 26 | import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
27 | 27 | import org.jetbrains.annotations.Nullable;
|
@@ -136,26 +136,31 @@ private List<IModFile> locateFabricMods(Iterable<IModFile> loadedMods) {
|
136 | 136 | // Deal with split packages (thanks modules)
|
137 | 137 | List<SplitPackageMerger.FilteredModPath> moduleSafeJars = SplitPackageMerger.mergeSplitPackages(transformed, loadedMods, ignoredModFiles);
|
138 | 138 |
|
139 |
| - List<IModFile> modFiles = new ArrayList<>(moduleSafeJars.stream().map(mod -> createConnectorModFile(mod, this)).toList()); |
| 139 | + List<IModFile> modFiles = new ArrayList<>(moduleSafeJars.stream().map(this::createConnectorModFile).toList()); |
140 | 140 | // Create mod file for generated adapter mixins jar
|
141 | 141 | Path generatedAdapterJar = JarTransformer.getGeneratedJarPath();
|
142 |
| - if (Files.exists(generatedAdapterJar)) {; |
| 142 | + if (Files.exists(generatedAdapterJar)) { |
143 | 143 | modFiles.add(createModOrThrow(generatedAdapterJar));
|
144 | 144 | }
|
145 | 145 | return modFiles;
|
146 | 146 | }
|
147 | 147 |
|
148 |
| - private IModFile createConnectorModFile(SplitPackageMerger.FilteredModPath modPath, IModProvider provider) { |
| 148 | + private IModFile createConnectorModFile(SplitPackageMerger.FilteredModPath modPath) { |
149 | 149 | if (modPath.metadata().generated()) {
|
150 |
| - return createModOrThrow(modPath.paths()); |
| 150 | + return createGameLibraryMod(modPath); |
151 | 151 | }
|
152 | 152 | ModJarMetadata mjm = ConnectorUtil.uncheckThrowable(() -> (ModJarMetadata) MJM_INIT.invoke());
|
153 | 153 | SecureJar modJar = SecureJar.from(Manifest::new, jar -> mjm, modPath.filter(), modPath.paths());
|
154 |
| - IModFile mod = new ModFile(modJar, provider, modFile -> ConnectorModMetadataParser.createForgeMetadata(modFile, modPath.metadata().modMetadata())); |
| 154 | + IModFile mod = new ModFile(modJar, this, modFile -> ConnectorModMetadataParser.createForgeMetadata(modFile, modPath.metadata().modMetadata())); |
155 | 155 | mjm.setModFile(mod);
|
156 | 156 | return mod;
|
157 | 157 | }
|
158 | 158 |
|
| 159 | + protected IModFile createGameLibraryMod(SplitPackageMerger.FilteredModPath modPath) { |
| 160 | + SecureJar sj = SecureJar.from(Manifest::new, jar -> JarMetadata.from(jar, modPath.paths()), modPath.filter(), modPath.paths()); |
| 161 | + return new ModFile(sj, this, this::manifestParser, IModFile.Type.GAMELIBRARY.name()); |
| 162 | + } |
| 163 | + |
159 | 164 | private IModFile createModOrThrow(Path... paths) {
|
160 | 165 | IModLocator.ModFileOrException moe = createMod(paths);
|
161 | 166 | if (moe.ex() != null) {
|
|
0 commit comments