Skip to content

Commit e54836e

Browse files
committed
Exclude duplicate names from flat mappings
1 parent 52fe265 commit e54836e

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ org.gradle.jvmargs=-Xmx3G
44
org.gradle.daemon=true
55

66
# Versions
7-
versionConnector=1.0.0-beta
7+
versionConnector=1.0.0-beta.2
88

99
versionMc=1.20.1
1010
versionForge=47.1.3
1111
versionForgeAutoRenamingTool=1.0.8
1212
versionFabricLoader=2.2.1+0.14.21+1.20.1
1313
versionAccessWidener=2.1.0
14-
versionFabricApi=0.86.1+1.7.1+1.20.1
14+
versionFabricApi=0.86.1+1.8.0+1.20.1
1515
versionMixin=0.12.6+mixin.0.8.5
1616
versionYarn=1.19.4+build.2
1717

src/main/java/dev/su5ed/sinytra/connector/transformer/JarTransformer.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
import java.util.jar.Attributes;
5656
import java.util.jar.JarFile;
5757
import java.util.jar.Manifest;
58-
import java.util.stream.Collectors;
5958
import java.util.stream.Stream;
6059
import java.util.zip.ZipEntry;
6160

@@ -90,13 +89,25 @@ private static Map<String, String> getFlatMapping(String sourceNamespace) {
9089
}
9190

9291
LOGGER.debug(TRANSFORM_MARKER, "Creating flat mapping for namespace {}", sourceNamespace);
92+
// Intermediary sometimes contains duplicate names for different methods (why?). We exclude those.
93+
Set<String> excludedNames = new HashSet<>();
9394
Collection<String> prefixes = MAPPING_PREFIXES.get(sourceNamespace);
9495
MappingResolverImpl resolver = FabricLoaderImpl.INSTANCE.getMappingResolver();
95-
Map<String, String> resolved = resolver.getCurrentMap(sourceNamespace).getClasses().stream()
96+
Map<String, String> resolved = new HashMap<>();
97+
resolver.getCurrentMap(sourceNamespace).getClasses().stream()
9698
.flatMap(cls -> Stream.concat(Stream.of(cls), Stream.concat(cls.getFields().stream(), cls.getMethods().stream()))
9799
.filter(node -> prefixes.stream().anyMatch(node.getOriginal()::startsWith))
98100
.map(node -> Pair.of(node.getOriginal(), node.getMapped())))
99-
.collect(Collectors.toMap(Pair::getFirst, Pair::getSecond, (a, b) -> a));
101+
.forEach(pair -> {
102+
String original = pair.getFirst();
103+
if (resolved.containsKey(original)) {
104+
excludedNames.add(original);
105+
resolved.remove(original);
106+
}
107+
if (!excludedNames.contains(original)) {
108+
resolved.put(original, pair.getSecond());
109+
}
110+
});
100111
FLAT_MAPPINGS_CACHE.put(sourceNamespace, resolved);
101112
return resolved;
102113
}

src/main/java/dev/su5ed/sinytra/connector/transformer/SrgRemappingReferenceMapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
public class SrgRemappingReferenceMapper {
1616
private static final Pattern METHOD_REF_PATTERN = Pattern.compile("^(?<owner>L[a-zA-Z0-9/_$]+;)?(?<name>[a-zA-Z0-9_]+|<[a-z0-9_]+>)?(?<desc>\\((?:\\[?[VZCBSIFJD]|\\[?L[a-zA-Z0-9/_$]+;)*\\)(?:[VZCBSIFJD]|\\[?L[a-zA-Z0-9/_;$]+))$");
17-
private static final Pattern FIELD_REF_PATTERN = Pattern.compile("^(?<owner>L[a-zA-Z0-9/_$]+;)?(?<name>[a-zA-Z0-9_]+):(?<desc>\\[?[VZCBSIFJD]|\\[?L[a-zA-Z0-9/_$]+;)$");
17+
private static final Pattern FIELD_REF_PATTERN = Pattern.compile("^(?<owner>L[a-zA-Z0-9/_$]+;)?(?<name>[a-zA-Z0-9_]+):(?<desc>.+)$");
1818

1919
private final IMappingFile mappingFile;
2020
private final Map<String, IMappingFile.IMethod> methods;

0 commit comments

Comments
 (0)