plugins { alias(libs.plugins.fabric.loom) alias(libs.plugins.loom.quiltflower) alias(libs.plugins.qmol) alias(libs.plugins.grgit) } archivesBaseName = project.archives_base_name version = "${project.mod_version}+${getMetadata()}" group = project.maven_group repositories { maven { name = 'Modrinth' url = 'https://api.modrinth.com/maven' content { includeGroup 'maven.modrinth' } } } dependencies { minecraft libs.minecraft mappings loom.layered { addLayer quiltMappings.mappings("org.quiltmc:quilt-mappings:${libs.versions.quilt.mappings.get()}:v2") } modImplementation libs.fabric.loader modImplementation libs.fabric.api modCompileOnly libs.sodium } loom { accessWidenerPath.set file("src/main/resources/cauldron-dyeing.accesswidener") } processResources { inputs.property 'version', project.version filteringCharset 'UTF-8' filesMatching('fabric.mod.json') { expand 'version': project.version } } tasks.withType(JavaCompile) { it.options.encoding = 'UTF-8' // Minecraft 1.18 (1.18-pre2) upwards uses Java 17. it.options.release = 17 } java { // Still required by IDEs such as Eclipse and Visual Studio Code sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 withSourcesJar() } jar { from('LICENSE') { rename { "${it}_${project.archivesBaseName}"} } } def getMetadata() { def build_id = System.getenv('GITHUB_RUN_NUMBER') def workflow_id = System.getenv('GITHUB_WORKFLOW') def metadata = libs.versions.minecraft.get() // Release builds only if (workflow_id == 'build-release') { return metadata } if (build_id != null) { metadata += "-build.${build_id}" } else if (grgit != null) { def head = grgit.head() def id = head.abbreviatedId // Flag the build if the build tree is not clean if (!grgit.status().clean) { id += '-dirty' } metadata += "-${id}" } return metadata }