Skip to content

Commit 75b3692

Browse files
authored
Develop 1.21.1 beta 6 (Sinytra#1636)
2 parents 99441a8 + e83b753 commit 75b3692

7 files changed

+31
-30
lines changed

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ org.gradle.caching=true
77
#org.gradle.configuration-cache=true
88

99
# Versions
10-
versionConnector=2.0.0-beta.5
10+
versionConnector=2.0.0-beta.6
1111
versionAdapter=1.13.20+1.21.1-20240811.191740
1212
versionAdapterDefinition=1.13.23+1.21.1
1313
versionAdapterRuntime=1.0.0+1.21.1
1414

1515
versionMc=1.21.1
16-
versionNeoForge=21.1.90
16+
versionNeoForge=21.1.97
1717
versionParchmentMc=1.21
1818
versionParchment=2024.07.28
1919
versionForgeAutoRenamingTool=1.0.12

src/main/java/org/sinytra/connector/locator/ConnectorEarlyLocatorBootstrap.java

-20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.sinytra.connector.locator;
22

3-
import com.mojang.logging.LogUtils;
43
import cpw.mods.jarhandling.SecureJar;
54
import net.neoforged.fml.loading.moddiscovery.readers.JarModsDotTomlModFileReader;
65
import net.neoforged.neoforgespi.ILaunchContext;
@@ -12,9 +11,7 @@
1211
import org.apache.logging.log4j.core.Filter;
1312
import org.apache.logging.log4j.core.config.Configuration;
1413
import org.apache.logging.log4j.core.filter.MarkerFilter;
15-
import org.sinytra.connector.ConnectorEarlyLoader;
1614
import org.sinytra.connector.service.DummyVirtualJar;
17-
import org.slf4j.Logger;
1815

1916
import java.util.Arrays;
2017
import java.util.Locale;
@@ -27,26 +24,9 @@
2724
* An ugly hack to sort FML dependency providers and make sure {@link ConnectorLocator ours} comes last.
2825
*/
2926
public class ConnectorEarlyLocatorBootstrap implements IModFileCandidateLocator {
30-
private static final Logger LOGGER = LogUtils.getLogger();
31-
3227
private static ILaunchContext launchContext;
3328

3429
public ConnectorEarlyLocatorBootstrap() {
35-
// Unfortunately, FML doesn't provide a way to sort mod/dependency locators by priority, so we have to create our own
36-
try {
37-
// Method method = FMLLoader.class.getDeclaredMethod("getModDiscoverer");
38-
// method.setAccessible(true);
39-
// ModDiscoverer discoverer = (ModDiscoverer) method.invoke(null);
40-
// Field field = ModDiscoverer.class.getDeclaredField("dependencyLocatorList");
41-
// field.setAccessible(true);
42-
// List<IDependencyLocator> dependencyLocatorList = (List<IDependencyLocator>) field.get(discoverer);
43-
// // 1 - move under; 0 - preserve original order
44-
// dependencyLocatorList.sort(Comparator.comparingInt(loc -> loc instanceof ConnectorLocator ? 1 : 0));
45-
} catch (Throwable t) {
46-
LOGGER.error("Error sorting FML dependency locators", t);
47-
// We can't throw here as that would prevent the connector mod from loading and lead to fabric loader being loaded twice instead
48-
ConnectorEarlyLoader.addGenericLoadingException(t, "Error sorting FML dependency locators");
49-
}
5030
injectLogMarkers();
5131
}
5232

src/main/java/org/sinytra/connector/locator/ConnectorLocator.java

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.sinytra.connector.locator.filter.SplitPackageMerger;
2828
import org.sinytra.connector.transformer.jar.JarTransformer;
2929
import org.sinytra.connector.util.ConnectorUtil;
30+
import org.sinytra.connector.util.PriorityModLoadingException;
3031
import org.slf4j.Logger;
3132

3233
import java.io.IOException;
@@ -75,6 +76,8 @@ public void scanMods(List<IModFile> loadedMods, IDiscoveryPipeline pipeline) {
7576
}
7677

7778
loadEmbeddedJars(pipeline);
79+
} catch (PriorityModLoadingException e) {
80+
throw e;
7881
} catch (ModLoadingException e) {
7982
// Let these pass through
8083
ConnectorEarlyLoader.addGenericLoadingException(e.getIssues());

src/main/java/org/sinytra/connector/locator/MixinTransformSafeguard.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.sinytra.adapter.patch.api.PatchAuditTrail;
88
import org.sinytra.connector.transformer.jar.JarTransformer;
99
import org.sinytra.connector.util.ConnectorConfig;
10+
import org.sinytra.connector.util.PriorityModLoadingException;
1011
import org.slf4j.Logger;
1112

1213
import java.util.List;
@@ -41,6 +42,6 @@ public static void trigger(List<JarTransformer.TransformedFabricModPath> failing
4142
builder.append("\n");
4243
});
4344

44-
throw new ModLoadingException(ModLoadingIssue.error(builder.toString()));
45+
throw new PriorityModLoadingException(ModLoadingIssue.error(builder.toString()));
4546
}
4647
}

