import org.apache.commons.lang3.SystemUtils plugins { idea java id("gg.essential.loom") version "0.10.0.5" id("dev.architectury.architectury-pack200") version "0.1.3" id("com.github.johnrengelman.shadow") version "8.1.1" } val baseGroup: String by project val mcVersion: String by project val version: String by project val mixinGroup = "$baseGroup.mixin" val modid: String by project java { toolchain.languageVersion.set(JavaLanguageVersion.of(8)) } loom { log4jConfigs.from(file("log4j2.xml")) launchConfigs { "client" { property("mixin.debug", "true") arg("--tweakClass", "org.spongepowered.asm.launch.MixinTweaker") } } runConfigs { "client" { if (SystemUtils.IS_OS_MAC_OSX) { vmArgs.remove("-XstartOnFirstThread") } } remove(getByName("server")) } forge { pack200Provider.set(dev.architectury.pack200.java.Pack200Adapter()) mixinConfig("mixins.raven.json") } mixin { defaultRefmapName.set("mixins.raven.refmap.json") } } sourceSets.main { output.setResourcesDir(sourceSets.main.flatMap { it.java.classesDirectory }) } repositories { mavenCentral() maven("https://repo.spongepowered.org/maven/") } val shadowImpl: Configuration by configurations.creating { configurations.implementation.get().extendsFrom(this) } 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 exclude(module = "gson") exclude(module = "guava") exclude(module = "jarjar") exclude(module = "commons-codec") exclude(module = "commons-io") exclude(module = "launchwrapper") exclude(module = "asm-commons") exclude(module = "slf4j-api") } annotationProcessor("org.spongepowered:mixin:0.8.5-SNAPSHOT") shadowImpl("org.java-websocket:Java-WebSocket:1.6.0") } tasks.withType(JavaCompile::class) { options.encoding = "UTF-8" } tasks.withType(org.gradle.jvm.tasks.Jar::class) { archiveBaseName.set(modid) manifest.attributes.run { this["FMLCorePluginContainsFMLMod"] = "true" this["ForceLoadAsMod"] = "true" this["TweakClass"] = "org.spongepowered.asm.launch.MixinTweaker" this["MixinConfigs"] = "mixins.raven.json" } } tasks.processResources { inputs.property("version", project.version) inputs.property("mcversion", mcVersion) inputs.property("modid", modid) inputs.property("basePackage", baseGroup) filesMatching(listOf("mcmod.info", "mixins.raven.json")) { expand(inputs.properties) } rename("accesstransformer.cfg", "META-INF/${modid}_at.cfg") } 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("intermediates")) } tasks.shadowJar { destinationDirectory.set(layout.buildDirectory.dir("intermediates")) archiveClassifier.set("non-obfuscated-with-deps") configurations = listOf(shadowImpl) exclude( "dummyThing", "LICENSE.txt", "META-INF/MUMFREY.RSA", "META-INF/maven/**", "org/**/*.html", "LICENSE.md", "pack.mcmeta", "**/module-info.class", "*.so", "*.dylib", "*.dll", "*.jnilib", "ibxm/**", "com/jcraft/**", "org/lwjgl/**", "net/java/**", "META-INF/proguard/**", "META-INF/versions/**", "META-INF/com.android.tools/**", "fabric.mod.json" ) doLast { configurations.forEach { println("Copying dependencies into mod: ${it.files}") } } fun relocate(name: String) = relocate(name, "$baseGroup.deps.$name") } tasks.assemble.get().dependsOn(tasks.remapJar)