Closed AlexIIL closed 1 year ago
About the default being ^
, I believe it was a decision made in order to match common SemVer implementations, and it had regular dependencies in mind rather than the least-semver-following component ever; I'd rather have it stay ^
(with the clarification being provided through the in-dev-hell JSON schema) than use =
because of Minecraft
Anyway, huh, looks like we did miss a =
here, and we didn't mind that much due to many of our versions supporting one version only, with nothing else other than adding an extra version being done for cases like this one
Fixed on QSL v6.0.4, which adopts the new method introduced by Quilt Loader 0.19.2
This is due to QMJ's
versions
field of adepends
block interpreting prefix-less versions (like1.20.1
) as being prefixed with^
, which means it will be loaded in any version of minecraft after 1.20 and before2.0
. I think the fix for this is to always prefix the minecraft version with=
here: https://github.com/QuiltMC/quilt-standard-libraries/blob/3e912ab0bfc3272b99ab6121d80f3e65ef9c6933/build-logic/src/main/java/qsl/internal/json/QmjBuilder.java#L51-L59 (This doesn't affect snapshots)I found this out from quilt-loader 0.19.2-beta.2, which logs a warning when encountering unnecessary version constraints:
Warnings for quilt.mod.json at: '/qfapi-7.0.3_qsl-6.0.3_fapi-0.83.1_mc-1.20.1.jar!/META-INF/jars/block_content_registry-6.0.3+1.20.1.jar!/quilt.mod.json'
(FWIW I think the decision to default to
^
is an odd one, and probably causes a lot of confusion. :/ Perhaps in future QMJ specs we can remove it? Either way that doesn't help us now)