fabric-loader icon indicating copy to clipboard operation
fabric-loader copied to clipboard

Unable to suggest mods correctly

Open ZekerZhayard opened this issue 2 years ago • 2 comments

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

ZekerZhayard avatar Mar 21 '22 16:03 ZekerZhayard

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.

Juuxel avatar Mar 22 '22 09:03 Juuxel

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)

sfPlayer1 avatar Mar 22 '22 19:03 sfPlayer1