feat(crash): show fabric mod confliction and missing.
This commit is contained in:
@@ -61,7 +61,11 @@ public final class CrashReportAnalyzer {
|
||||
ILLEGAL_ACCESS_ERROR(Pattern.compile("java\\.lang\\.IllegalAccessError: tried to access class (.*?) from class (?<class>.*?)"), "class"),
|
||||
// Some mods duplicated
|
||||
DUPLICATED_MOD(Pattern.compile("Found a duplicate mod (?<name>.*) at (?<path>.*)"), "name", "path"),
|
||||
// Fabric mod resolution
|
||||
MOD_RESOLUTION(Pattern.compile("ModResolutionException: (?<reason>(.*)[\\n\\r]*( - (.*)[\\n\\r]*)+)"), "reason"),
|
||||
MOD_RESOLUTION_CONFLICT(Pattern.compile("ModResolutionException: Found conflicting mods: (?<sourcemod>.*) conflicts with (?<destmod>.*)"), "sourcemod", "destmod"),
|
||||
MOD_RESOLUTION_MISSING(Pattern.compile("ModResolutionException: Could not find required mod: (?<sourcemod>.*) requires (?<destmod>.*)"), "sourcemod", "destmod"),
|
||||
MOD_RESOLUTION_MISSING_MINECRAFT(Pattern.compile("ModResolutionException: Could not find required mod: (?<mod>.*) requires \\{minecraft @ (?<version>.*)}"), "mod", "version"),
|
||||
// Some mods require a file not existing, asking user to manually delete it
|
||||
FILE_ALREADY_EXISTS(Pattern.compile("java\\.nio\\.file\\.FileAlreadyExistsException: (?<file>.*)"), "file"),
|
||||
// Forge found some mod crashed in game loading
|
||||
|
||||
@@ -367,7 +367,8 @@ public final class Lang {
|
||||
return null;
|
||||
};
|
||||
|
||||
public static void handleUncaughtException(Throwable e) {
|
||||
public static <R> R handleUncaughtException(Throwable e) {
|
||||
Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,6 +247,33 @@ public class CrashReportAnalyzerTest {
|
||||
result.getMatcher().group("reason").replaceAll("\\s+", ""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fabricConflicts() throws IOException {
|
||||
CrashReportAnalyzer.Result result = findResultByRule(
|
||||
CrashReportAnalyzer.anaylze(loadLog("/logs/fabric-mod-conflict.txt")),
|
||||
CrashReportAnalyzer.Rule.MOD_RESOLUTION_CONFLICT);
|
||||
Assert.assertEquals("phosphor", result.getMatcher().group("sourcemod"));
|
||||
Assert.assertEquals("{starlight @ [*]}", result.getMatcher().group("destmod"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fabricMissing() throws IOException {
|
||||
CrashReportAnalyzer.Result result = findResultByRule(
|
||||
CrashReportAnalyzer.anaylze(loadLog("/logs/fabric-mod-missing.txt")),
|
||||
CrashReportAnalyzer.Rule.MOD_RESOLUTION_MISSING);
|
||||
Assert.assertEquals("pca", result.getMatcher().group("sourcemod"));
|
||||
Assert.assertEquals("{fabric @ [>=0.39.2]}", result.getMatcher().group("destmod"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fabricMissingMinecraft() throws IOException {
|
||||
CrashReportAnalyzer.Result result = findResultByRule(
|
||||
CrashReportAnalyzer.anaylze(loadLog("/logs/fabric-minecraft.txt")),
|
||||
CrashReportAnalyzer.Rule.MOD_RESOLUTION_MISSING_MINECRAFT);
|
||||
Assert.assertEquals("fabric", result.getMatcher().group("mod"));
|
||||
Assert.assertEquals("[~1.16.2-alpha.20.28.a]", result.getMatcher().group("version"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customNpc() throws IOException {
|
||||
CrashReportAnalyzer.Result result = findResultByRule(
|
||||
|
||||
16
HMCLCore/src/test/resources/logs/fabric-minecraft.txt
Normal file
16
HMCLCore/src/test/resources/logs/fabric-minecraft.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
[14:49:11] [main/INFO]: Loading for game Minecraft 1.17.1
|
||||
[14:49:12] [main/FATAL]: A critical error occurred
|
||||
net.fabricmc.loader.discovery.ModResolutionException: Could not find required mod: fabric requires {minecraft @ [~1.16.2-alpha.20.28.a]}
|
||||
at net.fabricmc.loader.discovery.ModResolver.findCompatibleSet(ModResolver.java:198) ~[fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.discovery.ModResolver.resolve(ModResolver.java:832) ~[fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.FabricLoader.setup(FabricLoader.java:195) ~[fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.FabricLoader.load(FabricLoader.java:185) [fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:132) [fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) [fabric-loader-0.11.7.jar:?]
|
||||
Caused by: net.fabricmc.loader.util.sat4j.specs.ContradictionException: Creating Empty clause ?
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.cnf.Clauses.propagationCheck(Clauses.java:117) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.cnf.Clauses.sanityCheck(Clauses.java:97) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.MixedDataStructureDanielWL.createClause(MixedDataStructureDanielWL.java:81) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.core.Solver.addClause(Solver.java:401) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.discovery.ModResolver.findCompatibleSet(ModResolver.java:195) ~[fabric-loader-0.11.7.jar:?]
|
||||
... 5 more
|
||||
28
HMCLCore/src/test/resources/logs/fabric-mod-conflict.txt
Normal file
28
HMCLCore/src/test/resources/logs/fabric-mod-conflict.txt
Normal file
@@ -0,0 +1,28 @@
|
||||
[18:27:35] [main/INFO]: Loading for game Minecraft 1.16.5
|
||||
[18:27:36] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
|
||||
- Unsupported root entry "$schema" at line 2 column 14
|
||||
[18:27:36] [ForkJoinPool-1-worker-2/WARN]: Non-Fabric mod JAR at "/storage/emulated/0/games/PojavLauncher/.minecraft/mods/stoneholm-1.16.52-1.2.2.jar", ignoring
|
||||
[18:27:36] [ForkJoinPool-1-worker-4/WARN]: Non-Fabric mod JAR at "/storage/emulated/0/games/PojavLauncher/.minecraft/mods/OfflineSkins_1.16.5_v1a.jar", ignoring
|
||||
[18:27:36] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
|
||||
- Unsupported root entry "$schema" at line 2 column 14
|
||||
[18:27:36] [ForkJoinPool-1-worker-2/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
|
||||
- Unsupported root entry "$schema" at line 2 column 14
|
||||
[18:27:36] [ForkJoinPool-1-worker-7/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
|
||||
- Unsupported root entry "$schema" at line 2 column 14
|
||||
[18:27:36] [ForkJoinPool-1-worker-6/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
|
||||
- Unsupported root entry "$schema" at line 2 column 14
|
||||
[18:27:37] [main/FATAL]: A critical error occurred
|
||||
net.fabricmc.loader.discovery.ModResolutionException: Found conflicting mods: phosphor conflicts with {starlight @ [*]}
|
||||
at net.fabricmc.loader.discovery.ModResolver.findCompatibleSet(ModResolver.java:219) ~[fabric-loader-0.11.6.jar:?]
|
||||
at net.fabricmc.loader.discovery.ModResolver.resolve(ModResolver.java:832) ~[fabric-loader-0.11.6.jar:?]
|
||||
at net.fabricmc.loader.FabricLoader.setup(FabricLoader.java:195) ~[fabric-loader-0.11.6.jar:?]
|
||||
at net.fabricmc.loader.FabricLoader.load(FabricLoader.java:185) [fabric-loader-0.11.6.jar:?]
|
||||
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:132) [fabric-loader-0.11.6.jar:?]
|
||||
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) [fabric-loader-0.11.6.jar:?]
|
||||
Caused by: net.fabricmc.loader.util.sat4j.specs.ContradictionException: Creating Empty clause ?
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.cnf.Clauses.propagationCheck(Clauses.java:117) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.cnf.Clauses.sanityCheck(Clauses.java:97) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.MixedDataStructureDanielWL.createClause(MixedDataStructureDanielWL.java:81) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.core.Solver.addClause(Solver.java:401) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.discovery.ModResolver.findCompatibleSet(ModResolver.java:216) ~[fabric-loader-0.11.6.jar:?]
|
||||
... 5 more
|
||||
20
HMCLCore/src/test/resources/logs/fabric-mod-missing.txt
Normal file
20
HMCLCore/src/test/resources/logs/fabric-mod-missing.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
OpenJDK 64-Bit Server VM warning: Option --illegal-access is deprecated and will be removed in a future release.
|
||||
[16:18:52] [main/INFO]: Loading for game Minecraft 1.17.1
|
||||
[16:18:52] [main/INFO]: Fabric is preparing JARs on first launch, this may take a few seconds...
|
||||
[16:18:55] [ForkJoinPool-1-worker-17/WARN]: The mod "autoconfig1u" contains invalid entries in its mod json:
|
||||
- Unsupported root entry "$schema" at line 2 column 14
|
||||
[16:18:55] [main/FATAL]: A critical error occurred
|
||||
net.fabricmc.loader.discovery.ModResolutionException: Could not find required mod: pca requires {fabric @ [>=0.39.2]}
|
||||
at net.fabricmc.loader.discovery.ModResolver.findCompatibleSet(ModResolver.java:198) ~[fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.discovery.ModResolver.resolve(ModResolver.java:832) ~[fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.FabricLoader.setup(FabricLoader.java:195) ~[fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.FabricLoader.load(FabricLoader.java:185) [fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:132) [fabric-loader-0.11.7.jar:?]
|
||||
at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) [fabric-loader-0.11.7.jar:?]
|
||||
Caused by: net.fabricmc.loader.util.sat4j.specs.ContradictionException: Creating Empty clause ?
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.cnf.Clauses.propagationCheck(Clauses.java:117) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.cnf.Clauses.sanityCheck(Clauses.java:97) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.constraints.MixedDataStructureDanielWL.createClause(MixedDataStructureDanielWL.java:81) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.util.sat4j.minisat.core.Solver.addClause(Solver.java:401) ~[fabric-loader-sat4j-2.3.5.4.jar:?]
|
||||
at net.fabricmc.loader.discovery.ModResolver.findCompatibleSet(ModResolver.java:195) ~[fabric-loader-0.11.7.jar:?]
|
||||
... 5 more
|
||||
Reference in New Issue
Block a user