src/main/java/org/sinytra/connector/service/FabricMixinBootstrap.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import net.fabricmc.loader.impl.FabricLoaderImpl;
2626
import net.neoforged.fml.loading.LoadingModList;
2727
import net.neoforged.fml.loading.moddiscovery.ModFileInfo;
28+
import net.neoforged.fml.loading.moddiscovery.ModFileParser;
2829
import org.sinytra.connector.ConnectorEarlyLoader;
2930
import org.slf4j.Logger;
3031
import org.spongepowered.asm.mixin.FabricUtil;
@@ -49,13 +50,13 @@ public static void init() {
4950
Map<String, ModFileInfo> configToModMap = new HashMap<>();
5051

5152
for (ModFileInfo modFile : LoadingModList.get().getModFiles()) {
52-
List<String> mixinConfigs = modFile.getFile().getMixinConfigs();
53+
List<ModFileParser.MixinConfig> mixinConfigs = modFile.getFile().getMixinConfigs();
5354
if (mixinConfigs != null) {
54-
for (String config : mixinConfigs) {
55-
if (Files.exists(modFile.getFile().findResource(config))) {
56-
ModFileInfo prev = configToModMap.putIfAbsent(config, modFile);
55+
for (ModFileParser.MixinConfig config : mixinConfigs) {
56+
if (Files.exists(modFile.getFile().findResource(config.config()))) {
57+
ModFileInfo prev = configToModMap.putIfAbsent(config.config(), modFile);
5758
if (prev != null)
58-
LOGGER.debug("Non-unique Mixin config name {} used by the mods {} and {}", config, prev.moduleName(), modFile.moduleName());
59+
LOGGER.debug("Non-unique Mixin config name {} used by the mods {} and {}", config.config(), prev.moduleName(), modFile.moduleName());
5960
}
6061
}
6162
}
@@ -122,7 +123,7 @@ else if (dep.getKind() == ModDependency.Kind.BREAKS) {
122123

123124
if (reqIntervals.isEmpty()) throw new IllegalStateException("mod " + metadata.getId() + " is incompatible with every loader version?"); // shouldn't get there
124125

125-
Version minLoaderVersion = reqIntervals.get(0).getMin(); // it is sorted, to 0 has the absolute lower bound
126+
Version minLoaderVersion = reqIntervals.getFirst().getMin(); // it is sorted, to 0 has the absolute lower bound
126127

127128
if (minLoaderVersion != null) { // has a lower bound
128129
for (LoaderMixinVersionEntry version : VERSIONS) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.sinytra.connector.util;
2+
3+
import net.neoforged.fml.ModLoadingException;
4+
import net.neoforged.fml.ModLoadingIssue;
5+
6+
import java.util.List;
7+
8+
public class PriorityModLoadingException extends ModLoadingException {
9+
public PriorityModLoadingException(ModLoadingIssue issue) {
10+
super(issue);
11+
}
12+
13+
public PriorityModLoadingException(List<ModLoadingIssue> issues) {
14+
super(issues);
15+
}
16+
}

src/mod/resources/META-INF/neoforge.mods.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ config="connector.mixins.json"
2121
[[dependencies.connector]]
2222
modId="neoforge"
2323
type="required"
24-
versionRange="*"
24+
versionRange="[21.1.97,)"
2525
ordering="NONE"
2626
side="BOTH"
2727
[[dependencies.connector]]

0 commit comments

Comments
 (0)