plugins { // Building id 'fabric-loom' version "${loom_version}" id "de.hysky.skyblocker.annotation-processor" id "com.diffplug.spotless" version "6.20.0" id "checkstyle" // Publishing id 'maven-publish' id "me.modmuss50.mod-publish-plugin" version "0.8.1" } version = "${project.mod_version}+${project.minecraft_version}" group = project.maven_group repositories { // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. flatDir { dirs 'libs' } maven { name = 'Maven Central' url = 'https://repo.maven.apache.org/maven2' } // For ModMenu and EMI exclusiveContent { forRepository { maven { url = "https://maven.terraformersmc.com/releases" } } filter { includeGroup "com.terraformersmc" includeGroup "dev.emi" } } // For REI exclusiveContent { forRepository { maven { url = "https://maven.shedaniel.me/" } } filter { includeGroup "me.shedaniel" includeGroup "me.shedaniel.cloth" includeGroup "dev.architectury" } } // For JEI exclusiveContent { forRepository { maven { name = "Modrinth" url = "https://api.modrinth.com/maven" } } filter { includeGroup "maven.modrinth" } } // YACL maven { url = "https://maven.isxander.dev/releases" content { includeGroup "dev.isxander" includeGroup "org.quiltmc.parsers" } } // For Minecraft snapshots maven { url = "https://maven.isxander.dev/snapshots" content { includeGroup "dev.isxander" } } // For Discord RPC exclusiveContent { forRepository { maven { name = "meteor-maven" url = "https://maven.meteordev.org/releases" } } filter { includeGroup "meteordevelopment" } } // For NEU repo parser exclusiveContent { forRepository { maven { url = "https://repo.nea.moe/releases" } } filter { includeGroup "moe.nea" } } maven { url = "https://maven.azureaaron.net/releases" content { includeGroup "net.azureaaron" } } maven { url = "https://maven.azureaaron.net/snapshots" content { includeGroup "net.azureaaron" } } maven { url = "https://maven.notenoughupdates.org/releases" content { includeGroup "org.notenoughupdates.moulconfig" } } //mavenLocal() } dependencies { testImplementation "net.fabricmc:fabric-loader-junit:${project.loader_version}" // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" //Layered Yarn & Mojmap - used to fill in intermediary names mappings loom.layered { //Using Mojmap breaks runClient, so uncomment only for snapshots when temp mappings are needed //officialMojangMappings() mappings("net.fabricmc:yarn:${project.yarn_mappings}:v2") } modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Loom does not always add this implementation "ca.weblite:java-objc-bridge:1.1" // Fabric API modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" // Dandelion include modImplementation("net.azureaaron:dandelion:${project.dandelion_version}") // YACL include modImplementation("dev.isxander:yet-another-config-lib:${project.yacl_version}-fabric") // MoulConfig - Dandelion shades it in already //modImplementation("org.notenoughupdates.moulconfig:${project.moulconfig_flavour}:${project.moulconfig_version}") // HM API (Hypixel Mod API Library) include modImplementation("net.azureaaron:hm-api:${project.hm_api_version}") // Mod Menu modImplementation "com.terraformersmc:modmenu:${project.mod_menu_version}" // REI modCompileOnly("me.shedaniel:RoughlyEnoughItems-api-fabric:${project.rei_version}") { exclude group: "net.fabricmc.fabric-api" //Stop this from importing an old version of FAPI that crashes everything } //modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}" // EMI modCompileOnly "dev.emi:emi-fabric:${project.emi_version}:api" //modLocalRuntime "dev.emi:emi-fabric:${project.emi_version}" // JEI (Using modrinth repo since official release is in mojmap and doesn't work) modCompileOnly "maven.modrinth:jei:${project.jei_version}-fabric" //modRuntimeOnly "maven.modrinth:jei:${project.jei_version}-fabric" compileOnly "com.demonwav.mcdev:annotations:${project.mcdev_annotations_version}" include modImplementation("meteordevelopment:discord-ipc:1.1") // NEU RepoParser include implementation("moe.nea:neurepoparser:${project.repoparser_version}") // Networth Calculator (https://github.com/AzureAaron/networth-calculator) include implementation("net.azureaaron:networth-calculator:${project.networth_calculator_version}") // Legacy Item DFU include implementation("net.azureaaron:legacy-item-dfu:${project.legacy_item_dfu_version}") // JGit used pull data from the NEU item repo include implementation("org.eclipse.jgit:org.eclipse.jgit:${project.jgit_version}") // Apache Commons Math include implementation("org.apache.commons:commons-math3:${project.commons_math_version}") // Apache Commons Text include implementation("org.apache.commons:commons-text:${project.commons_text_version}") // Fabric Language Kotlin for using MoulConfig - we are still a Java-exclusive mod modImplementation("net.fabricmc:fabric-language-kotlin:${project.flk_version}") } loom { accessWidenerPath = file("src/main/resources/skyblocker.accesswidener") mixin { useLegacyMixinAp = false } } fabricApi { configureTests { createSourceSet = true modId = "skyblocker-test" enableGameTests = false eula = true } } base { archivesName = project.archives_base_name } processResources { inputs.property "version", project.version filesMatching("fabric.mod.json") { expand "version": project.version } } tasks.withType(JavaCompile).configureEach { it.options.release = 21 } java { sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 } jar { from("LICENSE") { rename { "${it}_${base.archivesName.get()}" } } } test { useJUnitPlatform() systemProperty("IS_TEST_ENV", "true") } spotless { java { removeUnusedImports() //indentWithTabs() // TODO: turn on when more files are converted to tabs trimTrailingWhitespace() endWithNewline() } json { target 'src/**/lang/en_us.json' targetExclude 'src/**/generated/**' //gson().sortByKeys().indentWithSpaces(2) // TODO: turn on in the future } groovyGradle { target 'src/**/*.gradle', '*.gradle', 'gradle/*.gradle' greclipse() } } checkstyle { toolVersion = "10.20.2" configFile = rootProject.file("checkstyle.xml") } publishMods { file = remapJar.archiveFile changelog = System.getenv('CHANGELOG') version = "v${project.version}" displayName = "Skyblocker ${mod_version} for ${minecraft_version}" modLoaders.add("fabric") type = STABLE modrinth { accessToken = System.getenv("MODRINTH_TOKEN") projectId = modrinth_id minecraftVersions.add(minecraft_version) announcementTitle = "<:modrinth:1237114573354438696> Download from Modrinth" requires("fabric-api", "fabric-language-kotlin") optional("modmenu", "rei", "emi", "jei") embeds("yacl") } curseforge { accessToken = System.getenv("CURSEFORGE_TOKEN") projectId = curseforge_id minecraftVersions.add(minecraft_version) announcementTitle = "<:curseforge:900697838453936149> Download from CurseForge" projectSlug = "skyblocker" requires("fabric-api", "fabric-language-kotlin") optional("roughly-enough-items", "emi", "jei") embeds("yacl") } discord { webhookUrl = System.getenv("DISCORD_WEBHOOK") username = "Changelog" content = changelog.map { "<@&1134565945482948638>\n## Skyblocker v${mod_version} for ${minecraft_version}\n" + it} } } // configure the maven publication publishing { publications { mavenJava(MavenPublication) { from components.java } } // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { // Add repositories to publish to here. // Notice: This block does NOT have the same function as the block in the top level. // The repositories here will be used for publishing your artifact, not for // retrieving dependencies. } }