diff options
author | shedaniel <daniel@shedaniel.me> | 2021-01-11 14:36:15 +0800 |
---|---|---|
committer | shedaniel <daniel@shedaniel.me> | 2021-01-11 14:36:15 +0800 |
commit | fed9b0a4e7aa4844291d20add3ea49ab5368a4b6 (patch) | |
tree | f6eec3cb6c65cbec1ae32354da12ed75af38a7b8 /src/main/java/net/fabricmc/loom/util/srg | |
parent | 5317263e5844cd53f726e3cbbad7abea66ea21a6 (diff) | |
download | architectury-loom-fed9b0a4e7aa4844291d20add3ea49ab5368a4b6.tar.gz architectury-loom-fed9b0a4e7aa4844291d20add3ea49ab5368a4b6.tar.bz2 architectury-loom-fed9b0a4e7aa4844291d20add3ea49ab5368a4b6.zip |
Fix setup errors + Multi-thread forge patching more.
Diffstat (limited to 'src/main/java/net/fabricmc/loom/util/srg')
-rw-r--r-- | src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java b/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java index b5765ae1..3b44651a 100644 --- a/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java +++ b/src/main/java/net/fabricmc/loom/util/srg/SpecialSourceExecutor.java @@ -1,6 +1,5 @@ package net.fabricmc.loom.util.srg; -import com.google.common.collect.ImmutableMap; import net.fabricmc.loom.LoomGradleExtension; import org.apache.commons.io.IOUtils; import org.gradle.api.Project; @@ -10,13 +9,15 @@ import org.zeroturnaround.zip.ZipUtil; import java.io.File; import java.io.IOException; -import java.net.URI; import java.nio.charset.StandardCharsets; -import java.nio.file.*; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Arrays; import java.util.Set; import java.util.UUID; +import java.util.jar.JarOutputStream; import java.util.stream.Collectors; +import java.util.zip.ZipEntry; public class SpecialSourceExecutor { public static Path produceSrgJar(Project project, File specialSourceJar, Path officialJar, Path srgPath) throws Exception { @@ -24,16 +25,14 @@ public class SpecialSourceExecutor { .filter(s -> !s.startsWith("\t")) .map(s -> s.split(" ")[0] + ".class") .collect(Collectors.toSet()); - Path stripped = project.getExtensions().getByType(LoomGradleExtension.class).getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 3) + "-filtered.jar"); + Path stripped = project.getExtensions().getByType(LoomGradleExtension.class).getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-filtered.jar"); Files.deleteIfExists(stripped); - try (FileSystem strippedFs = FileSystems.newFileSystem(URI.create("jar:" + stripped.toUri()), ImmutableMap.of("create", true))) { + try (JarOutputStream output = new JarOutputStream(Files.newOutputStream(stripped))) { ZipUtil.iterate(officialJar.toFile(), (in, zipEntry) -> { if (filter.contains(zipEntry.getName())) { - Path path = strippedFs.getPath(zipEntry.getName()); - if (path.getParent() != null) { - Files.createDirectories(path.getParent()); - } - Files.write(path, IOUtils.toByteArray(in), StandardOpenOption.WRITE, StandardOpenOption.CREATE_NEW); + output.putNextEntry((ZipEntry) zipEntry.clone()); + IOUtils.write(IOUtils.toByteArray(in), output); + output.closeEntry(); } }); } |