aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/configuration/mods
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-10-27 12:04:17 +0800
committershedaniel <daniel@shedaniel.me>2021-10-27 12:04:17 +0800
commit70d4a1d691fae2469f90a47ed67ec247a8851159 (patch)
treed404cfbf0fc13e6930d4f85c4cf0bc2328204831 /src/main/java/net/fabricmc/loom/configuration/mods
parentdecdb1fd85ea844cf3589e2dd4650eab63f22e54 (diff)
downloadarchitectury-loom-70d4a1d691fae2469f90a47ed67ec247a8851159.tar.gz
architectury-loom-70d4a1d691fae2469f90a47ed67ec247a8851159.tar.bz2
architectury-loom-70d4a1d691fae2469f90a47ed67ec247a8851159.zip
Forgot to commit fix merge conflicts
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/net/fabricmc/loom/configuration/mods')
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java53
1 files changed, 34 insertions, 19 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
index fcfb4336..5cb175c7 100644
--- a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
+++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
@@ -24,6 +24,8 @@
package net.fabricmc.loom.configuration.mods;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -41,11 +43,13 @@ import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import com.google.common.base.Stopwatch;
import com.google.gson.JsonObject;
import dev.architectury.tinyremapper.InputTag;
+import dev.architectury.tinyremapper.NonClassCopyMode;
import dev.architectury.tinyremapper.OutputConsumerPath;
import dev.architectury.tinyremapper.TinyRemapper;
import org.gradle.api.Project;
@@ -62,11 +66,11 @@ import net.fabricmc.loom.configuration.processors.dependency.ModDependencyInfo;
import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider;
import net.fabricmc.loom.util.Constants;
+import net.fabricmc.loom.util.FileSystemUtil;
import net.fabricmc.loom.util.LoggerFilter;
import net.fabricmc.loom.util.TinyRemapperHelper;
import net.fabricmc.loom.util.ZipUtils;
import net.fabricmc.loom.util.srg.AtRemapper;
-import net.fabricmc.tinyremapper.NonClassCopyMode;
import net.fabricmc.loom.util.srg.CoreModClassRemapper;
import net.fabricmc.mappingio.tree.MemoryMappingTree;
@@ -102,7 +106,8 @@ public class ModProcessor {
}
private static void stripNestedJars(File file) {
- if (!ZipUtil.containsEntry(file, "fabric.mod.json")) return;
+ if (!ZipUtils.contains(file.toPath(), "fabric.mod.json")) return;
+
// Strip out all contained jar info as we dont want loader to try and load the jars contained in dev.
try {
ZipUtils.transformJson(JsonObject.class, file.toPath(), Map.of("fabric.mod.json", json -> {
@@ -226,25 +231,35 @@ public class ModProcessor {
AtRemapper.remap(project.getLogger(), info.getRemappedOutput().toPath(), mappings);
CoreModClassRemapper.remapJar(info.getRemappedOutput().toPath(), mappings, project.getLogger());
- if (ZipUtil.containsEntry(info.getRemappedOutput(), "META-INF/MANIFEST.MF")) {
- ZipUtil.transformEntry(info.getRemappedOutput(), "META-INF/MANIFEST.MF", (in, zipEntry, out) -> {
- Manifest manifest = new Manifest(in);
- fixManifest(manifest);
- out.putNextEntry(new ZipEntry(zipEntry.getName()));
- manifest.write(out);
- out.closeEntry();
- });
- }
-
- List<String> filesToRemove = new ArrayList<>();
- ZipUtil.iterate(info.getRemappedOutput(), (in, zipEntry) -> {
- if (zipEntry.getName().toLowerCase(Locale.ROOT).endsWith(".rsa") || zipEntry.getName().toLowerCase(Locale.ROOT).endsWith(".sf")) {
- if (zipEntry.getName().startsWith("META-INF")) {
- filesToRemove.add(zipEntry.getName());
+ ZipUtils.transform(info.getRemappedOutput().toPath(), Map.of("META-INF/MANIFEST.MF", bytes -> {
+ Manifest manifest = new Manifest(new ByteArrayInputStream(bytes));
+ fixManifest(manifest);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ manifest.write(out);
+ return out.toByteArray();
+ }));
+
+ try (FileSystemUtil.Delegate fs = FileSystemUtil.getJarFileSystem(info.getRemappedOutput().toPath(), false);
+ Stream<Path> walk = Files.walk(fs.get().getPath("/"))) {
+ List<Path> filesToRemove = new ArrayList<>();
+ Iterator<Path> iterator = walk.iterator();
+
+ while (iterator.hasNext()) {
+ Path fsPath = iterator.next();
+ if (!Files.isRegularFile(fsPath)) continue;
+ String fileName = fsPath.toString();
+
+ if (fileName.toLowerCase(Locale.ROOT).endsWith(".rsa") || fileName.toLowerCase(Locale.ROOT).endsWith(".sf")) {
+ if (fileName.startsWith("META-INF")) {
+ filesToRemove.add(fsPath);
+ }
}
}
- });
- ZipUtil.removeEntries(info.getRemappedOutput(), filesToRemove.toArray(new String[0]));
+
+ for (Path fileToRemove : filesToRemove) {
+ Files.delete(fileToRemove);
+ }
+ }
}
info.finaliseRemapping();