plugins { id 'java' id 'com.github.johnrengelman.shadow' version '8.0.0' apply false id "xyz.wagyourtail.unimined" version "1.1.0-SNAPSHOT" apply false id "me.hypherionmc.modutils.modpublisher" version "1.0.23+" id 'maven-publish' } ext { release = project.properties['release'] ?: false } var base_version = "${version_major}.${version_minor}" var final_version = "${base_version}.${version_patch}" // CI Support if (!release && System.getenv('BUILD_NUMBER') != null) { final_version = "${base_version}.${System.getenv('BUILD_NUMBER')}d" } group = project_group version = "${final_version}" subprojects { apply plugin: "xyz.wagyourtail.unimined" apply plugin: "java" apply plugin: 'maven-publish' apply plugin: 'com.github.johnrengelman.shadow' apply plugin: 'me.hypherionmc.modutils.modpublisher' group = rootProject.group version = rootProject.version sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 repositories { mavenCentral() maven { name = 'First Dark Maven' url = 'https://maven.firstdark.dev/releases/' } maven { name = 'First Dark Mirror' url = 'https://mcentral.firstdark.dev/releases/' } } configurations { shade modCompileOnly implementation.extendsFrom shade compileOnly.extendsFrom modCompileOnly } dependencies { implementation "me.hypherionmc.moon-config:core:${moon_config}" implementation "me.hypherionmc.moon-config:toml:${moon_config}" shade "net.kyori:adventure-api:4.16.0" shade "net.kyori:adventure-text-serializer-gson:4.16.0" compileOnly("org.projectlombok:lombok:${lombok}") annotationProcessor("org.projectlombok:lombok:${lombok}") } jar { manifest { attributes([ 'Specification-Title' : mod_name, 'Specification-Vendor' : mod_author, 'Specification-Version' : project.jar.archiveVersion, 'Implementation-Title' : project.name, 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_author, 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), 'Timestamp' : System.currentTimeMillis(), 'Built-On-Java' : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})", 'Build-On-Minecraft' : minecraft_version ]) } } /** * =============================================================================== * = DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING = * =============================================================================== */ unimined.minecraft(sourceSets.main, true) { version minecraft_version mappings { mojmap() devNamespace "mojmap" } } tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' it.options.release = 17 } tasks.withType(GenerateModuleMetadata) { enabled = false } clean { delete "$rootDir/artifacts" } if (project.name !== 'Common') { tasks.register('delDevJar') { doLast { def tree = fileTree('build/libs') tree.include '**/*-dev-shadow.jar' tree.include '**/*-dev.jar' tree.include '**/*-all.jar' tree.include '**/*-slim.jar' tree.each { it.delete() } } } build.finalizedBy delDevJar tasks.register('copyAllArtifacts', Copy) { from "$buildDir/libs" into "$rootDir/artifacts" include("*.jar") } build.finalizedBy(copyAllArtifacts) } } // Standalone or Module JARS tasks.register('rpcJar', Jar) { dependsOn(compileJava) includeEmptyDirs = false archivesBaseName = "${mod_name}-modules-${minecraft_version}" version = final_version setArchiveClassifier("rpc") from project(":Common").sourceSets.main.output } tasks.register('configJar', Jar) { dependsOn(compileJava) includeEmptyDirs = false archivesBaseName = "${mod_name}-modules-${minecraft_version}" version = final_version setArchiveClassifier("config") from project(":Common").sourceSets.main.output include("**\\core\\config\\**\\*", "**\\**\\CraterConstants.*") } tasks.register('eventsJar', Jar) { dependsOn(compileJava) includeEmptyDirs = false archivesBaseName = "${mod_name}-modules-${minecraft_version}" version = final_version setArchiveClassifier("events") from project(":Common").sourceSets.main.output include("**\\core\\event\\**\\*", "**\\**\\CraterConstants.*") } publishing { publications { mavenJava(MavenPublication) { groupId project.group artifactId "${mod_name}-modules-${minecraft_version}" version project.version artifact rpcJar artifact eventsJar artifact configJar } } repositories { maven { url "https://maven.firstdark.dev/" + (project.release ? "releases" : "snapshots") credentials { username System.getenv("MAVEN_USER") password System.getenv("MAVEN_PASS") } } } }