aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/util/srg
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-01-11 14:36:15 +0800
committershedaniel <daniel@shedaniel.me>2021-01-11 14:36:15 +0800
commitfed9b0a4e7aa4844291d20add3ea49ab5368a4b6 (patch)
treef6eec3cb6c65cbec1ae32354da12ed75af38a7b8 /src/main/java/net/fabricmc/loom/util/srg
parent5317263e5844cd53f726e3cbbad7abea66ea21a6 (diff)
downloadarchitectury-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.java19
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();
}
});
}