Minecraft-aware versioning
Pyrofab opened this issue ยท 0 comments
With the 1.15 snapshots coming out, we will have to support functionally identical versions that are only compatible with some Minecraft versions. As such, a way to tell the target game version from the mod's own version becomes necessary.
Ideally, the chosen versioning should abide Semantic Versioning.
Prior art:
- Forge's recommended versioning uses a versioning scheme completely separate from SemVer. This is far from ideal, as both Fabric Loader and Gradle rely on proper semantic versioning for dependency resolution.
- Sponge's versioning is similar to Forge. (related issue)
- Prospector's Mod Menu uses regular versions (implied 1.14) for the stable channel, and appends
-unstable.19wXX
to versions targeting snapshots. This breaks when updates are released for 2 stable versions of the game (eg. 1.14 and 1.15), as it forces one of the two to be considered beta. - Fabric API appends the Minecraft version to the build metadata (eg.
0.3.2+19w35a
). This is proper semantic versioning, and is retrocompatible with the current versioning scheme. It also avoids locking a specific CCA version to the Minecraft version it was built on. (related issue)
I'd be partial to Fabric's versioning scheme, as it is the least invasive. Depending on a specific minecraft version can now be done better by depending on the appropriate intrinsic mod container.