Cardinal-Components-API icon indicating copy to clipboard operation
Cardinal-Components-API copied to clipboard

Minecraft-aware versioning

Open Pyrofab opened this issue 5 years ago • 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.

Pyrofab avatar Aug 30 '19 11:08 Pyrofab