import net.fabricmc.loom.task.RemapJarTask import java.text.SimpleDateFormat plugins { id 'fabric-loom' version '0.2.7-SNAPSHOT' id 'maven-publish' id 'net.minecrell.licenser' version '0.4.1' id 'com.matthewprenger.cursegradle' version '1.4.0' } sourceCompatibility = targetCompatibility = 1.8 archivesBaseName = "RoughlyEnoughItems" group = "me.shedaniel" def forceVersion = "" version = forceVersion != "" ? forceVersion : project.mod_version def includeDep = true minecraft { accessWidener = file("src/main/resources/rei.aw") } static def buildTime() { def df = new SimpleDateFormat("yyyyMMddHHmm") df.setTimeZone(TimeZone.getTimeZone("UTC")) return df.format(new Date()) } license { header rootProject.file('HEADER') include '**/*.java' } repositories { } jar { from "LICENSE" } processResources { filesMatching('fabric.mod.json') { expand 'version': project.version } inputs.property "version", project.version } dependencies { minecraft("com.mojang:minecraft:${project.minecraft_version}") mappings("net.fabricmc:yarn:${project.yarn_version}:v2") modApi("net.fabricmc:fabric-loader:${project.fabricloader_version}") modApi("net.fabricmc.fabric-api:fabric-api:${project.fabric_api}") modApi("me.shedaniel.cloth:cloth-events:${cloth_events_version}") { transitive = false } modImplementation("me.shedaniel.cloth:config-2:${cloth_config_version}") { exclude module: "fabric-api" } modApi("me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig1u}") { exclude module: "fabric-api" } modApi("org.jetbrains:annotations:18.0.0") modCompileOnly("io.github.prospector:modmenu:${modmenu_version}") { transitive = false } modRuntime("io.github.prospector:modmenu:${modmenu_version}") { transitive = false } if (includeDep) { afterEvaluate { def listAdded = new ArrayList(Arrays.asList((api_exculde as String).split(','))) def eachDep = { dep -> for (apiIncludeDepStr in (api_include as String).split(',')) { def apiIncludeGroup = apiIncludeDepStr.split(':')[0] def apiIncludeDep = apiIncludeDepStr.split(':')[1] if (dep.module.id.group == apiIncludeGroup && dep.module.id.name.startsWith(apiIncludeDep)) { def version = dep.module.id.version.indexOf('@') >= 0 ? dep.module.id.version.substring(0, dep.module.id.version.indexOf('@')) : dep.module.id.version def mavenDep = "${dep.module.id.group}:${dep.module.id.name}:$version" if (!(mavenDep in listAdded)) { include(mavenDep) { transitive = false } listAdded.add(mavenDep) } break } } } configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each eachDep configurations.runtimeClasspath.resolvedConfiguration.firstLevelModuleDependencies.each eachDep } } } task sourcesJar(type: Jar, dependsOn: classes) { classifier = "sources" from sourceSets.main.allSource } task remapMavenJar(type: RemapJarTask, dependsOn: jar) { // classifier = "maven" afterEvaluate { //noinspection GroovyAccessibility input = file("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar") archiveName = "${archivesBaseName}-${version}.jar" //noinspection GroovyAccessibility addNestedDependencies = false } } def releaseChangelog = "No changelog" /* Thank you modmenu & fablabs */ task releaseOnCf { def df = new SimpleDateFormat("yyyy-MM-dd HH:mm") df.setTimeZone(TimeZone.getTimeZone("UTC")) def branch if (System.env.BRANCH_NAME) { branch = System.env.BRANCH_NAME branch = branch.substring(branch.lastIndexOf("/")+1) } else { branch = "git rev-parse --abbrev-ref HEAD".execute().in.text.trim() } if (branch == "HEAD") { branch = "git rev-parse --short HEAD".execute().in.text.trim() } def time = df.format(new Date()) def changes = new StringBuilder() changes << "

REI v$project.version for $project.supported_version

Updated at $time.
Click here for changelog" def proc = "git log --max-count=200 --pretty=format:\"%s\"".execute() proc.in.eachLine { line -> def processedLine = line.toString() if (!processedLine.contains("New translations") && !processedLine.contains("Merge") && !processedLine.contains("branch")) { changes << "
- $processedLine" } } proc.waitFor() releaseChangelog = changes.toString() println(releaseChangelog) dependsOn tasks.getByName("curseforge") } curseforge { if (project.hasProperty('danielshe_curse_api_key') || System.getenv('danielshe_curse_api_key') != null) { apiKey = project.hasProperty('danielshe_curse_api_key') ? project.property('danielshe_curse_api_key') : System.getenv('danielshe_curse_api_key') project { id = '310111' releaseType = 'beta' changelogType = "html" changelog = releaseChangelog addGameVersion '1.16-Snapshot' addGameVersion 'Java 8' addGameVersion 'Fabric' relations { requiredDependency 'fabric-api' embeddedLibrary 'cloth' embeddedLibrary 'cloth-config' } mainArtifact(file("${project.buildDir}/libs/${project.archivesBaseName}-${project.version}.jar")) { displayName = "[Fabric $project.supported_version] v$project.version" } afterEvaluate { uploadTask.dependsOn("remapJar") } } } options { forgeGradleIntegration = false javaVersionAutoDetect = false } } publishing { publications { mavenJava(MavenPublication) { artifact(file("${project.buildDir}/libs/$archivesBaseName-${version}.jar")) { builtBy remapMavenJar } artifact(sourcesJar) { builtBy remapSourcesJar } } } repositories { if (project.hasProperty('danielshe_pass')) { maven { url = "http://deploy.modmuss50.me/" credentials { username = "danielshe" password = project.getProperty('danielshe_pass') } } } } }