//file:noinspection GroovyAssignabilityCheck //file:noinspection GroovyAccessibility plugins { id "maven-publish" alias libs.plugins.loom alias libs.plugins.minotaur } boolean inCI = System.getenv("GITHUB_RUN_NUMBER") != null version = "$modVersion+$branchName" base.archivesName = project.slug repositories { exclusiveContent { forRepository { //noinspection ForeignDelegate maven { name 'Modrinth' url "https://api.modrinth.com/maven" } } filter { includeGroup "maven.modrinth" } } exclusiveContent { forRepository { //noinspection ForeignDelegate maven { name 'Terraformers' url "https://maven.terraformersmc.com/" } } filter { includeGroup "com.terraformersmc" } } exclusiveContent { forRepository { //noinspection ForeignDelegate maven { name 'ParchmentMC' url "https://maven.parchmentmc.org" } } filter { includeGroup "org.parchmentmc.data" } } flatDir { dir("libs") } } dependencies { minecraft libs.mc mappings loom.layered { it.officialMojangMappings() it.parchment variantOf(libs.parchment) { artifactType "zip" } it.mappings file("custom_mappings.tiny") } modImplementation libs.fl modImplementation libs.fapi if (!inCI) { modRuntimeOnly libs.mm } modCompileOnly libs.sodium if (!inCI && enable_sodium.toBoolean()) { modLocalRuntime libs.sodium } modCompileOnly libs.axiom if (!inCI && enable_axiom.toBoolean()) { modLocalRuntime( libs.axiom, libs.axiom.axiomclientapi, libs.axiom.lattice, libs.axiom.mixinconstraints ) } include(implementation(annotationProcessor(libs.mixinextras.get()))) } processResources { final Map meta = [ version : version, modId : modId, modName : modName, modDescription: modDescription, homepage : "https://modrinth.com/mod/${slug}", issues : "https://github.com/${user}/${slug}/issues", sources : "https://github.com/${user}/${slug}", license : license, authors : authors.split(", ").join("\",\n \""), contributors : contributors.split(", ").join("\",\n \""), members : "${authors}${contributors ? ". Contributions by ${contributors}." : ""}", mc : compatibleVersions.split(", ")[0], fl : libs.versions.fl.get(), fapi : libs.versions.fapi.get(), ] inputs.properties meta filesMatching("*.mod.json") { expand(meta) } filesMatching("META-INF/*mods.toml") { expand(meta) } // don't add development or to-do files into built jar exclude("**/*.bbmodel", "**/*.lnk", "**/*.xcf", "**/*.blend", "**/*.blend1") } loom { runs.configureEach { vmArg("-XX:+AllowEnhancedClassRedefinition") vmArg("-XX:+IgnoreUnrecognizedVMOptions") vmArg("-Dmixin.debug.export=true") vmArg("-Dfabric-tag-conventions-v2.missingTagTranslationWarning=VERBOSE") } } fabricApi { configureDataGeneration { client = true outputDirectory = file("src/generated/resources") } } tasks.withType(JavaCompile).configureEach { it.options.encoding = "UTF-8" it.options.release = 21 } java { withSourcesJar() sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 } publishing { repositories { } publications { mavenJava(MavenPublication) { from components.java } } } modrinth { token = "$System.env.MODRINTH_TOKEN" projectId = slug versionNumber = project.version versionType = System.getenv().getOrDefault("RELEASE_TYPE", "release") uploadFile = remapJar gameVersions = compatibleVersions.split(", ").toList() loaders = compatibleLoaders.split(", ").toList() changelog = "$System.env.CHANGELOG" syncBodyFrom = "\n" + rootProject.file("README.md").text dependencies { required.version "fabric-api", libs.versions.fapi.get() } }