Skip to content

Commit 614239c

Browse files
committed
More progress on v2 api
1 parent c3c0b3a commit 614239c

18 files changed

+284
-43
lines changed

build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,3 +163,11 @@ Now allow ModRemappers to disable mixin remapping which is enabled by default fo
163163
embedded.version "spasm", project.spasm_version
164164
}
165165
}
166+
167+
task testmodJar(type: Jar) {
168+
from sourceSets.test.output
169+
destinationDirectory = project.layout.buildDirectory.dir("libs")
170+
archiveClassifier.set("testmod")
171+
}
172+
173+
build.dependsOn testmodJar
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;
2+
3+
import io.github.fabriccompatibilitylayers.modremappingapi.impl.DefaultMappingsConfig;
4+
import org.jetbrains.annotations.Nullable;
5+
6+
import java.io.InputStream;
7+
import java.util.Map;
8+
import java.util.function.Supplier;
9+
10+
public interface MappingsConfig {
11+
@Nullable String getSourceNamespace();
12+
@Nullable Supplier<InputStream> getExtraMappings();
13+
Map<String, String> getRenamingMap();
14+
15+
static MappingsConfig defaultConfig() {
16+
return new DefaultMappingsConfig();
17+
}
18+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,12 @@ public interface ModCandidate {
1010
String getType();
1111
@Nullable String getAccessWidenerPath();
1212
@Nullable ModCandidate getParent();
13+
@Nullable String getVersion();
14+
@Nullable String getParentSubPath();
15+
String getDestinationName();
16+
ModDiscovererConfig getDiscovererConfig();
17+
void setAccessWidener(byte[] data);
18+
byte @Nullable [] getAccessWidener();
19+
void setDestination(Path destination);
20+
@Nullable Path getDestination();
1321
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ static Builder builder(String folderName) {
1818
boolean searchRecursively();
1919
Predicate<String> getDirectoryFilter();
2020
BiFunction<Path, List<String>, List<ModCandidate>> getCandidateCollector();
21+
boolean getExportToOriginalFolder();
2122

2223
interface Builder {
2324
Builder fileNameMatcher(String pattern);
2425
Builder searchRecursively(boolean searchRecursively);
2526
Builder directoryFilter(Predicate<String> filter);
2627
Builder candidateCollector(BiFunction<Path, List<String>, List<ModCandidate>> collector);
28+
Builder exportToOriginalFolder(boolean exportToOriginalFolder);
2729

2830
ModDiscovererConfig build();
2931
}

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
@@ -7,4 +7,7 @@ public interface ModRemapper {
77

88
List<ModDiscovererConfig> getModDiscoverers();
99
List<ModRemapper> collectSubRemappers(List<ModCandidate> discoveredMods);
10+
MappingsConfig getMappingsConfig();
11+
List<RemappingFlags> getRemappingFlags();
12+
void afterRemapping();
1013
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper;
1+
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;
22

33
import org.jetbrains.annotations.ApiStatus;
44

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.github.fabriccompatibilitylayers.modremappingapi.impl;
2+
3+
import io.github.fabriccompatibilitylayers.modremappingapi.api.v2.MappingsConfig;
4+
5+
import java.io.InputStream;
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
import java.util.function.Supplier;
9+
10+
public class DefaultMappingsConfig implements MappingsConfig {
11+
@Override
12+
public String getSourceNamespace() {
13+
return "official";
14+
}
15+
16+
@Override
17+
public Supplier<InputStream> getExtraMappings() {
18+
return null;
19+
}
20+
21+
@Override
22+
public Map<String, String> getRenamingMap() {
23+
return new HashMap<>();
24+
}
25+
}

src/main/java/io/github/fabriccompatibilitylayers/modremappingapi/impl/DefaultModCandidate.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package io.github.fabriccompatibilitylayers.modremappingapi.impl;
22

33
import io.github.fabriccompatibilitylayers.modremappingapi.api.v2.ModCandidate;
4+
import io.github.fabriccompatibilitylayers.modremappingapi.api.v2.ModDiscovererConfig;
45
import org.jetbrains.annotations.Nullable;
56

67
import java.nio.file.Path;
78

89
public class DefaultModCandidate implements ModCandidate {
910
private final String id;
1011
private final Path path;
12+
private final ModDiscovererConfig discovererConfig;
13+
private Path destination;
1114

12-
public DefaultModCandidate(Path path) {
15+
public DefaultModCandidate(Path path, ModDiscovererConfig discovererConfig) {
1316
this.id = path.getFileName().toString().replace(".jar", "").replace(".zip", "").replace(" ", "_");
1417
this.path = path;
18+
this.discovererConfig = discovererConfig;
1519
}
1620

1721
@Override
@@ -38,4 +42,44 @@ public String getType() {
3842
public @Nullable ModCandidate getParent() {
3943
return null;
4044
}
45+
46+
@Override
47+
public @Nullable String getVersion() {
48+
return null;
49+
}
50+
51+
@Override
52+
public @Nullable String getParentSubPath() {
53+
return null;
54+
}
55+
56+
@Override
57+
public String getDestinationName() {
58+
return this.path.getFileName().toString();
59+
}
60+
61+
@Override
62+
public ModDiscovererConfig getDiscovererConfig() {
63+
return discovererConfig;
64+
}
65+
66+
@Override
67+
public void setAccessWidener(byte[] data) {
68+
69+
}
70+
71+
@Override
72+
public byte @Nullable [] getAccessWidener() {
73+
return null;
74+
}
75+
76+
@Override
77+
public void setDestination(Path destination) {
78+
this.destination = destination;
79+
}
80+
81+
@Override
82+
public Path getDestination() {
83+
return this.destination;
84+
}
4185
}

src/main/java/io/github/fabriccompatibilitylayers/modremappingapi/impl/ModDiscovererConfigImpl.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ public class ModDiscovererConfigImpl implements ModDiscovererConfig {
1919
private final boolean searchRecursively;
2020
private final Predicate<String> directoryFilter;
2121
private final @Nullable BiFunction<Path, List<String>, List<ModCandidate>> candidateCollector;
22+
private final boolean exportToOriginalFolder;
2223

23-
private ModDiscovererConfigImpl(String folderName, Pattern fileNameMatcher, boolean searchRecursively, Predicate<String> directoryFilter, @Nullable BiFunction<Path, List<String>, List<ModCandidate>> candidateCollector) {
24+
private ModDiscovererConfigImpl(String folderName, Pattern fileNameMatcher, boolean searchRecursively, Predicate<String> directoryFilter, @Nullable BiFunction<Path, List<String>, List<ModCandidate>> candidateCollector, boolean exportToOriginalFolder) {
2425
this.folderName = folderName;
2526
this.fileNameMatcher = fileNameMatcher;
2627
this.searchRecursively = searchRecursively;
2728
this.directoryFilter = directoryFilter;
2829
this.candidateCollector = candidateCollector;
30+
this.exportToOriginalFolder = exportToOriginalFolder;
2931
}
3032

3133
@Override
@@ -53,12 +55,17 @@ public BiFunction<Path, List<String>, List<ModCandidate>> getCandidateCollector(
5355
return this.candidateCollector == null ? this::defaultCandidateCollector : this.candidateCollector;
5456
}
5557

58+
@Override
59+
public boolean getExportToOriginalFolder() {
60+
return this.exportToOriginalFolder;
61+
}
62+
5663
private List<ModCandidate> defaultCandidateCollector(Path modPath, List<String> fileList) {
5764
List<ModCandidate> candidates = new ArrayList<>();
5865

5966
for (String file : fileList) {
6067
if (file.endsWith(".class")) {
61-
candidates.add(new DefaultModCandidate(modPath));
68+
candidates.add(new DefaultModCandidate(modPath, this));
6269
break;
6370
}
6471
}
@@ -72,6 +79,7 @@ public static class BuilderImpl implements ModDiscovererConfig.Builder {
7279
private boolean searchRecursively = false;
7380
private Predicate<String> directoryFilter = s -> true;
7481
private BiFunction<Path, List<String>, List<ModCandidate>> candidateCollector;
82+
private boolean exportToOriginalFolder = false;
7583

7684
public BuilderImpl(String folderName) {
7785
this.folderName = folderName;
@@ -101,9 +109,15 @@ public Builder candidateCollector(BiFunction<Path, List<String>, List<ModCandida
101109
return this;
102110
}
103111

112+
@Override
113+
public Builder exportToOriginalFolder(boolean exportToOriginalFolder) {
114+
this.exportToOriginalFolder = exportToOriginalFolder;
115+
return this;
116+
}
117+
104118
@Override
105119
public ModDiscovererConfig build() {
106-
return new ModDiscovererConfigImpl(folderName, Pattern.compile(fileNameMatcher), searchRecursively, directoryFilter, candidateCollector);
120+
return new ModDiscovererConfigImpl(folderName, Pattern.compile(fileNameMatcher), searchRecursively, directoryFilter, candidateCollector, exportToOriginalFolder);
107121
}
108122
}
109123
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,13 @@ public static void init() {
4545

4646
List<String> v2Keys = new ArrayList<>(v2Remappers.keySet());
4747

48-
for (String contextKey : v2Keys) {
48+
while (!v2Keys.isEmpty()) {
49+
String contextKey = v2Keys.remove(0);
4950
ModRemmaperV2Context context = new ModRemmaperV2Context(contextKey, v2Remappers.get(contextKey));
5051
CURRENT_CONTEXT = context;
5152

53+
CURRENT_CONTEXT.init();
54+
5255
Map<String, List<ModRemapper>> newRemappers = context.discoverMods(remapClassEdits)
5356
.stream().collect(Collectors.groupingBy(ModRemapper::getContextId));
5457

0 commit comments

Comments
 (0)