Skip to content

Commit ffebb6e

Browse files
committed
Start work on remapping context
1 parent abde202 commit ffebb6e

File tree

7 files changed

+72
-45
lines changed

7 files changed

+72
-45
lines changed

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import fr.catcore.modremapperapi.utils.Constants;
44
import io.github.fabriccompatibiltylayers.modremappingapi.api.v1.ModRemapper;
55
import io.github.fabriccompatibiltylayers.modremappingapi.impl.compatibility.V0ModRemapper;
6+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.ModRemapperV1Context;
67
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingsRegistry;
78
import io.github.fabriccompatibiltylayers.modremappingapi.impl.utils.CacheUtils;
89
import io.github.fabriccompatibiltylayers.modremappingapi.impl.utils.FileUtils;
@@ -21,11 +22,7 @@
2122
public class ModDiscoverer {
2223
private static final Map<String, List<String>> EXCLUDED = new HashMap<>();
2324

24-
protected static void init(List<ModRemapper> modRemappers, boolean remapClassEdits) {
25-
ModRemapperContext context = new ModRemapperContext(modRemappers);
26-
27-
context.init();
28-
25+
public static void init(List<ModRemapper> modRemappers, boolean remapClassEdits, ModRemapperV1Context context) {
2926
List<ModEntry> mods = new ArrayList<>();
3027

3128
for (ModRemapper remapper : modRemappers) {

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

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,14 @@
22

33
import fr.catcore.wfvaio.FabricVariants;
44
import fr.catcore.wfvaio.WhichFabricVariantAmIOn;
5-
import io.github.fabriccompatibiltylayers.modremappingapi.api.v1.ModRemapper;
6-
import io.github.fabriccompatibiltylayers.modremappingapi.impl.compatibility.V0ModRemapper;
5+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.ModRemapperContext;
6+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.ModRemapperV1Context;
77
import net.fabricmc.loader.api.FabricLoader;
88

99
import java.io.File;
10-
import java.util.ArrayList;
11-
import java.util.List;
1210

1311
public class ModRemappingAPIImpl {
14-
15-
private static final String v0EntrypointName = "mod-remapper-api:modremapper";
16-
private static final String v1EntrypointName = "mod-remapper-api:modremapper_v1";
17-
private static final List<ModRemapper> modRemappers = new ArrayList<>();
12+
private static ModRemapperContext CURRENT_CONTEXT = null;
1813
public static final boolean BABRIC = WhichFabricVariantAmIOn.getVariant() == FabricVariants.BABRIC || WhichFabricVariantAmIOn.getVariant() == FabricVariants.BABRIC_NEW_FORMAT;
1914

2015
public static boolean remapClassEdits = false;
@@ -29,20 +24,20 @@ public static void init() {
2924
FabricLoader.getInstance().getConfigDir().toFile().mkdirs();
3025
remapClassEdits = new File(FabricLoader.getInstance().getConfigDir().toFile(), ".remapclassedits").exists();
3126

32-
FabricLoader.getInstance()
33-
.getEntrypoints(v0EntrypointName, fr.catcore.modremapperapi.api.ModRemapper.class)
34-
.stream()
35-
.map(V0ModRemapper::new)
36-
.forEach(modRemappers::add);
37-
38-
modRemappers.addAll(FabricLoader.getInstance().getEntrypoints(v1EntrypointName, ModRemapper.class));
27+
CURRENT_CONTEXT = new ModRemapperV1Context();
28+
CURRENT_CONTEXT.gatherRemappers();
3929

40-
ModDiscoverer.init(modRemappers, remapClassEdits);
30+
CURRENT_CONTEXT.init();
31+
CURRENT_CONTEXT.discoverMods(remapClassEdits);
4132

42-
modRemappers.forEach(ModRemapper::afterRemap);
33+
CURRENT_CONTEXT.afterRemap();
4334

4435
initializing = false;
4536
init = true;
4637
}
4738
}
39+
40+
public static ModRemapperContext getCurrentContext() {
41+
return CURRENT_CONTEXT;
42+
}
4843
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.github.fabriccompatibiltylayers.modremappingapi.impl.context;
2+
3+
import java.nio.file.Path;
4+
import java.util.List;
5+
import java.util.Map;
6+
7+
public interface ModRemapperContext {
8+
void init();
9+
void remapMods(Map<Path, Path> pathMap);
10+
void afterRemap();
11+
void discoverMods(boolean remapClassEdits);
12+
void gatherRemappers();
13+
Map<String, List<String>> getMixin2TargetMap();
14+
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/ModRemapperContext.java renamed to src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/context/ModRemapperV1Context.java

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
1-
package io.github.fabriccompatibiltylayers.modremappingapi.impl;
1+
package io.github.fabriccompatibiltylayers.modremappingapi.impl.context;
22

33
import fr.catcore.modremapperapi.utils.Constants;
44
import io.github.fabriccompatibiltylayers.modremappingapi.api.v1.ModRemapper;
5+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.LibraryHandler;
6+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
7+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.ModDiscoverer;
8+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.compatibility.V0ModRemapper;
59
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingsRegistry;
610
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.ModTrRemapper;
711
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.SoftLockFixer;
812
import io.github.fabriccompatibiltylayers.modremappingapi.impl.utils.CacheUtils;
13+
import net.fabricmc.loader.api.FabricLoader;
914
import net.fabricmc.tinyremapper.TinyRemapper;
1015

1116
import java.io.IOException;
1217
import java.io.InputStream;
1318
import java.nio.file.Files;
1419
import java.nio.file.Path;
15-
import java.util.List;
16-
import java.util.Map;
17-
import java.util.Optional;
20+
import java.util.*;
1821
import java.util.function.Supplier;
1922

20-
public class ModRemapperContext {
21-
private final List<ModRemapper> remappers;
23+
public class ModRemapperV1Context implements ModRemapperContext {
24+
private final List<ModRemapper> remappers = new ArrayList<>();
25+
private final Map<String, List<String>> mixin2TargetMap = new HashMap<>();
2226

23-
public ModRemapperContext(List<ModRemapper> remappers) {
24-
this.remappers = remappers;
25-
}
27+
public ModRemapperV1Context() {}
2628

2729
public void init() {
2830
for (ModRemapper remapper : remappers) {
@@ -78,4 +80,33 @@ public void remapMods(Map<Path, Path> pathMap) {
7880

7981
MappingsUtilsImpl.writeFullMappings();
8082
}
83+
84+
@Override
85+
public void afterRemap() {
86+
remappers.forEach(ModRemapper::afterRemap);
87+
}
88+
89+
@Override
90+
public void discoverMods(boolean remapClassEdits) {
91+
ModDiscoverer.init(remappers, remapClassEdits, this);
92+
}
93+
94+
private static final String v0EntrypointName = "mod-remapper-api:modremapper";
95+
private static final String v1EntrypointName = "mod-remapper-api:modremapper_v1";
96+
97+
@Override
98+
public void gatherRemappers() {
99+
FabricLoader.getInstance()
100+
.getEntrypoints(v0EntrypointName, fr.catcore.modremapperapi.api.ModRemapper.class)
101+
.stream()
102+
.map(V0ModRemapper::new)
103+
.forEach(remappers::add);
104+
105+
remappers.addAll(FabricLoader.getInstance().getEntrypoints(v1EntrypointName, ModRemapper.class));
106+
}
107+
108+
@Override
109+
public Map<String, List<String>> getMixin2TargetMap() {
110+
return mixin2TargetMap;
111+
}
81112
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/remapper/MixinRemappingHelper.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/remapper/resource/RefmapRemapper.java

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

33
import com.google.gson.Gson;
4+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.ModRemappingAPIImpl;
45
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.MixinRemappingHelper;
56
import net.fabricmc.tinyremapper.OutputConsumerPath;
67
import net.fabricmc.tinyremapper.TinyRemapper;
@@ -40,7 +41,7 @@ public void transform(Path destinationDirectory, Path relativePath, InputStream
4041

4142
public String mapRefMapEntry(String mixinClass, String old, TinyRemapper remapper) {
4243
TrRemapper trRemapper = remapper.getEnvironment().getRemapper();
43-
List<String> supers = MixinRemappingHelper.MIXIN2TARGETMAP.get(mixinClass);
44+
List<String> supers = ModRemappingAPIImpl.getCurrentContext().getMixin2TargetMap().get(mixinClass);
4445
// format is:
4546
// owner + name + quantifier + (desc == null || desc.startsWith("(") ? "" : ":") + desc + (tail != null ? " -> " : "") + tail
4647
String owner; // can be ""

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/remapper/visitor/MixinPostApplyVisitor.java

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

33
import fr.catcore.modremapperapi.utils.Constants;
4+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.ModRemappingAPIImpl;
45
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.MixinRemappingHelper;
56
import net.fabricmc.tinyremapper.TinyRemapper;
67
import net.fabricmc.tinyremapper.api.TrClass;
@@ -54,7 +55,7 @@ public ClassVisitor insertApplyVisitor(TrClass cls, ClassVisitor next) {
5455
});
5556
}
5657

57-
MixinRemappingHelper.MIXIN2TARGETMAP.put(cls.getName().replace(".", "/"), supers);
58+
ModRemappingAPIImpl.getCurrentContext().getMixin2TargetMap().put(cls.getName().replace(".", "/"), supers);
5859

5960
return next;
6061
}

0 commit comments

Comments
 (0)