Skip to content

Commit 1a2ec4b

Browse files
committed
Port over remaining v1 api features to v2 api
1 parent 6e06dd3 commit 1a2ec4b

File tree

16 files changed

+308
-30
lines changed

16 files changed

+308
-30
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;
22

3+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.BaseModRemapperContext;
4+
35
import java.nio.file.Path;
46

57
public interface CacheHandler {
68
Path resolveTemp(String name);
79
Path resolveCache(String name);
810
Path resolveLibrary(String name);
11+
12+
static CacheHandler getCacheHandler(String contextId) {
13+
return BaseModRemapperContext.get(contextId).getCacheHandler();
14+
}
915
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;
2+
3+
public interface MappingBuilder {
4+
5+
ClassMapping addMapping(String sourceName, String targetName);
6+
ClassMapping addMapping(String name);
7+
8+
public interface ClassMapping {
9+
ClassMapping field(String sourceName, String targetName, String sourceDescriptor);
10+
ClassMapping field(String name, String descriptor);
11+
ClassMapping method(String sourceName, String targetName, String sourceDescriptor);
12+
ClassMapping method(String name, String descriptor);
13+
}
14+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;
2+
3+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
4+
import org.jetbrains.annotations.Nullable;
5+
6+
public interface MappingUtils {
7+
/**
8+
*
9+
* @param className original class name
10+
* @return remapped class name
11+
*/
12+
static String mapClass(String contextId, String className) {
13+
return MappingsUtilsImpl.mapClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className);
14+
}
15+
16+
/**
17+
*
18+
* @param className remapped class name
19+
* @return original class name
20+
*/
21+
static String unmapClass(String contextId, String className) {
22+
return MappingsUtilsImpl.unmapClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className);
23+
}
24+
25+
/**
26+
*
27+
* @param className original class name
28+
* @param fieldName
29+
* @param fieldDesc
30+
* @return
31+
*/
32+
static ClassMember mapField(String contextId, String className, String fieldName, @Nullable String fieldDesc) {
33+
return MappingsUtilsImpl.mapField(MappingsUtilsImpl.getMappingsRegistry(contextId), className, fieldName, fieldDesc);
34+
}
35+
36+
/**
37+
*
38+
* @param className remapped class name
39+
* @param fieldName
40+
* @param fieldDesc
41+
* @return
42+
*/
43+
static ClassMember mapFieldFromRemappedClass(String contextId, String className, String fieldName, @Nullable String fieldDesc) {
44+
return MappingsUtilsImpl.mapFieldFromRemappedClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className, fieldName, fieldDesc);
45+
}
46+
47+
/**
48+
*
49+
* @param className original class name
50+
* @param methodName
51+
* @param methodDesc
52+
* @return
53+
*/
54+
static ClassMember mapMethod(String contextId, String className, String methodName, String methodDesc) {
55+
return MappingsUtilsImpl.mapMethod(MappingsUtilsImpl.getMappingsRegistry(contextId), className, methodName, methodDesc);
56+
}
57+
58+
/**
59+
*
60+
* @param className remapped class name
61+
* @param methodName
62+
* @param methodDesc
63+
* @return
64+
*/
65+
static ClassMember mapMethodFromRemappedClass(String contextId, String className, String methodName, String methodDesc) {
66+
return MappingsUtilsImpl.mapMethodFromRemappedClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className, methodName, methodDesc);
67+
}
68+
69+
static ClassMember mapField(String contextId, Class<?> owner, String fieldName) {
70+
return MappingsUtilsImpl.mapField(MappingsUtilsImpl.getMappingsRegistry(contextId), owner, fieldName);
71+
}
72+
73+
static ClassMember mapMethod(String contextId, Class<?> owner, String methodName, Class<?>[] parameterTypes) {
74+
return MappingsUtilsImpl.mapMethod(MappingsUtilsImpl.getMappingsRegistry(contextId), owner, methodName, parameterTypes);
75+
}
76+
77+
/**
78+
*
79+
* @param desc original descriptor
80+
* @return remapped descriptor
81+
*/
82+
static String mapDescriptor(String contextId, String desc) {
83+
return MappingsUtilsImpl.mapDescriptor(MappingsUtilsImpl.getMappingsRegistry(contextId), desc);
84+
}
85+
86+
interface ClassMember {
87+
String getName();
88+
@Nullable String getDesc();
89+
}
90+
}

