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 "8.1.1" } //Constants: val baseGroup: String by project val mcVersion: String by project val mod_version: String by project val mixinGroup = "$baseGroup.mixin" val modid: String by project // Toolchains: java { toolchain.languageVersion.set(JavaLanguageVersion.of(8)) withSourcesJar() } // Minecraft configuration: loom { log4jConfigs.from(file("log4j2.xml")) launchConfigs { "client" { // If you don't want mixins, remove these lines property("mixin.debug", "true") property("asmhelper.verbose", "true") arg("--tweakClass", "org.spongepowered.asm.launch.MixinTweaker") arg("--mixin", "mixins.$modid.json") } } forge { pack200Provider.set(dev.architectury.pack200.java.Pack200Adapter()) // If you don't want mixins, remove this lines mixinConfig("mixins.$modid.json") } // If you don't want mixins, remove these lines mixin { defaultRefmapName.set("mixins.$modid.refmap.json") } } // Dependencies: repositories { mavenCentral() maven("https://repo.spongepowered.org/maven/") // If you don't want to log in with your real minecraft account, remove this line maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1") maven("https://maven.notenoughupdates.org/releases/") } val shadowImpl: Configuration by configurations.creating { configurations.implementation.get().extendsFrom(this) } dependencies { implementation(project(":common")) 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") // If you don't want mixins, remove these lines shadowImpl("org.spongepowered:mixin:0.7.11-SNAPSHOT") { isTransitive = false } shadowImpl("org.notenoughupdates.moulconfig:MoulConfig:1.3.0") // testMod("org.notenoughupdates.moulconfig:MoulConfig:1.3.0:test") annotationProcessor("org.spongepowered:mixin:0.8.5-SNAPSHOT") // If you don't want to log in with your real minecraft account, remove this line runtimeOnly("me.djtheredstoner:DevAuth-forge-legacy:1.1.2") } // Tasks: tasks.withType(JavaCompile::class) { options.encoding = "UTF-8" } tasks.withType(Jar::class) { archiveBaseName.set("forge-$mod_version") manifest.attributes.run { this["FMLCorePluginContainsFMLMod"] = "true" this["ForceLoadAsMod"] = "true" // If you don't want mixins, remove these lines this["TweakClass"] = "org.spongepowered.asm.launch.MixinTweaker" this["MixinConfigs"] = "mixins.$modid.json" } } tasks.processResources { inputs.property("mod_version", project.version) inputs.property("mcversion", mcVersion) inputs.property("modid", modid) inputs.property("mixinGroup", mixinGroup) filesMatching(listOf("mcmod.info", "mixins.$modid.json")) { expand(inputs.properties) } rename("(.+_at.cfg)", "META-INF/$1") } val remapJar by tasks.named("remapJar") { archiveClassifier.set("") from(tasks.shadowJar) input.set(tasks.shadowJar.get().archiveFile) } tasks.jar { archiveClassifier.set("without-deps") destinationDirectory.set(layout.buildDirectory.dir("badjars")) } tasks.shadowJar { destinationDirectory.set(layout.buildDirectory.dir("badjars")) archiveClassifier.set("all-dev") configurations = listOf(shadowImpl) relocate("io.github.moulberry.moulconfig", "de.hype.bbsentials.deps.moulconfig") doLast { configurations.forEach { println("Copying jars into mod: ${it.files}") } } // If you want to include other dependencies and shadow them, you can relocate them in here fun relocate(name: String) = relocate(name, "$baseGroup.deps.$name") } sourceSets { main { java { srcDir(project(":common").sourceSets["main"].java.srcDirs) } resources { srcDir(project(":common").sourceSets["main"].resources.srcDirs) } } } tasks.assemble.get().dependsOn(tasks.remapJar)