aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc
diff options
context:
space:
mode:
authorJonas Herzig <jonas@spark-squared.com>2022-05-10 11:22:45 +0200
committerJonas Herzig <jonas@spark-squared.com>2022-05-10 11:25:16 +0200
commitbd1eb92b49b30e16b707c82ebccb01584069c693 (patch)
treeacc87631331f4b90ccadc0c1b15d848c89d64832 /src/main/java/net/fabricmc
parentf7b49161eae439908e8beae44344c04c7949ede9 (diff)
downloadarchitectury-loom-bd1eb92b49b30e16b707c82ebccb01584069c693.tar.gz
architectury-loom-bd1eb92b49b30e16b707c82ebccb01584069c693.tar.bz2
architectury-loom-bd1eb92b49b30e16b707c82ebccb01584069c693.zip
Fix missing legacy forge sources
Forge has not published regular source artifacts for old versions, instead the sources zip is bundled within the userdev jar. Co-authored-by: DJtheRedstoner <52044242+DJtheRedstoner@users.noreply.github.com>
Diffstat (limited to 'src/main/java/net/fabricmc')
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java b/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java
index 5b523153..c393f997 100644
--- a/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java
+++ b/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java
@@ -105,11 +105,28 @@ public class ForgeSourcesRemapper {
}
}
+ LoomGradleExtension extension = LoomGradleExtension.get(project);
+ Path legacySourcesZip = null;
+
+ if (extension.isLegacyForge()) {
+ Path userdevJar = extension.getForgeUserdevProvider().getUserdevJar().toPath();
+ byte[] sourcesZip = ZipUtils.unpack(userdevJar, "sources.zip");
+
+ legacySourcesZip = Files.createTempFile("sources", ".zip");
+ legacySourcesZip.toFile().deleteOnExit();
+ Files.write(legacySourcesZip, sourcesZip, StandardOpenOption.TRUNCATE_EXISTING);
+ forgeInstallerSources.add(legacySourcesZip);
+ }
+
project.getLogger().lifecycle(":found {} forge source jars", forgeInstallerSources.size());
Map<String, byte[]> forgeSources = extractSources(forgeInstallerSources);
project.getLogger().lifecycle(":extracted {} forge source classes", forgeSources.size());
remapSources(project, forgeSources);
forgeSources.forEach(consumer);
+
+ if (legacySourcesZip != null) {
+ Files.delete(legacySourcesZip);
+ }
}
private static void remapSources(Project project, Map<String, byte[]> sources) throws IOException {