Skip to content

Version Stategies

The VersionStrategy that is used defined how the various versions & artifact names are generated from the mod metadata. It can be customized by setting the version_strategy gradle property to a value defined below, or by setting it directly on the mod extension.

neoforge/build.gradle.kts
mod {
   versionStrategy = MyVersionStrategy()
}

Generated Fields

Field Description
modVersion replaces mod_version in templates such as neoforge.mods.toml
metadataTag tag property written to build/release.json
uploadVersion version published to curseforge/modrinth
artifactVersion version of the maven artifact being published
artifactName name of the maven artifact being published
baseName base name of the JAR file being created

Default Strategy

version_strategy = simple

The SimpleStrategy will strip the version metadata (everything after the plus sign) from everything except the metadataVersion.

Examples

Field Outputs

Field Value Subproject named module
modVersion 1.0.0 same
metadataTag 1.0.0 same
uploadVersion 1.0.0 same
artifactVersion 1.0.0 same
artifactName mod_id mod_id-module
baseName mod_id-1.0.0 mod_id-module-1.0.0
Field Value
modVersion 1.0.0
metadataTag 1.0.0+some.metadata
uploadVersion 1.0.0
artifactVersion 1.0.0
artifactName mod_id
baseName mod_id-1.0.0
Field Value
modVersion 1.0.0-prerelease
metadataTag 1.0.0-prerelease
uploadVersion 1.0.0-prerelease
artifactVersion 1.0.0-prerelease
artifactName mod_id
baseName mod_id-1.0.0-prerelease

With-Minecraft-Version Strategy

version_strategy = with_minecraft_version

Wraps around the default version strategy and adds the minecraft version to the artifact name & some of the versions metadata.

This strategy makes sense for projects that share the same versions between different minecraft version (without for example incrementing the major version).

Examples

Field Outputs

Field Value
modVersion 1.0.0
metadataTag 1.0.0+mc1.21.1
uploadVersion 1.0.0
artifactVersion 1.0.0
artifactName mod_id-1.21.1
baseName mod_id-1.0.0
Field Value
modVersion 1.0.0
metadataTag 1.0.0+mc1.21.1
uploadVersion 1.0.0
artifactVersion 1.0.0
artifactName mod_id-1.21.1
baseName mod_id-1.0.0
Field Value
modVersion 1.0.0
metadataTag 1.0.0+some.metadata.mc1.21.1
uploadVersion 1.0.0
artifactVersion 1.0.0
artifactName mod_id-1.21.1
baseName mod_id-1.0.0
Field Value
modVersion 1.0.0-prerelease
metadataTag 1.0.0-prerelease+mc1.21.1
uploadVersion 1.0.0-prerelease
artifactVersion 1.0.0-prerelease
artifactName mod_id-1.21.1
baseName mod_id-1.0.0-prerelease

With-Loader Strategy

version_strategy = with_loader

Adds the loader to the artifact name & the version metadata of the generated build/release.json tag property.

This strategy makes sense for projects that share the same versions between different loaders, but share the same mod id.

Examples

Field Outputs

Field Value
modVersion 1.0.0
metadataTag 1.0.0+neoforge
uploadVersion 1.0.0
artifactVersion 1.0.0
artifactName mod_id-neoforge
baseName mod_id-neoforge-1.0.0
Field Value
modVersion 1.0.0
metadataTag 1.0.0+neoforge
uploadVersion 1.0.0
artifactVersion 1.0.0
artifactName mod_id-neoforge
baseName mod_id-neoforge-1.0.0
Field Value
modVersion 1.0.0
metadataTag 1.0.0+some.metadata.neoforge
uploadVersion 1.0.0
artifactVersion 1.0.0
artifactName mod_id-neoforge
baseName mod_id-neoforge-1.0.0
Field Value
modVersion 1.0.0-prerelease
metadataTag 1.0.0-prerelease+neoforge
uploadVersion 1.0.0-prerelease
artifactVersion 1.0.0-prerelease
artifactName mod_id-neoforge
baseName mod_id-neoforge-1.0.0-prerelease