src/main/java/io/github/fabriccompatibilitylayers/modremappingapi/api/v2/MappingsConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public interface MappingsConfig {
1010
@Nullable String getSourceNamespace();
1111
@Nullable Supplier<String> getExtraMappings();
1212
Map<String, String> getRenamingMap();
13+
@Nullable String getDefaultPackage();
1314

1415
static MappingsConfig defaultConfig() {
1516
return new DefaultMappingsConfig();

src/main/java/io/github/fabriccompatibilitylayers/modremappingapi/api/v2/ModRemapper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@ public interface ModRemapper {
1717
void afterAllRemappings();
1818

1919
void addRemappingLibraries(List<RemapLibrary> libraries, EnvType environment);
20+
void registerAdditionalMappings(MappingBuilder mappingBuilder);
21+
void registerPreVisitors(VisitorInfos visitorInfos);
22+
void registerPostVisitors(VisitorInfos visitorInfos);
2023
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;
2+
3+
import org.jetbrains.annotations.Nullable;
4+
5+
public interface VisitorInfos {
6+
void registerSuperType(String target, String replacement);
7+
8+
void registerTypeAnnotation(String target, String replacement);
9+
10+
void registerMethodTypeIns(String target, String replacement);
11+
12+
void registerFieldRef(String targetClass, String targetField, String targetDesc, FullClassMember classMember);
13+
14+
void registerMethodInvocation(String targetClass, String targetMethod, String targetDesc, FullClassMember classMember);
15+
16+
void registerLdc(String targetClass, Object targetLdc, Object replacement);
17+
18+
void registerInstantiation(String target, String replacement);
19+
20+
21+
static FullClassMember classMember(String owner, String name, @Nullable String desc, @Nullable Boolean isStatic) {
22+
return new io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos.FullClassMember(owner, name, desc, isStatic);
23+
}
24+
25+
static FullClassMember classMember(String owner, String name, @Nullable Boolean isStatic) {
26+
return new io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos.FullClassMember(owner, name, isStatic);
27+
}
28+
29+
interface FullClassMember extends MappingUtils.ClassMember {
30+
String getOwner();
31+
@Nullable Boolean isStatic();
32+
}
33+
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/api/v1/MappingUtils.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,23 @@ static String mapDescriptor(String desc) {
8484
return MappingsUtilsImpl.mapDescriptor(MappingsUtilsImpl.getV1Registry(), desc);
8585
}
8686

87-
class ClassMember {
87+
class ClassMember implements io.github.fabriccompatibilitylayers.modremappingapi.api.v2.MappingUtils.ClassMember {
8888
public final @NotNull String name;
8989
public final @Nullable String desc;
9090

9191
public ClassMember(@NotNull String name, @Nullable String desc) {
92-
assert name != null;
93-
9492
this.name = name;
9593
this.desc = desc;
9694
}
95+
96+
@Override
97+
public @NotNull String getName() {
98+
return this.name;
99+
}
100+
101+
@Override
102+
public @Nullable String getDesc() {
103+
return this.desc;
104+
}
97105
}
98106
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/api/v1/VisitorInfos.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public interface VisitorInfos {
1818

1919
void registerInstantiation(String target, String replacement);
2020

21-
class FullClassMember extends MappingUtils.ClassMember {
21+
class FullClassMember extends MappingUtils.ClassMember implements io.github.fabriccompatibilitylayers.modremappingapi.api.v2.VisitorInfos.FullClassMember {
2222
public final String owner;
2323
public final @Nullable Boolean isStatic;
2424

@@ -31,5 +31,15 @@ public FullClassMember(String owner, String name, @Nullable String desc, @Nullab
3131
public FullClassMember(String owner, String name, @Nullable Boolean isStatic) {
3232
this(owner, name, null, isStatic);
3333
}
34+
35+
@Override
36+
public String getOwner() {
37+
return this.owner;
38+
}
39+
40+
@Override
41+
public @Nullable Boolean isStatic() {
42+
return this.isStatic;
43+
}
3444
}
3545
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/MappingsUtilsImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.fabriccompatibiltylayers.modremappingapi.impl;
22

33
import io.github.fabriccompatibiltylayers.modremappingapi.api.MappingUtils;
4+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.BaseModRemapperContext;
45
import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.v1.ModRemapperV1Context;
56
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingsRegistry;
67
import net.fabricmc.api.EnvType;
@@ -31,6 +32,10 @@ public static MappingsRegistry getV1Registry() {
3132
return ModRemapperV1Context.INSTANCE.getMappingsRegistry();
3233
}
3334

35+
public static MappingsRegistry getMappingsRegistry(String contextId) {
36+
return BaseModRemapperContext.get(contextId).getMappingsRegistry();
37+
}
38+
3439
public static String mapClass(MappingsRegistry registry, String className) {
3540
int srcNamespace = registry.getFullMappings().getNamespaceId(registry.getSourceNamespace());
3641
int targetNamespace = registry.getFullMappings().getNamespaceId(registry.getTargetNamespace());
@@ -151,11 +156,11 @@ public static MappingUtils.ClassMember mapMethod(MappingsRegistry registry, Clas
151156
String methodSubName = methodDef.getName(srcNamespace);
152157

153158
if (Objects.equals(methodSubName, methodName)) {
154-
String methodDescriptor = methodDef.getDesc(registry.getTargetNamespace());
159+
String methodDescriptor = methodDef.getDesc(targetNamespace);
155160

156161
if (methodDescriptor != null && methodDescriptor.startsWith(argDesc)) {
157162
return new MappingUtils.ClassMember(
158-
methodDef.getName(registry.getTargetNamespace()),
163+
methodDef.getName(targetNamespace),
159164
methodDescriptor
160165
);
161166
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/VisitorInfosImpl.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
package io.github.fabriccompatibiltylayers.modremappingapi.impl;
22

3-
import io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos;
3+
import io.github.fabriccompatibilitylayers.modremappingapi.api.v2.VisitorInfos;
44
import org.jetbrains.annotations.ApiStatus;
55

66
import java.util.HashMap;
77
import java.util.Map;
88

99
@ApiStatus.Internal
10-
public class VisitorInfosImpl extends fr.catcore.modremapperapi.remapping.VisitorInfos implements VisitorInfos {
10+
public class VisitorInfosImpl extends fr.catcore.modremapperapi.remapping.VisitorInfos implements VisitorInfos, io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos {
1111
public final Map<String, String> SUPERS = new HashMap<>();
1212
public final Map<String, String> ANNOTATION = new HashMap<>();
1313
public final Map<String, String> METHOD_TYPE = new HashMap<>();
1414

1515
public final Map<String, String> INSTANTIATION = new HashMap<>();
16-
public final Map<String, Map<String, Map<String, FullClassMember>>> METHOD_INVOCATION = new HashMap<>();
17-
public final Map<String, Map<String, Map<String, FullClassMember>>> FIELD_REF = new HashMap<>();
16+
public final Map<String, Map<String, Map<String, VisitorInfos.FullClassMember>>> METHOD_INVOCATION = new HashMap<>();
17+
public final Map<String, Map<String, Map<String, VisitorInfos.FullClassMember>>> FIELD_REF = new HashMap<>();
1818
public final Map<String, Map<Object, Object>> LDC = new HashMap<>();
1919

2020
@Override
@@ -33,14 +33,24 @@ public void registerMethodTypeIns(String target, String replacement) {
3333
}
3434

3535
@Override
36-
public void registerFieldRef(String targetClass, String targetField, String targetDesc, FullClassMember classMember) {
36+
public void registerFieldRef(String targetClass, String targetField, String targetDesc, io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos.FullClassMember classMember) {
37+
this.registerFieldRef(targetClass, targetField, targetDesc, (VisitorInfos.FullClassMember) classMember);
38+
}
39+
40+
@Override
41+
public void registerMethodInvocation(String targetClass, String targetMethod, String targetDesc, io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos.FullClassMember classMember) {
42+
this.registerMethodInvocation(targetClass, targetMethod, targetDesc, (VisitorInfos.FullClassMember) classMember);
43+
}
44+
45+
@Override
46+
public void registerFieldRef(String targetClass, String targetField, String targetDesc, VisitorInfos.FullClassMember classMember) {
3747
FIELD_REF.computeIfAbsent(targetClass, k -> new HashMap<>())
3848
.computeIfAbsent(targetField, k -> new HashMap<>())
3949
.put(targetDesc, classMember);
4050
}
4151

4252
@Override
43-
public void registerMethodInvocation(String targetClass, String targetMethod, String targetDesc, FullClassMember classMember) {
53+
public void registerMethodInvocation(String targetClass, String targetMethod, String targetDesc, VisitorInfos.FullClassMember classMember) {
4454
METHOD_INVOCATION.computeIfAbsent(targetClass, k -> new HashMap<>())
4555
.computeIfAbsent(targetMethod, k -> new HashMap<>())
4656
.put(targetDesc, classMember);
@@ -89,14 +99,14 @@ public void registerMethodLdcIns(MethodValue target, MethodValue replacement) {
8999
.put(target.value, replacement.value);
90100
}
91101

92-
private void registerMethodNamed(MethodNamed target, MethodNamed replacementObject, Map<String, Map<String, Map<String, FullClassMember>>> map) {
102+
private void registerMethodNamed(MethodNamed target, MethodNamed replacementObject, Map<String, Map<String, Map<String, VisitorInfos.FullClassMember>>> map) {
93103
String targetClass = target.owner;
94104
String targetMember = target.name;
95105

96106
String replacement = replacementObject.name;
97107
if (replacement == null) replacement = "";
98108

99-
FullClassMember classMember = new FullClassMember(replacementObject.owner, replacement, null, null);
109+
VisitorInfos.FullClassMember classMember = new io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos.FullClassMember(replacementObject.owner, replacement, null, null);
100110

101111
if (targetMember == null) targetMember = "";
102112

0 commit comments

Comments
 (0)