diff options
author | Juuxel <6596629+Juuxel@users.noreply.github.com> | 2020-11-30 19:15:32 +0200 |
---|---|---|
committer | Juuxel <6596629+Juuxel@users.noreply.github.com> | 2020-11-30 19:15:32 +0200 |
commit | ec199fef90ce0373119a1bec0c7f78d9331b2e80 (patch) | |
tree | ec255415518461dce7d4f3eb3bb9932d73fe804a /src/main/java/net/fabricmc/loom/util/srg | |
parent | 9b668547e0679d1190e7dc4d43b64f031a2f24ef (diff) | |
download | architectury-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.java | 35 | ||||
-rw-r--r-- | src/main/java/net/fabricmc/loom/util/srg/CoreModClassRemapper.java | 10 |
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"); |