Cardinal Components API

Cardinal Components API

21M Downloads

Minecraft-aware versioning

Pyrofab opened this issue ยท 0 comments

commented

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.