plugins { id 'fabric-loom' version '1.6-SNAPSHOT' id 'java-library' id 'maven-publish' id 'com.github.johnrengelman.shadow' version '7.0.0' id "me.shedaniel.unified-publishing" version "0.1.+" } group = project.maven_group version = "${project.mod_version}+${project.minecraft_version}" // This field defines the Java version your mod target. def targetJavaVersion = 21 boolean isMCVersionNonRelease() { return project.minecraft_version.matches('^\\d\\dw\\d\\d[a-z]$') || project.minecraft_version.matches('\\d+\\.\\d+-(pre|rc)(\\d+)') } repositories { mavenLocal() mavenCentral() maven { url 'https://aperlambda.github.io/maven' } maven { name 'Gegy' url 'https://maven.gegy.dev' } maven { name = "CottonMC" url = "https://server.bbkr.space/artifactory/libs-release" } maven { url "https://maven.terraformersmc.com/releases/" } maven { url 'https://maven.kosmx.dev' } maven { url 'https://maven.isxander.dev/releases' } maven { url 'https://maven.shedaniel.me/' } maven { url 'https://jitpack.io' } maven { url "https://api.modrinth.com/maven" } maven { url 'https://maven.quiltmc.org/repository/release'} } configurations { shadow api.extendsFrom shadow } dependencies { //to change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" include modImplementation ("maven.modrinth:obsidianui:${project.obsidianui_version}") {} api('org.aperlambda:lambdajcommon:1.8.1') { exclude group: 'com.google.code.gson' exclude group: 'com.google.guava' } include 'org.aperlambda:lambdajcommon:1.8.1' modCompileOnlyApi ("com.terraformersmc:modmenu:${project.modmenu_version}") { exclude(group: "net.fabricmc.fabric-api") } // Compatibility mods // Ok Zoomer and LibZoomer are temporarily disabled for the time being, as we are currently using Reflection at runtime instead in OkZoomerCompat due to there being two major, completely incompatible API versions. // modImplementation("maven.modrinth:ok-zoomer:${project.ok_zoomer_version}") // modImplementation "io.github.ennuil:LibZoomer:${project.libzoomer_version}" modCompileOnlyApi "io.github.cottonmc:LibGui:${project.libgui_version}" modCompileOnlyApi "org.quiltmc:quilt-json5:1.0.0" modCompileOnly "maven.modrinth:sodium:${project.sodium_version}" modCompileOnlyApi "maven.modrinth:emi:${project.emi_version}" modCompileOnlyApi "maven.modrinth:emotecraft:${project.emotecraft_version}" modCompileOnlyApi "io.github.kosmx:bendy-lib:${project.bendylib_version}" modCompileOnlyApi "dev.isxander:yet-another-config-lib:${project.yacl_version}" modCompileOnlyApi "maven.modrinth:inventory-tabs-updated:${project.inventorytabs_version}" modCompileOnlyApi "maven.modrinth:bedrockify:${project.bedrockify_version}" // Required for Inventory Tabs modCompileOnlyApi("me.shedaniel.cloth:cloth-config-fabric:${project.clothconfig_version}") { exclude(group: "net.fabricmc.fabric-api") } modImplementation "maven.modrinth:midnightlib:${project.midnightlib_version}" include "maven.modrinth:midnightlib:${project.midnightlib_version}" shadow 'com.electronwill.night-config:core:3.6.3' shadow 'com.electronwill.night-config:toml:3.6.3' apply plugin: 'java-library' } loom { accessWidenerPath = file("src/main/resources/midnightcontrols.accesswidener") } java { sourceCompatibility = JavaVersion.toVersion(targetJavaVersion) targetCompatibility = JavaVersion.toVersion(targetJavaVersion) withSourcesJar() } tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' it.options.release.set(targetJavaVersion) } processResources { inputs.property 'version', project.version filesMatching('fabric.mod.json') { expand 'version': project.version } } ext { releaseChangelog = { def changes = new StringBuilder() changes << "## MidnightControls v$project.version for $project.minecraft_version\n[View the changelog](https://www.github.com/TeamMidnightDust/MidnightControls/commits/)" def proc = "git log --max-count=1 --pretty=format:%s".execute() proc.in.eachLine { line -> def processedLine = line.toString() if (!processedLine.contains("New translations") && !processedLine.contains("Merge") && !processedLine.contains("branch")) { changes << "\n- ${processedLine.capitalize()}" } } proc.waitFor() return changes.toString() } } unifiedPublishing { project { displayName = "MidnightControls v$project.version - Fabric $project.minecraft_version" releaseType = "$project.release_type" changelog = releaseChangelog() gameVersions = [] gameLoaders = ["fabric","quilt"] mainPublication remapJar relations { includes { curseforge = "midnightlib" modrinth = "midnightlib" } } var CURSEFORGE_TOKEN = project.findProperty("CURSEFORGE_TOKEN") ?: System.getenv("CURSEFORGE_TOKEN") if (CURSEFORGE_TOKEN != null) { curseforge { token = CURSEFORGE_TOKEN id = rootProject.curseforge_id gameVersions.addAll "Java 21", project.minecraft_version } } var MODRINTH_TOKEN = project.findProperty("MODRINTH_TOKEN") ?: System.getenv("MODRINTH_TOKEN") if (MODRINTH_TOKEN != null) { modrinth { token = MODRINTH_TOKEN id = rootProject.modrinth_id version = "$project.version" gameVersions.addAll project.minecraft_version } } } }