Choose default JarJar mod file type based on parent JAR (#10026)

Co-authored-by: thedarkcolour <30441001+thedarkcolour@users.noreply.github.com>
This commit is contained in:
Jonathingandthedarkcolour authored and GitHub committed 2024-07-02 13:00:12 -07:00
1 parent d11733a48c
commit 99cff44383
2 files changed
+14 -2

No files matched your search

@@ -31,6 +31,11 @@ public abstract class AbstractModLocator implements IModLocator
protected static final String MANIFEST = "META-INF/MANIFEST.MF";
protected Optional<IModFile> createMod(Path... path) {
return this.createMod(getDefaultJarModType(), path);
}
// FORGE: Backporting artifact, the defaultType must be the first parameter since path is varargs
protected Optional<IModFile> createMod(String defaultType, Path... path) {
var mjm = new ModJarMetadata();
var sj = SecureJar.from(
Manifest::new,
@@ -42,7 +47,7 @@ public abstract class AbstractModLocator implements IModLocator
IModFile mod;
var type = sj.getManifest().getMainAttributes().getValue(ModFile.TYPE);
if (type == null) {
type = getDefaultJarModType();
type = defaultType;
}
if (sj.findFile(MODS_TOML).isPresent()) {
LOGGER.debug(LogMarkers.SCAN, "Found {} mod of type {}: {}", MODS_TOML, type, path);
@@ -81,7 +81,14 @@ public class JarInJarDependencyLocator extends AbstractJarFileDependencyLocator
final Map<String, ?> outerFsArgs = ImmutableMap.of("packagePath", pathInModFile);
final FileSystem zipFS = FileSystems.newFileSystem(filePathUri, outerFsArgs);
final Path pathInFS = zipFS.getPath("/");
return createMod(pathInFS);
final IModFile.Type parentType = file.getType();
final String modType;
if (parentType == IModFile.Type.LIBRARY || parentType == IModFile.Type.LANGPROVIDER) {
modType = IModFile.Type.LIBRARY.name();
} else {
modType = IModFile.Type.GAMELIBRARY.name();
}
return createMod(modType, pathInFS);
}
catch (Exception e)
{