aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/util/srg
diff options
context:
space:
mode:
authorJuuxel <6596629+Juuxel@users.noreply.github.com>2020-11-30 19:15:32 +0200
committerJuuxel <6596629+Juuxel@users.noreply.github.com>2020-11-30 19:15:32 +0200
commitec199fef90ce0373119a1bec0c7f78d9331b2e80 (patch)
treeec255415518461dce7d4f3eb3bb9932d73fe804a /src/main/java/net/fabricmc/loom/util/srg
parent9b668547e0679d1190e7dc4d43b64f031a2f24ef (diff)
downloadarchitectury-loom-ec199fef90ce0373119a1bec0c7f78d9331b2e80.tar.gz
architectury-loom-ec199fef90ce0373119a1bec0c7f78d9331b2e80.tar.bz2
architectury-loom-ec199fef90ce0373119a1bec0c7f78d9331b2e80.zip
Tweak AT and coremod remappers
Diffstat (limited to 'src/main/java/net/fabricmc/loom/util/srg')
-rw-r--r--src/main/java/net/fabricmc/loom/util/srg/AtRemapper.java35
-rw-r--r--src/main/java/net/fabricmc/loom/util/srg/CoreModClassRemapper.java10
2 files changed, 33 insertions, 12 deletions
diff --git a/src/main/java/net/fabricmc/loom/util/srg/AtRemapper.java b/src/main/java/net/fabricmc/loom/util/srg/AtRemapper.java
index b2ad9470..a54c9af8 100644
--- a/src/main/java/net/fabricmc/loom/util/srg/AtRemapper.java
+++ b/src/main/java/net/fabricmc/loom/util/srg/AtRemapper.java
@@ -30,13 +30,12 @@ import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
import com.google.common.collect.ImmutableMap;
-import org.cadixdev.at.AccessTransformSet;
-import org.cadixdev.at.io.AccessTransformFormats;
-import org.cadixdev.lorenz.MappingSet;
-import net.fabricmc.lorenztiny.TinyMappingsReader;
+import net.fabricmc.loom.util.function.CollectionUtil;
import net.fabricmc.mapping.tree.TinyTree;
/**
@@ -50,12 +49,30 @@ public final class AtRemapper {
Path atPath = fs.getPath("META-INF", "accesstransformer.cfg");
if (Files.exists(atPath)) {
- AccessTransformSet atSet = AccessTransformFormats.FML.read(atPath);
- MappingSet mappingSet = new TinyMappingsReader(mappings, "srg", "named").read();
- AccessTransformSet remapped = atSet.remap(mappingSet);
+ List<String> lines = Files.readAllLines(atPath);
+ List<String> output = new ArrayList<>(lines.size());
- Files.delete(atPath);
- AccessTransformFormats.FML.write(atPath, remapped);
+ for (int i = 0; i < lines.size(); i++) {
+ String line = lines.get(i).trim();
+
+ if (line.startsWith("#")) {
+ output.set(i, line);
+ continue;
+ }
+
+ String[] parts = line.split(" ");
+ String name = parts[1].replace('.', '/');
+ parts[1] = CollectionUtil.find(
+ mappings.getClasses(),
+ def -> def.getName("srg").equals(name)
+ ).map(def -> def.getName("named")).orElse(name).replace('/', '.');
+
+ output.set(i, String.join(" ", parts));
+ }
+
+ if (!lines.equals(output)) {
+ Files.write(atPath, output);
+ }
}
}
}
diff --git a/src/main/java/net/fabricmc/loom/util/srg/CoreModClassRemapper.java b/src/main/java/net/fabricmc/loom/util/srg/CoreModClassRemapper.java
index edad8476..dd791aec 100644
--- a/src/main/java/net/fabricmc/loom/util/srg/CoreModClassRemapper.java
+++ b/src/main/java/net/fabricmc/loom/util/srg/CoreModClassRemapper.java
@@ -52,12 +52,16 @@ import net.fabricmc.mapping.tree.TinyTree;
* @author Juuz
*/
public final class CoreModClassRemapper {
- private static final Pattern CLASS_NAME_PATTERN = Pattern.compile("^(.+')((?:com\\.mojang\\.|net\\.minecraft\\.)[A-Za-z0-9.-_$]+)('.+)$");
+ private static final Pattern CLASS_NAME_PATTERN = Pattern.compile("^(.*')((?:com\\.mojang\\.|net\\.minecraft\\.)[A-Za-z0-9.-_$]+)('.*)$");
public static void remapJar(Path jar, TinyTree mappings, Logger logger) throws IOException {
try (FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + jar.toUri()), ImmutableMap.of("create", false))) {
Path coremodsJsonPath = fs.getPath("META-INF", "coremods.json");
- if (Files.notExists(coremodsJsonPath)) return;
+
+ if (Files.notExists(coremodsJsonPath)) {
+ logger.lifecycle(":no coremods in " + jar.getFileName());
+ return;
+ }
JsonObject coremodsJson;
@@ -70,7 +74,7 @@ public final class CoreModClassRemapper {
Path js = fs.getPath(file);
if (Files.exists(js)) {
- logger.info(":remapping coremod '" + file + "'");
+ logger.lifecycle(":remapping coremod '" + file + "'");
remap(js, mappings);
} else {
logger.warn("Coremod '" + file + "' listed in coremods.json but not found");