plugins { id 'fabric-loom' version '1.3.+' id 'io.github.juuxel.loom-vineflower' version '1.11.0' id 'maven-publish' id 'checkstyle' } base { archivesName = project.archives_base_name } version = "$project.mod_version+$project.minecraft_version" group = project.maven_group sourceSets { javadoc { } testMod { compileClasspath += main.compileClasspath runtimeClasspath += main.runtimeClasspath } } loom { createRemapConfigurations(sourceSets.testMod) runs { testModClient { client() name = 'Test Mod Client' source sourceSets.testMod } testModServer { server() name = 'Test Mod Server' source sourceSets.testMod } } } // Work around https://github.com/FabricMC/fabric-loom/issues/890. afterEvaluate { for (def config : [configurations.apiElements, configurations.runtimeElements]) { def parents = new HashSet<>(config.extendsFrom) parents.removeIf { it.name.startsWith 'modTestMod' } config.extendsFrom = parents } } 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' exclude group: 'net.fabricmc', module: 'fabric-loader' } // Test mod dependencies testModImplementation sourceSets.main.output modTestModImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modTestModRuntimeOnly("com.terraformersmc:modmenu:$project.modmenu_version") { exclude group: 'net.fabricmc.fabric-api' exclude group: 'net.fabricmc', module: 'fabric-loader' } } processResources { inputs.property "version", project.version filesMatching("fabric.mod.json") { expand "version": project.version } } java { withSourcesJar() withJavadocJar() 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 = rootProject.file('checkstyle.xml') configProperties = [suppressions: rootProject.file('checkstyle.suppressions.xml').absolutePath] toolVersion = '10.9.2' } def javadocBuildJar = tasks.register('javadocBuildJar', Jar) { destinationDirectory = file('build/devlibs') archiveClassifier = 'javadoc-build' from sourceSets.javadoc.output } javadoc { dependsOn javadocBuildJar 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 javadocBuildJar.get().archiveFile.get().asFile } exclude("**/impl/**") } // configure the maven publication publishing { publications { maven(MavenPublication) { from components.java pom { name = "LibGui" description = "Minecraft GUI Library" url = "https://github.com/CottonMC/LibGui" licenses { license { name = "MIT" url = "https://github.com/CottonMC/LibGui/blob/HEAD/LICENSE" } } developers { developer { name = "CottonMC" url = "https://github.com/CottonMC" } } } } } // select the repositories you want to publish to repositories { def env = System.getenv() if (env.MAVEN_URL) { maven { url = env.MAVEN_URL credentials { username = env.MAVEN_USERNAME password = env.MAVEN_PASSWORD } } } } }