Skip to content

Commit 96dcb66

Browse files
committed
Some mappings related refactoring
1 parent cd8a877 commit 96dcb66

File tree

7 files changed

+110
-78
lines changed

7 files changed

+110
-78
lines changed

src/main/java/fr/catcore/modremapperapi/remapping/RemapUtil.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingBuilderImpl;
88
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
99
import io.github.fabriccompatibiltylayers.modremappingapi.impl.VisitorInfosImpl;
10+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingTreeHelper;
1011
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.minecraft.MinecraftRemapper;
1112
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.resource.RefmapRemapper;
1213
import io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper.visitor.MRAApplyVisitor;
@@ -91,8 +92,7 @@ public static void init(List<io.github.fabriccompatibiltylayers.modremappingapi.
9192
}
9293

9394
try {
94-
MODS_TREE = new MemoryMappingTree();
95-
MappingsUtilsImpl.initializeMappingTree(MODS_TREE);
95+
MODS_TREE = MappingTreeHelper.createMappingTree();
9696
} catch (IOException e) {
9797
throw new RuntimeException(e);
9898
}
@@ -176,8 +176,7 @@ public static void generateModMappings() {
176176
try {
177177
MODS_TREE.visitEnd();
178178

179-
MappingWriter writer = MappingWriter.create(Constants.REMAPPED_MAPPINGS_FILE.toPath(), MappingFormat.TINY_2_FILE);
180-
MODS_TREE.accept(writer);
179+
MappingTreeHelper.exportMappings(MODS_TREE, Constants.REMAPPED_MAPPINGS_FILE.toPath());
181180
} catch (IOException e) {
182181
throw new RuntimeException("Error while generating mods mappings", e);
183182
}
@@ -188,8 +187,7 @@ public static void generateModMappings() {
188187
@ApiStatus.Internal
189188
public static void writeMcMappings() {
190189
try {
191-
MappingWriter writer = MappingWriter.create(Constants.MC_MAPPINGS_FILE.toPath(), MappingFormat.TINY_2_FILE);
192-
MINECRAFT_TREE.accept(writer);
190+
MappingTreeHelper.exportMappings(MINECRAFT_TREE, Constants.MC_MAPPINGS_FILE.toPath());
193191
} catch (IOException e) {
194192
throw new RuntimeException(e);
195193
}
@@ -222,10 +220,10 @@ public void accept(MappingVisitor visitor) throws IOException {
222220
}
223221

224222
private static MappingTree generateMappings() {
225-
MemoryMappingTree mappingTree = new MemoryMappingTree();
223+
MemoryMappingTree mappingTree;
226224

227225
try {
228-
MappingsUtilsImpl.initializeMappingTree(mappingTree);
226+
mappingTree = MappingTreeHelper.createMappingTree();
229227

230228
io.github.fabriccompatibiltylayers.modremappingapi.api.v1.MappingBuilder builder = new MappingBuilderImpl(mappingTree);
231229

@@ -493,7 +491,7 @@ private static TinyRemapper makeRemapper(MappingTree... trees) {
493491
}
494492

495493
for (MappingTree tree : trees) {
496-
builder.withMappings(MappingsUtilsImpl.createProvider(tree, MappingsUtilsImpl.getSourceNamespace(), MappingsUtilsImpl.getTargetNamespace()));
494+
builder.withMappings(MappingTreeHelper.createMappingProvider(tree, MappingsUtilsImpl.getSourceNamespace(), MappingsUtilsImpl.getTargetNamespace()));
497495
}
498496

499497
MRAApplyVisitor preApplyVisitor = new MRAApplyVisitor();

src/main/java/fr/catcore/modremapperapi/utils/MappingsUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.catcore.modremapperapi.utils;
22

33
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
4+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingTreeHelper;
45
import net.fabricmc.mappingio.tree.MappingTree;
56
import net.fabricmc.tinyremapper.*;
67

@@ -23,6 +24,6 @@ public static MappingTree getMinecraftMappings() {
2324

2425
@Deprecated
2526
public static IMappingProvider createProvider(MappingTree mappings) {
26-
return MappingsUtilsImpl.createProvider(mappings, getNativeNamespace(), getTargetNamespace());
27+
return MappingTreeHelper.createMappingProvider(mappings, getNativeNamespace(), getTargetNamespace());
2728
}
2829
}

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

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

3-
import fr.catcore.modremapperapi.ModRemappingAPI;
43
import fr.catcore.modremapperapi.utils.Constants;
54
import fr.catcore.wfvaio.WhichFabricVariantAmIOn;
65
import io.github.fabriccompatibiltylayers.modremappingapi.api.MappingUtils;
@@ -32,10 +31,8 @@
3231
import org.jetbrains.annotations.Nullable;
3332
import org.objectweb.asm.Type;
3433

35-
import java.io.BufferedReader;
3634
import java.io.IOException;
3735
import java.io.InputStream;
38-
import java.io.InputStreamReader;
3936
import java.net.URL;
4037
import java.net.URLConnection;
4138
import java.util.*;
@@ -80,7 +77,7 @@ public static void setSourceNamespace(String sourceNamespace) {
8077
@ApiStatus.Internal
8178
public static void loadExtraMappings(InputStream stream) {
8279
try {
83-
EXTRA_MAPPINGS = loadMappings(stream);
80+
EXTRA_MAPPINGS = MappingTreeHelper.readMappings(stream);
8481
} catch (IOException e) {
8582
throw new RuntimeException(e);
8683
}
@@ -95,42 +92,13 @@ public static String getTargetNamespace() {
9592
}
9693

9794
public static String getNativeNamespace() {
98-
if (ModRemappingAPI.BABRIC) {
95+
if (ModRemappingAPIImpl.BABRIC) {
9996
return FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT ? "client" : "server";
10097
}
10198

10299
return "official";
103100
}
104101

105-
@ApiStatus.Internal
106-
public static MemoryMappingTree loadMappings(InputStream stream) throws IOException {
107-
try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) {
108-
long time = System.currentTimeMillis();
109-
MemoryMappingTree mappingTree = new MemoryMappingTree();
110-
111-
// We will only ever need to read tiny here
112-
// so to strip the other formats from the included copy of mapping IO, don't use MappingReader.read()
113-
reader.mark(4096);
114-
final MappingFormat format = MappingReader.detectFormat(reader);
115-
reader.reset();
116-
117-
switch (format) {
118-
case TINY_FILE:
119-
Tiny1FileReader.read(reader, mappingTree);
120-
break;
121-
case TINY_2_FILE:
122-
Tiny2FileReader.read(reader, mappingTree);
123-
break;
124-
default:
125-
throw new UnsupportedOperationException("Unsupported mapping format: " + format);
126-
}
127-
128-
Log.debug(LogCategory.MAPPINGS, "Loading mappings took %d ms", System.currentTimeMillis() - time);
129-
130-
return mappingTree;
131-
}
132-
}
133-
134102
private static void loadMappings() {
135103
if (initialized) return;
136104

@@ -140,7 +108,7 @@ private static void loadMappings() {
140108
try {
141109
URLConnection connection = url.openConnection();
142110

143-
VANILLA_MAPPINGS = loadMappings(connection.getInputStream());
111+
VANILLA_MAPPINGS = MappingTreeHelper.readMappings(connection.getInputStream());
144112
} catch (IOException | ZipError e) {
145113
throw new RuntimeException("Error reading "+url, e);
146114
}
@@ -230,26 +198,6 @@ private static void adaptVanillaMappings() {
230198
return visitor;
231199
}
232200

233-
@ApiStatus.Internal
234-
public static IMappingProvider createProvider(MappingTree mappings, String from, String to) {
235-
return TinyUtils.createMappingProvider(mappings, from, to);
236-
}
237-
238-
@ApiStatus.Internal
239-
public static void initializeMappingTree(MappingVisitor mappingVisitor) throws IOException {
240-
initializeMappingTree(mappingVisitor, getSourceNamespace(), getTargetNamespace());
241-
}
242-
243-
@ApiStatus.Internal
244-
public static void initializeMappingTree(MappingVisitor mappingVisitor, String src, String target) throws IOException {
245-
mappingVisitor.visitHeader();
246-
247-
List<String> namespaces = new ArrayList<>();
248-
namespaces.add(target);
249-
250-
mappingVisitor.visitNamespaces(src, namespaces);
251-
}
252-
253201
@ApiStatus.Internal
254202
public static void addMappingsToContext(MappingTree mappingTreeView) {
255203
try {
@@ -385,8 +333,7 @@ public static void completeMappingsFromTr(TrEnvironment trEnvironment, String sr
385333

386334
public static void writeFullMappings() {
387335
try {
388-
MappingWriter writer = MappingWriter.create(Constants.FULL_MAPPINGS_FILE.toPath(), MappingFormat.TINY_2_FILE);
389-
FULL_MAPPINGS.accept(writer);
336+
MappingTreeHelper.exportMappings(FULL_MAPPINGS, Constants.FULL_MAPPINGS_FILE.toPath());
390337
} catch (IOException e) {
391338
throw new RuntimeException(e);
392339
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/compatibility/V0ModRemapper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import io.github.fabriccompatibiltylayers.modremappingapi.api.v1.ModRemapper;
88
import io.github.fabriccompatibiltylayers.modremappingapi.api.v1.RemapLibrary;
99
import io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos;
10-
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
10+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingTreeHelper;
1111
import net.fabricmc.api.EnvType;
1212
import net.fabricmc.mappingio.MappingVisitor;
1313
import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch;
@@ -107,13 +107,13 @@ public void afterRemap() {
107107
* @return
108108
*/
109109
private MemoryMappingTree convertMappingList(RemapUtil.MappingList mappingList) {
110-
MemoryMappingTree mappingTree = new MemoryMappingTree();
110+
MemoryMappingTree mappingTree;
111111

112112
try {
113113
if (BABRIC) {
114-
MappingsUtilsImpl.initializeMappingTree(mappingTree, "intermediary", "official");
114+
mappingTree = MappingTreeHelper.createMappingTree("intermediary", "official");
115115
} else {
116-
MappingsUtilsImpl.initializeMappingTree(mappingTree);
116+
mappingTree = MappingTreeHelper.createMappingTree();
117117
}
118118

119119
mappingList.accept(mappingTree);

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/mappings/MappingTreeHelper.java

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

3+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
4+
import net.fabricmc.loader.impl.util.log.Log;
5+
import net.fabricmc.loader.impl.util.log.LogCategory;
6+
import net.fabricmc.mappingio.MappingReader;
37
import net.fabricmc.mappingio.MappingVisitor;
8+
import net.fabricmc.mappingio.MappingWriter;
49
import net.fabricmc.mappingio.adapter.MappingDstNsReorder;
510
import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch;
6-
import net.fabricmc.mappingio.tree.MappingTree;
7-
import net.fabricmc.mappingio.tree.MemoryMappingTree;
8-
import net.fabricmc.mappingio.tree.VisitOrder;
9-
import net.fabricmc.mappingio.tree.VisitableMappingTree;
10-
11+
import net.fabricmc.mappingio.format.MappingFormat;
12+
import net.fabricmc.mappingio.format.tiny.Tiny1FileReader;
13+
import net.fabricmc.mappingio.format.tiny.Tiny2FileReader;
14+
import net.fabricmc.mappingio.tree.*;
15+
import net.fabricmc.tinyremapper.IMappingProvider;
16+
import net.fabricmc.tinyremapper.TinyUtils;
17+
import org.jetbrains.annotations.ApiStatus;
18+
19+
import java.io.BufferedReader;
1120
import java.io.IOException;
21+
import java.io.InputStream;
22+
import java.io.InputStreamReader;
23+
import java.nio.file.Path;
1224
import java.util.ArrayList;
1325
import java.util.List;
1426
import java.util.Objects;
1527

28+
@ApiStatus.Internal
1629
public class MappingTreeHelper {
30+
31+
@ApiStatus.Internal
1732
public static void mergeIntoNew(VisitableMappingTree result, MappingTree left, MappingTree right) throws IOException {
18-
assert Objects.equals(left.getSrcNamespace(), right.getSrcNamespace());
33+
if (!Objects.equals(left.getSrcNamespace(), right.getSrcNamespace())) {
34+
throw new RuntimeException("Source namespace mismatch!");
35+
}
1936

2037
result.visitHeader();
2138

@@ -39,6 +56,7 @@ public static void mergeIntoNew(VisitableMappingTree result, MappingTree left, M
3956
reorderedRight.accept(result, VisitOrder.createByName());
4057
}
4158

59+
@ApiStatus.Internal
4260
public static void merge(VisitableMappingTree main, MappingTree additional) throws IOException {
4361
if (!Objects.equals(additional.getSrcNamespace(), main.getSrcNamespace())) {
4462
MemoryMappingTree reorder = new MemoryMappingTree();
@@ -63,4 +81,64 @@ public static void merge(VisitableMappingTree main, MappingTree additional) thro
6381

6482
reordered.accept(main, VisitOrder.createByInputOrder());
6583
}
84+
85+
@ApiStatus.Internal
86+
public static MemoryMappingTree readMappings(InputStream stream) throws IOException {
87+
try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) {
88+
long time = System.currentTimeMillis();
89+
MemoryMappingTree mappingTree = new MemoryMappingTree();
90+
91+
// We will only ever need to read tiny here
92+
// so to strip the other formats from the included copy of mapping IO, don't use MappingReader.read()
93+
reader.mark(4096);
94+
final MappingFormat format = MappingReader.detectFormat(reader);
95+
reader.reset();
96+
97+
switch (format) {
98+
case TINY_FILE:
99+
Tiny1FileReader.read(reader, mappingTree);
100+
break;
101+
case TINY_2_FILE:
102+
Tiny2FileReader.read(reader, mappingTree);
103+
break;
104+
default:
105+
throw new UnsupportedOperationException("Unsupported mapping format: " + format);
106+
}
107+
108+
Log.debug(LogCategory.MAPPINGS, "Loading mappings took %d ms", System.currentTimeMillis() - time);
109+
110+
return mappingTree;
111+
}
112+
}
113+
114+
@ApiStatus.Internal
115+
public static IMappingProvider createMappingProvider(MappingTree mappings, String from, String to) {
116+
return TinyUtils.createMappingProvider(mappings, from, to);
117+
}
118+
119+
@ApiStatus.Internal
120+
public static MemoryMappingTree createMappingTree() throws IOException {
121+
return createMappingTree(MappingsUtilsImpl.getSourceNamespace(), MappingsUtilsImpl.getTargetNamespace());
122+
}
123+
124+
@ApiStatus.Internal
125+
public static MemoryMappingTree createMappingTree(String src, String target) throws IOException {
126+
MemoryMappingTree mappingTree = new MemoryMappingTree();
127+
128+
mappingTree.visitHeader();
129+
130+
List<String> namespaces = new ArrayList<>();
131+
namespaces.add(target);
132+
133+
mappingTree.visitNamespaces(src, namespaces);
134+
135+
return mappingTree;
136+
}
137+
138+
@ApiStatus.Internal
139+
public static void exportMappings(MappingTreeView mappingTreeView, Path outputPath) throws IOException {
140+
try (MappingWriter writer = MappingWriter.create(outputPath, MappingFormat.TINY_2_FILE)) {
141+
mappingTreeView.accept(writer);
142+
}
143+
}
66144
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings;
2+
3+
import org.jetbrains.annotations.ApiStatus;
4+
5+
@ApiStatus.Internal
6+
public class MappingsRegistry {
7+
}

src/main/java/io/github/fabriccompatibiltylayers/modremappingapi/impl/remapper/minecraft/MinecraftRemapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import fr.catcore.modremapperapi.utils.Constants;
55
import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
66
import io.github.fabriccompatibiltylayers.modremappingapi.impl.RemapUtils;
7+
import io.github.fabriccompatibiltylayers.modremappingapi.impl.mappings.MappingTreeHelper;
78
import io.github.fabriccompatibiltylayers.modremappingapi.impl.utils.CacheUtils;
89
import io.github.fabriccompatibiltylayers.modremappingapi.impl.utils.FileUtils;
910
import net.fabricmc.loader.api.FabricLoader;
@@ -40,7 +41,7 @@ private static Collection<Path> getMinecraftJar(Collection<Path> sourcePaths, St
4041
.ignoreConflicts(true)
4142
.fixPackageAccess(true)
4243
.withMappings(
43-
MappingsUtilsImpl.createProvider(MappingsUtilsImpl.getMinecraftMappings(), src, target)
44+
MappingTreeHelper.createMappingProvider(MappingsUtilsImpl.getMinecraftMappings(), src, target)
4445
);
4546

4647
TinyRemapper remapper = builder.build();

0 commit comments

Comments
 (0)