fabric-loader
fabric-loader copied to clipboard
Unable to suggest mods correctly
Considering the below two mods:
mod_a:
{
"schemaVersion": 1,
"id": "mod_a",
"version": "1.0.0",
"breaks": {
"mod_b": "2.0.0"
}
}
mod_b:
{
"schemaVersion": 1,
"id": "mod_b",
"version": "2.1.0",
"breaks": {
"mod_a": "*"
}
}
the result is:
[00:48:52] [main/INFO]: Loading Minecraft 1.18.2 with Fabric Loader 0.13.3
[00:48:53] [main/WARN]: Mod resolution failed
[00:48:53] [main/INFO]: Immediate reason: [NEG_HARD_DEP mod_b 2.1.0 {breaks mod_a @ [*]}, ROOT_FORCELOAD_SINGLE mod_a 1.0.0, ROOT_FORCELOAD_SINGLE mod_b 2.1.0]
[00:48:53] [main/INFO]: Reason: [NEG_HARD_DEP mod_b 2.1.0 {breaks mod_a @ [*]}]
[00:48:53] [main/INFO]: Fix: add [], remove [], replace [[mod_b 2.1.0] -> add:mod_b 1 ([(-∞,2.0.0), (2.0.0,∞)])]
[00:48:53] [main/ERROR]: Incompatible mod set!
net.fabricmc.loader.impl.FormattedException: Mod resolution encountered an incompatible mod set!
A potential solution has been determined:
- Replace mod 'mod_b' (mod_b) 2.1.0 with any version before 2.0.0 or any version after 2.0.0 that is compatible with:
- mod_a 1.0.0
Unmet dependency listing:
- Mod 'mod_b' (mod_b) 2.1.0 is incompatible with any version of mod 'mod_a' (mod_a), but a matching version is present: 1.0.0!
at net.fabricmc.loader.impl.FabricLoaderImpl.load(FabricLoaderImpl.java:190) ~[fabric-loader-0.13.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:142) ~[fabric-loader-0.13.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:71) [fabric-loader-0.13.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.13.3.jar:?]
mod_b 2.1.0 is indeed after than 2.0.0
The suggestion is correct as far as I can tell. The "any version before/after 2.0.0" comes from mod_a exactly matching with 2.0.0
(so it's one of the two requirements here), and the other requirement is that it has to be compatible with mod_a.
Yes it is technically correct even if not the most human readable. The declaration in mod a effectively creates 2 open intervals with 2.0.0 missing, which is what loader requests (<2 or > 2)