diff --git a/build.gradle.kts b/build.gradle.kts index 0764bd2..a5ae084 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -33,15 +33,52 @@ subprojects { group = rootProject.group.toString() lateinit var mappingsDep: Dependency apply(plugin = "dev.architectury.loom") + extensions.configure("loom") { + mappingsDep = officialMojangMappings() + silentMojangMappingsLicense() + mixinConfig("snowygui-mixins.json") + refmapName = "snowygui-common-refmap.json" + } apply(plugin = "com.github.johnrengelman.shadow") val shadowC by configurations.creating + repositories { maven(url = "https://jitpack.io"); mavenCentral() } + dependencies { + implementation("$kotlinX:kotlinx-coroutines-core:1.5.0-RC") + listOf( + "$kotlinX:kotlinx-datetime:0.2.0", + "com.typesafe:config:1.4.1", + "io.github.config4k:config4k:0.4.2", + "org.jetbrains:annotations:20.1.0" + ).forEach { implementation(it); shadowC(it) { isTransitive = false; } } + "minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}") + "mappings"(mappingsDep) + } tasks { - withType(ShadowJar::class) { this.configurations = listOf(shadowC) } + apply(plugin = "net.kyori.indra.git") + withType(Jar::class) { + from("$rootDir/LICENSE.txt") + indraGit.applyVcsInformationToManifest(manifest) + archiveBaseName.set("${rootProject.name}-${rootProject.version}") + } + withType(ShadowJar::class) { + this.configurations = listOf(shadowC) + relocate("kotlinx.datetime", "${rootProject.group}.datetime") + relocate("org.jetbrains", "${rootProject.group}.jetbrainslibs") + relocate("javassist", "${rootProject.group}.javassist") + relocate("org.reflections8", "${rootProject.group}.reflectionlib") + relocate("com.typesafe.config", "${rootProject.group}.typesafe.config") + relocate("io.github.config4k", "${rootProject.group}.config4k") + relocate("net.arikia.dev.drpc", "${rootProject.group}.drpc") + exclude("**/*.kotlin_metadata") + exclude("**/*.kotlin_builtins") + exclude("META-INF/maven/**/*") + archiveClassifier.set("shadow") + } + val shadowJar = getByName("shadowJar") as ShadowJar val shrinkJar = register("shrinkJar", proguard.gradle.ProGuardTask::class) { group = this@subprojects.group as String val dictionariesDir = "$rootDir/obfuscation" - val remapJar = this@tasks.getByName("remapJar") - injars(remapJar) - outjars("$rootDir/shrinkedJars/${remapJar.outputs.files.singleFile.name}") + injars(shadowJar) + outjars("$rootDir/shrinkedJars/${shadowJar.outputs.files.singleFile.name}") keep("class $group.snowygui.mixins.* { * ; }") keep("class $group.snowygui.fabric.**") keep("class $group.snowygui.forge.**") @@ -56,7 +93,6 @@ subprojects { allowaccessmodification() adaptclassstrings() "$group.**".also { dontnote(it); dontwarn(it) } - dontwarn("net.minecraft.**"); dontwarn("com.mojang.**") // kotlinx-serialization related configuration: dontnote("kotlinx.serialization.AnnotationsKt") @@ -66,9 +102,11 @@ subprojects { keepclasseswithmembers("class $group.snowygui.** { kotlinx.serialization.KSerializer serializer(...); }") val homeDir = System.getProperty("java.home") as String - libraryjars(configurations.runtimeClasspath.get().filterNot { file -> - shadowC.contains(file) - }) + doFirst { + libraryjars(configurations.runtimeClasspath.get().filterNot { file -> + shadowC.contains(file) + }) + } if (JavaVersion.current().isJava9Compatible) { val jmodsLocations = setOf( "$homeDir/jmods/java.base.jmod", @@ -86,25 +124,14 @@ subprojects { overloadaggressively() mergeinterfacesaggressively() } - if (this@subprojects.name != "common") build.get().finalizedBy(shrinkJar) - } - extensions.configure("loom") { - mappingsDep = officialMojangMappings() - silentMojangMappingsLicense() - mixinConfig("snowygui-mixins.json") - refmapName = "snowygui-common-refmap.json" - } - repositories { maven(url = "https://jitpack.io") } - dependencies { - implementation("$kotlinX:kotlinx-coroutines-core:1.5.0-RC") - listOf( - "$kotlinX:kotlinx-datetime:0.2.0", - "com.typesafe:config:1.4.1", - "io.github.config4k:config4k:0.4.2", - "org.jetbrains:annotations:20.1.0" - ).forEach { implementation(it); shadowC(it) { isTransitive = false; } } - "minecraft"("com.mojang:minecraft:${rootProject.property("minecraft")}") - "mappings"(mappingsDep) + withType(net.fabricmc.loom.task.RemapJarTask::class) { + dependsOn(shrinkJar) + val shrinkedJar = shrinkJar.get().outJarFileCollection.singleFile + archiveBaseName.set(shadowJar.archiveBaseName) + archiveClassifier.set(this@subprojects.name) + input.set(shrinkedJar) + if (!archiveFileName.get().contains("common")) destinationDirectory.set(file("$rootDir/remappedJars")) + } } } @@ -143,25 +170,6 @@ allprojects { } } tasks { - withType(ShadowJar::class) { - relocate("kotlinx.datetime", "${rootProject.group}.datetime") - relocate("org.jetbrains", "${rootProject.group}.jetbrainslibs") - relocate("javassist", "${rootProject.group}.javassist") - relocate("org.reflections8", "${rootProject.group}.reflectionlib") - relocate("com.typesafe.config", "${rootProject.group}.typesafe.config") - relocate("io.github.config4k", "${rootProject.group}.config4k") - relocate("net.arikia.dev.drpc", "${rootProject.group}.drpc") - exclude("**/*.kotlin_metadata") - exclude("**/*.kotlin_builtins") - exclude("META-INF/maven/**/*") - archiveClassifier.set("shadow") - } - apply(plugin = "net.kyori.indra.git") - withType(Jar::class) { - from("$rootDir/LICENSE.txt") - indraGit.applyVcsInformationToManifest(manifest) - archiveBaseName.set("${rootProject.name}-${rootProject.version}") - } withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class) { with(kotlinOptions) { freeCompilerArgs = listOf("-Xjvm-default=all", "-Xlambdas=indy") @@ -182,14 +190,6 @@ allprojects { compilerArgs.addAll(listOf("-Xplugin:jabel", "--release", javaVer)) } } - withType(net.fabricmc.loom.task.RemapJarTask::class) { - val shadowTask = getByName("shadowJar") as ShadowJar - dependsOn(shadowTask) - archiveBaseName.set(shadowTask.archiveBaseName) - input.set(shadowTask.archiveFile) - archiveClassifier.set(this@allprojects.name) - if (!archiveFileName.get().contains("common")) destinationDirectory.set(file("$rootDir/remappedJars")) - } withType(ProcessResources::class) { with(project(":common").sourceSets.main.get().resources.srcDirs) { if (!sourceSets.main.get().resources.srcDirs.containsAll(this)) { @@ -218,10 +218,7 @@ allprojects { } tasks { - listOf( - file("remappedJars"), - file("shrinkedJars") - ).forEach { if (it.exists()) clean.get().delete.add(it) } + file("remappedJars").let { if (it.exists()) clean.get().delete.add(it) } val publishToModrinth = register("publishtoModrinth") { val envStr: String? = System.getenv("MODRINTH") onlyIf { envStr != null } @@ -233,7 +230,7 @@ tasks { versionType = VersionType.ALPHA detectLoaders = false versionName = "${project.name} $versionNumber for Minecraft $gameVersions and higher" - fileTree("$rootDir/shrinkedJars/").files.forEach { + fileTree("$rootDir/remappedJars/").files.forEach { with(it.name) { when { contains("fabric") -> uploadFile = it