
The loom mixin extension adds the mixin to the launch arguments automatically. Adding it in the launch config causes the argument to be added twice, which breaks launch logic. Adding the argument twice causes the first command line argument after the second mixin addition to be parsed incorrectly and therefore ignored.
135 lines
3.7 KiB
Kotlin
135 lines
3.7 KiB
Kotlin
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 version: String by project
|
|
val mixinGroup = "$baseGroup.mixin"
|
|
val modid: String by project
|
|
|
|
// Toolchains:
|
|
java {
|
|
toolchain.languageVersion.set(JavaLanguageVersion.of(8))
|
|
}
|
|
|
|
// 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")
|
|
}
|
|
}
|
|
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")
|
|
}
|
|
}
|
|
|
|
sourceSets.main {
|
|
output.resourcesDir = file("$buildDir/classes/java/main")
|
|
}
|
|
|
|
// 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")
|
|
}
|
|
|
|
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")
|
|
|
|
// If you don't want mixins, remove these lines
|
|
shadowImpl("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
|
|
isTransitive = false
|
|
}
|
|
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(modid)
|
|
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("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<net.fabricmc.loom.task.RemapJarTask>("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)
|
|
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")
|
|
}
|
|
|
|
tasks.assemble.get().dependsOn(tasks.remapJar)
|
|
|