aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-09-28 19:17:47 +0800
committershedaniel <daniel@shedaniel.me>2021-09-28 19:17:47 +0800
commit357656ca3e657baa7fd9db175db82659d66869cb (patch)
tree06352f84724e704191754a5f52d7a0d67cefb607
parent9464b5ab07f8ba74738aaad97d289df6c018faa3 (diff)
downloadarchitectury-loom-357656ca3e657baa7fd9db175db82659d66869cb.tar.gz
architectury-loom-357656ca3e657baa7fd9db175db82659d66869cb.tar.bz2
architectury-loom-357656ca3e657baa7fd9db175db82659d66869cb.zip
Fix #54
Signed-off-by: shedaniel <daniel@shedaniel.me>
-rw-r--r--src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java4
-rw-r--r--src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java2
-rw-r--r--src/main/java/net/fabricmc/loom/task/RemapJarTask.java124
3 files changed, 4 insertions, 126 deletions
diff --git a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java
index 0d0546bf..33fec4e6 100644
--- a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java
+++ b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java
@@ -26,6 +26,7 @@ package net.fabricmc.loom.build.mixin;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Path;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -81,8 +82,9 @@ public abstract class AnnotationProcessorInvoker<T extends Task> {
try {
LoomGradleExtension loom = LoomGradleExtension.get(project);
String refmapName = Objects.requireNonNull(MixinExtension.getMixinInformationContainer(sourceSet)).refmapNameProvider().get();
+ Path mappings = loom.isForge() ? loom.getMappingsProvider().mixinTinyMappingsWithSrg : loom.getMappingsProvider().tinyMappings;
Map<String, String> args = new HashMap<>() {{
- put(Constants.MixinArguments.IN_MAP_FILE_NAMED_INTERMEDIARY, loom.getMappingsProvider().tinyMappings.toFile().getCanonicalPath());
+ put(Constants.MixinArguments.IN_MAP_FILE_NAMED_INTERMEDIARY, mappings.toFile().getCanonicalPath());
put(Constants.MixinArguments.OUT_MAP_FILE_NAMED_INTERMEDIARY, loom.getNextMixinMappings().getCanonicalPath());
put(Constants.MixinArguments.OUT_REFMAP_FILE, getRefmapDestination(task, refmapName));
put(Constants.MixinArguments.DEFAULT_OBFUSCATION_ENV, "named:intermediary");
diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
index e644cb31..9a12fd29 100644
--- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
+++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
@@ -124,7 +124,7 @@ public class GenerateSourcesTask extends AbstractLoomTask {
}
private Path getMappings() {
- Path baseMappings = getExtension().getMappingsProvider().tinyMappings;
+ Path baseMappings = getExtension().isForge() ? getExtension().getMappingsProvider().tinyMappingsWithSrg : getExtension().getMappingsProvider().tinyMappings;
if (getExtension().getEnableTransitiveAccessWideners().get()) {
List<AccessWidenerFile> accessWideners = getExtension().getTransitiveAccessWideners();
diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
index c63b4a7e..732f4484 100644
--- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
+++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
@@ -30,38 +30,23 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.Reader;
import java.io.Writer;
-import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.FileSystem;
-import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
-import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
import java.util.Objects;
-import java.util.Optional;
import java.util.Set;
import java.util.jar.Manifest;
import java.util.zip.ZipEntry;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonObject;
-import dev.architectury.refmapremapper.RefmapRemapper;
-import dev.architectury.refmapremapper.remapper.MappingsRemapper;
-import dev.architectury.refmapremapper.remapper.ReferenceRemapper;
-import dev.architectury.refmapremapper.remapper.Remapper;
-import dev.architectury.refmapremapper.remapper.SimpleReferenceRemapper;
import dev.architectury.tinyremapper.IMappingProvider;
import dev.architectury.tinyremapper.TinyRemapper;
import dev.architectury.tinyremapper.TinyUtils;
@@ -82,7 +67,6 @@ import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.TaskAction;
import org.gradle.jvm.tasks.Jar;
import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.Nullable;
import org.zeroturnaround.zip.ZipUtil;
import org.zeroturnaround.zip.transform.StreamZipEntryTransformer;
import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry;
@@ -166,72 +150,6 @@ public class RemapJarTask extends Jar {
convertAwToAt();
}
- private ReferenceRemapper createReferenceRemapper(LoomGradleExtension extension, String from, String to) throws IOException {
- MappingTree mappings = (from.equals("srg") || to.equals("srg")) && extension.shouldGenerateSrgTiny() ? extension.getMappingsProvider().getMappingsWithSrg() : extension.getMappingsProvider().getMappings();
-
- return new SimpleReferenceRemapper(new SimpleReferenceRemapper.Remapper() {
- @Override
- @Nullable
- public String mapClass(String value) {
- return mappings.getClasses().stream()
- .filter(classDef -> Objects.equals(classDef.getName(from), value))
- .findFirst()
- .map(classDef -> classDef.getName(to))
- .orElse(null);
- }
-
- @Override
- @Nullable
- public String mapMethod(@Nullable String className, String methodName, String methodDescriptor) {
- if (className != null) {
- Optional<MappingTree.ClassMapping> classDef = (Optional<MappingTree.ClassMapping>) mappings.getClasses().stream()
- .filter(c -> Objects.equals(c.getName(from), className))
- .findFirst();
-
- if (classDef.isPresent()) {
- for (MappingTree.MethodMapping methodDef : classDef.get().getMethods()) {
- if (Objects.equals(methodDef.getName(from), methodName) && Objects.equals(methodDef.getDesc(from), methodDescriptor)) {
- return methodDef.getName(to);
- }
- }
- }
- }
-
- return mappings.getClasses().stream()
- .flatMap(classDef -> classDef.getMethods().stream())
- .filter(methodDef -> Objects.equals(methodDef.getName(from), methodName) && Objects.equals(methodDef.getDesc(from), methodDescriptor))
- .findFirst()
- .map(methodDef -> methodDef.getName(to))
- .orElse(null);
- }
-
- @Override
- @Nullable
- public String mapField(@Nullable String className, String fieldName, String fieldDescriptor) {
- if (className != null) {
- Optional<MappingTree.ClassMapping> classDef = (Optional<MappingTree.ClassMapping>) mappings.getClasses().stream()
- .filter(c -> Objects.equals(c.getName(from), className))
- .findFirst();
-
- if (classDef.isPresent()) {
- for (MappingTree.FieldMapping fieldDef : classDef.get().getFields()) {
- if (Objects.equals(fieldDef.getName(from), fieldName) && Objects.equals(fieldDef.getDesc(from), fieldDescriptor)) {
- return fieldDef.getName(to);
- }
- }
- }
- }
-
- return mappings.getClasses().stream()
- .flatMap(classDef -> classDef.getFields().stream())
- .filter(fieldDef -> Objects.equals(fieldDef.getName(from), fieldName) && Objects.equals(fieldDef.getDesc(from), fieldDescriptor))
- .findFirst()
- .map(fieldDef -> fieldDef.getName(to))
- .orElse(null);
- }
- });
- }
-
public void scheduleRemap(boolean isMainRemapTask) throws Throwable {
Project project = getProject();
LoomGradleExtension extension = LoomGradleExtension.get(getProject());
@@ -297,14 +215,6 @@ public class RemapJarTask extends Jar {
if (MixinRefmapHelper.addRefmapName(project, output)) {
project.getLogger().debug("Transformed mixin reference maps in output JAR!");
}
-
- if (!toM.equals("intermediary")) {
- try {
- remapRefmap(extension, output, "intermediary", toM);
- } catch (IOException e) {
- throw new RuntimeException("Failed to remap refmap jar", e);
- }
- }
} else if (extension.isForge()) {
throw new RuntimeException("Forge must have useLegacyMixinAp enabled");
}
@@ -347,40 +257,6 @@ public class RemapJarTask extends Jar {
});
}
- private void remapRefmap(LoomGradleExtension extension, Path output, String from, String to) throws IOException {
- try (FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + output.toUri()), ImmutableMap.of("create", false))) {
- Path refmapPath = fs.getPath(extension.getMixin().getDefaultRefmapName().get());
-
- if (Files.exists(refmapPath)) {
- try (Reader refmapReader = Files.newBufferedReader(refmapPath, StandardCharsets.UTF_8)) {
- Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
- JsonObject refmapElement = gson.fromJson(refmapReader, JsonObject.class);
- refmapElement = RefmapRemapper.remap(new Remapper() {
- ReferenceRemapper remapper = createReferenceRemapper(extension, from, to);
-
- @Override
- @Nullable
- public MappingsRemapper remapMappings() {
- return className -> remapper;
- }
-
- @Override
- @Nullable
- public Map.Entry<String, @Nullable MappingsRemapper> remapMappingsData(String data) {
- if (Objects.equals(data, "named:intermediary")) {
- return new AbstractMap.SimpleEntry<>(Objects.equals(to, "srg") ? "searge" : data, remapMappings());
- }
-
- return null;
- }
- }, refmapElement);
- Files.delete(refmapPath);
- Files.write(refmapPath, gson.toJson(refmapElement).getBytes(StandardCharsets.UTF_8));
- }
- }
- }
- }
-
private NestedJarProvider getNestedJarProvider() {
if (!LoomGradleExtension.get(getProject()).supportsInclude()) {
return EmptyNestedJarProvider.INSTANCE;