plugins { idea java id("gg.essential.loom") version "0.10.0.+" id("dev.architectury.architectury-pack200") version "0.1.3" id("com.github.johnrengelman.shadow") version "7.1.2" kotlin("jvm") version "1.7.10" kotlin("plugin.serialization") version "1.7.10" `maven-publish` signing } group = "moe.nea" version = "1.3.0" // Toolchains: java { toolchain.languageVersion.set(JavaLanguageVersion.of(8)) } sourceSets.main { output.setResourcesDir(file("$buildDir/classes/kotlin/main")) } // Dependencies: repositories { mavenCentral() mavenLocal() maven("https://jitpack.io/") { content { includeGroupByRegex("(com|io)\\.github\\..+") } } maven("https://repo.nea.moe/releases/") maven("https://repo.spongepowered.org/maven/") maven("https://maven.notenoughupdates.org/releases") maven("https://repo.polyfrost.cc/releases") maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1") } val shadowImpl: Configuration by configurations.creating { configurations.implementation.get().extendsFrom(this) } val shadowModImpl: Configuration by configurations.creating { configurations.modImplementation.get().extendsFrom(this) } val runtimeMod by configurations.creating { isTransitive = false isVisible = false } dependencies { minecraft("com.mojang:minecraft:1.8.9") mappings("de.oceanlabs.mcp:mcp_stable:22-1.8.9") forge("net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9") shadowImpl("org.spongepowered:mixin:0.7.11-SNAPSHOT") { isTransitive = false } compileOnly("cc.polyfrost:oneconfig-1.8.9-forge:0.1.0-alpha+") // Should not be included in jar shadowImpl("cc.polyfrost:oneconfig-wrapper-launchwrapper:1.0.0-beta+") // Should be included in jar annotationProcessor("org.spongepowered:mixin:0.8.4-SNAPSHOT") runtimeOnly("me.djtheredstoner:DevAuth-forge-legacy:1.1.0") shadowImpl("moe.nea:libautoupdate:1.2.0") shadowModImpl("org.notenoughupdates.moulconfig:legacy:3.0.0-beta.7") modCompileOnly(runtimeMod("com.github.notenoughupdates:notenoughupdates:20821e6:all") { isTransitive = false }!!) { isTransitive = false } } // Minecraft configuration: loom { log4jConfigs.from(file("log4j2.xml")) launchConfigs { "client" { property("mixin.debug", "true") property("moulconfig.warn.crash", "false") arg("--tweakClass", "cc.polyfrost.oneconfig.loader.stage0.LaunchWrapperTweaker") arg("--tweakClass", "io.github.notenoughupdates.moulconfig.tweaker.DevelopmentResourceTweaker") arg("--mixin", "mixins.neuhax.json") val modFiles = runtimeMod.files arg("--mods", modFiles.joinToString(",") { it.relativeTo(file("run")).path }) } } runConfigs { delete("server") } forge { pack200Provider.set(dev.architectury.pack200.java.Pack200Adapter()) mixinConfig("mixins.neuhax.json") } @Suppress("UnstableApiUsage") mixin { defaultRefmapName.set("mixins.neuhax.refmap.json") } } // Tasks: tasks.withType(JavaCompile::class) { options.encoding = "UTF-8" } tasks.withType(Jar::class) { destinationDirectory.set(project.layout.buildDirectory.dir("badjars")) archiveBaseName.set("sky.nea.moe") manifest.attributes.run { this["FMLCorePluginContainsFMLMod"] = "true" this["ForceLoadAsMod"] = "true" this["TweakClass"] = "cc.polyfrost.oneconfig.loader.stage0.LaunchWrapperTweaker" this["MixinConfigs"] = "mixins.neuhax.json" } } val remapJar by tasks.named("remapJar") { archiveClassifier.set("thicc") from(tasks.shadowJar) input.set(tasks.shadowJar.get().archiveFile) } tasks.shadowJar { destinationDirectory.set(project.layout.buildDirectory.dir("badjars")) archiveClassifier.set("all-dev") configurations = listOf(shadowImpl, shadowModImpl) relocate("moe.nea.libautoupdate", "moe.nea.sky.dep.libautoupdate") relocate("io.github.moulberry.moulconfig", "moe.nea.sky.dep.moulconfig") mergeServiceFiles() } tasks.assemble.get().dependsOn(tasks.remapJar) tasks.processResources { inputs.property("version", version) filesMatching("mcmod.info") { expand("version" to version) } } publishing { publications { create("maven") { artifact(tasks.remapJar) { classifier = "" } artifact(tasks.jar) { classifier = "named" } pom { name.set(project.name) description.set("Quality of Life Addons of dubious legality for NotEnoughUpdates") licenses { license { name.set("GPL-3.0-or-later") } } developers { developer { name.set("Linnea Gräf") } } scm { url.set("https://git.nea.moe/nea/neuhax") } } } } } signing { useGpgCmd() sign(publishing.publications["maven"]) }