From bd1eb92b49b30e16b707c82ebccb01584069c693 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Tue, 10 May 2022 11:22:45 +0200 Subject: 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> --- .../configuration/sources/ForgeSourcesRemapper.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 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 sources) throws IOException { -- cgit