Skip to content

Commit 0d3e4ec

Browse files
committed
One library handler and mod discoverer per context
1 parent cf38057 commit 0d3e4ec

13 files changed

Lines changed: 240 additions & 144 deletions

File tree

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,12 @@ default Optional<String> getSourceNamespace() {
3030
default Optional<Supplier<InputStream>> getExtraMapping() {
3131
return Optional.empty();
3232
}
33+
34+
/**
35+
* Whether to enable mixin remapping. Enabled by default for compatibility purposes.
36+
* @return true - enabled <br> false - disabled
37+
*/
38+
default boolean remapMixins() {
39+
return true;
40+
}
3341
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.nio.file.Path;
44

55
public class DefaultModEntry extends ModEntry {
6-
protected DefaultModEntry(String modName, Path file, Path original) {
6+
public DefaultModEntry(String modName, Path file, Path original) {
77
super(modName, modName, file, original);
88
}
99

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,9 @@ public void registerPreVisitors(VisitorInfos infos) {
3333
public void registerPostVisitors(VisitorInfos infos) {
3434

3535
}
36+
37+
@Override
38+
public boolean remapMixins() {
39+
return false;
40+
}
3641
}

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,27 @@
1818
import java.util.Map;
1919

2020
public class LibraryHandler {
21-
private static final Map<RemapLibrary, Path> remapLibraries = new HashMap<>();
21+
private final Map<RemapLibrary, Path> remapLibraries = new HashMap<>();
2222

23-
public static void gatherRemapLibraries(List<ModRemapper> remappers, String sourceNamespace) {
23+
private String sourceNamespace;
24+
25+
public LibraryHandler() {}
26+
27+
public void init(String sourceNamespace) {
28+
this.sourceNamespace = sourceNamespace;
29+
30+
Path sourceLibraryPath = CacheUtils.getLibraryPath(this.sourceNamespace);
31+
32+
if (!Files.exists(sourceLibraryPath)) {
33+
try {
34+
Files.createDirectories(sourceLibraryPath);
35+
} catch (IOException e) {
36+
throw new RuntimeException(e);
37+
}
38+
}
39+
}
40+
41+
public void gatherRemapLibraries(List<ModRemapper> remappers) {
2442
try {
2543
for (ModRemapper remapper : remappers) {
2644
List<RemapLibrary> libraries = new ArrayList<>();
@@ -54,7 +72,7 @@ public static void gatherRemapLibraries(List<ModRemapper> remappers, String sour
5472
}
5573
}
5674

57-
public static void addLibrariesToRemapClasspath(TinyRemapper remapper) {
75+
public void addLibrariesToRemapClasspath(TinyRemapper remapper) {
5876
for (Path libPath : remapLibraries.values()) {
5977
if (Files.exists(libPath)) {
6078
remapper.readClassPathAsync(libPath);

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/context/MappingsRegistryInstance.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,4 +194,13 @@ public void writeFullMappings() {
194194
throw new RuntimeException(e);
195195
}
196196
}
197+
198+
@Override
199+
public List<MappingTree> getRemappingMappings() {
200+
return Arrays.asList(
201+
this.getFormattedMappings(),
202+
this.getModsMappings(),
203+
this.getAdditionalMappings()
204+
);
205+
}
197206
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package io.github.fabriccompatibiltylayers.modremappingapi.impl.context;
22

3+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.LibraryHandler;
34
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingsRegistry;
5+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.RemappingFlags;
46
import net.fabricmc.tinyremapper.TinyRemapper;
57

68
import java.nio.file.Path;
79
import java.util.List;
810
import java.util.Map;
11+
import java.util.Set;
912

1013
public interface ModRemapperContext {
1114
void init();
@@ -16,4 +19,6 @@ public interface ModRemapperContext {
1619
Map<String, List<String>> getMixin2TargetMap();
1720
MappingsRegistry getMappingsRegistry();
1821
void addToRemapperBuilder(TinyRemapper.Builder builder);
22+
Set<RemappingFlags> getRemappingFlags();
23+
LibraryHandler getLibraryHandler();
1924
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/context/v1/ModRemapperV1Context.java

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,30 @@
99
import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.MappingsRegistryInstance;
1010
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingsRegistry;
1111
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.ModTrRemapper;
12+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.RemappingFlags;
1213
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.SoftLockFixer;
1314
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.visitor.MRAApplyVisitor;
14-
import io.github.fabriccompatibiltylayers.modremappingapi.impl.utils.CacheUtils;
1515
import net.fabricmc.loader.api.FabricLoader;
1616
import net.fabricmc.tinyremapper.TinyRemapper;
1717

1818
import java.io.IOException;
1919
import java.io.InputStream;
20-
import java.nio.file.Files;
2120
import java.nio.file.Path;
2221
import java.util.*;
2322
import java.util.function.Supplier;
2423

2524
public class ModRemapperV1Context extends BaseModRemapperContext {
25+
private final Set<RemappingFlags> remapFlags = new HashSet<>();
2626
private final List<ModRemapper> remappers = new ArrayList<>();
2727
private final Map<String, List<String>> mixin2TargetMap = new HashMap<>();
2828
private final MappingsRegistryInstance mappingsRegistry = new MappingsRegistryInstance();
29+
private final LibraryHandler libraryHandler = new LibraryHandler();
30+
private final V1ModDiscoverer modDiscoverer = new V1ModDiscoverer();
2931

3032
public static ModRemapperV1Context INSTANCE;
3133

3234
public ModRemapperV1Context() {
33-
super("mod-remapping-api:v1");
35+
super("mod-remapping-api_v1");
3436
INSTANCE = this;
3537
}
3638

@@ -53,6 +55,10 @@ public void init() {
5355
throw new RuntimeException(e);
5456
}
5557
});
58+
59+
if (remapper.remapMixins()) {
60+
remapFlags.add(RemappingFlags.MIXIN);
61+
}
5662
}
5763

5864
try {
@@ -61,17 +67,9 @@ public void init() {
6167
throw new RuntimeException(e);
6268
}
6369

64-
Path sourceLibraryPath = CacheUtils.getLibraryPath(this.mappingsRegistry.getSourceNamespace());
65-
66-
if (!Files.exists(sourceLibraryPath)) {
67-
try {
68-
Files.createDirectories(sourceLibraryPath);
69-
} catch (IOException e) {
70-
throw new RuntimeException(e);
71-
}
72-
}
70+
libraryHandler.init(this.mappingsRegistry.getSourceNamespace());
7371

74-
LibraryHandler.gatherRemapLibraries(remappers, this.mappingsRegistry.getSourceNamespace());
72+
libraryHandler.gatherRemapLibraries(remappers);
7573

7674
this.registerAdditionalMappings();
7775
this.mappingsRegistry.generateAdditionalMappings();
@@ -95,7 +93,7 @@ public void afterRemap() {
9593

9694
@Override
9795
public void discoverMods(boolean remapClassEdits) {
98-
ModDiscoverer.init(remappers, remapClassEdits, this);
96+
this.modDiscoverer.init(remappers, remapClassEdits, this);
9997
}
10098

10199
private static final String v0EntrypointName = "mod-remapper-api:modremapper";
@@ -143,4 +141,14 @@ public void addToRemapperBuilder(TinyRemapper.Builder builder) {
143141
builder.extraPreApplyVisitor(new MRAApplyVisitor(preInfos));
144142
builder.extraPostApplyVisitor(new MRAApplyVisitor(postInfos));
145143
}
144+
145+
@Override
146+
public Set<RemappingFlags> getRemappingFlags() {
147+
return remapFlags;
148+
}
149+
150+
@Override
151+
public LibraryHandler getLibraryHandler() {
152+
return libraryHandler;
153+
}
146154
}

0 commit comments

Comments
 (0)