From 224d015c22082ed3b97d4b1d1391afe1962499ab Mon Sep 17 00:00:00 2001 From: Julian Burner <48808497+NebelNidas@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:27:59 +0100 Subject: [PATCH] Update to Mapping-IO 0.8.0 (#1419) --- gradle/libs.versions.toml | 2 +- .../mappings/tiny/MappingsMerger.java | 30 +++---------------- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4be88cdd..53b905c6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ gson = "2.10.1" stitch = "0.6.2" tiny-remapper = "0.12.0" clazz-tweaker = "0.1.1" -mapping-io = "0.7.1" +mapping-io = "0.8.0" lorenz-tiny = "4.0.2" mercury = "0.4.3" mercury-mixin = "0.2.1" diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/tiny/MappingsMerger.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/tiny/MappingsMerger.java index 0a3d3a96..48e2ed12 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/tiny/MappingsMerger.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/tiny/MappingsMerger.java @@ -29,9 +29,8 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Arrays; +import java.util.List; import java.util.Map; -import java.util.regex.Pattern; import org.jetbrains.annotations.VisibleForTesting; import org.slf4j.Logger; @@ -110,32 +109,11 @@ public final class MappingsMerger { * Currently, Yarn does not export mappings for these inner classes. */ private static void inheritMappedNamesOfEnclosingClasses(MemoryMappingTree tree) { - int intermediaryIdx = tree.getNamespaceId("intermediary"); - int namedIdx = tree.getNamespaceId("named"); + assert tree.getNamespaceId("intermediary") > MappingTree.SRC_NAMESPACE_ID; - // The tree does not have an index by intermediary names by default + // Create an index by intermediary names for faster lookups during the propagation tree.setIndexByDstNames(true); - for (MappingTree.ClassMapping classEntry : tree.getClasses()) { - String intermediaryName = classEntry.getDstName(intermediaryIdx); - String namedName = classEntry.getDstName(namedIdx); - - if (intermediaryName.equals(namedName) && intermediaryName.contains("$")) { - String[] path = intermediaryName.split(Pattern.quote("$")); - int parts = path.length; - - for (int i = parts - 2; i >= 0; i--) { - String currentPath = String.join("$", Arrays.copyOfRange(path, 0, i + 1)); - String namedParentClass = tree.mapClassName(currentPath, intermediaryIdx, namedIdx); - - if (!namedParentClass.equals(currentPath)) { - classEntry.setDstName(namedParentClass - + "$" + String.join("$", Arrays.copyOfRange(path, i + 1, path.length)), - namedIdx); - break; - } - } - } - } + tree.propagateOuterClassNames("intermediary", List.of("named"), false); } }