plugins { id 'fabric-loom' version '1.0.+' id 'io.github.juuxel.loom-quiltflower' version '1.7.2' id 'maven-publish' id 'checkstyle' } if(rootProject.file('private.gradle').exists()) { //Publishing details apply from: 'private.gradle' } archivesBaseName = project.archives_base_name version = "$project.mod_version+$project.minecraft_version" group = project.maven_group configurations { javadocClasspath } repositories { maven { url "https://server.bbkr.space/artifactory/libs-release" content { includeGroup "io.github.cottonmc" } } maven { url = "https://maven.terraformersmc.com/releases" content { includeGroup "com.terraformersmc" } } } dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // True: module classes are used in public API classes/methods/fields def fabricApiModules = [ 'fabric-api-base': true, 'fabric-lifecycle-events-v1': false, 'fabric-networking-api-v1': true, 'fabric-rendering-v1': false, ] fabricApiModules.forEach { module, api -> def dependency = fabricApi.module(module, project.fabric_version) if (api) { modApi dependency } else { modImplementation dependency } } modImplementation "io.github.cottonmc:Jankson-Fabric:${project.jankson_version}" include "io.github.cottonmc:Jankson-Fabric:${project.jankson_version}" include api("io.github.juuxel:libninepatch:${project.libninepatch_version}") modCompileOnly("com.terraformersmc:modmenu:$project.modmenu_version") { exclude group: 'net.fabricmc.fabric-api' } javadocClasspath project(':javadoc') } processResources { inputs.property "version", project.version filesMatching("fabric.mod.json") { expand "version": project.version } } java { withSourcesJar() withJavadocJar() } allprojects { plugins.withId('java') { // when the java plugin is applied in the project java { // Use Java 17 toolchain if running on older version of Java, but allow newer versions if (!JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { toolchain { languageVersion = JavaLanguageVersion.of(17) } } else { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } } } } tasks.withType(JavaCompile) { // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html options.encoding = "UTF-8" options.release.set 17 } jar { from "CREDITS.txt", "LICENSE" } checkstyle { configFile = file('checkstyle.xml') toolVersion = '8.36.2' } evaluationDependsOn(':javadoc') javadoc { dependsOn project(':javadoc').tasks.jar options { links "https://maven.fabricmc.net/docs/yarn-$project.yarn_mappings" links 'https://javadoc.io/doc/org.jetbrains/annotations/19.0.0' taglets 'io.github.cottonmc.cotton.gui.jd.ExperimentalTaglet', 'io.github.cottonmc.cotton.gui.jd.PropertyTaglet' tagletPath project(':javadoc').tasks.jar.outputs.files.singleFile } exclude("**/impl/**") } // configure the maven publication publishing { publications { maven(MavenPublication) { from components.java } } // select the repositories you want to publish to repositories { if (project.hasProperty("artifactoryUsername")) { maven { url = "https://server.bbkr.space/artifactory/libs-release/" credentials { username = artifactoryUsername password = artifactoryPassword } } } else { println "Cannot configure artifactory; please define ext.artifactoryUsername and ext.artifactoryPassword before running publish" } } }