// this whole shit is required because you can't have non-mods be
// loaded on the GAME layer in Minecraft Forge, and hence,
// Kommons can not see Kotlin at runtime (because Kommons being
// loaded with system classloader, while Kotlin is loaded by
// FML classloader).

plugins {
    kotlin("jvm")
    id("net.minecraftforge.gradle").version("[6.0.14,6.2)")
    `maven-publish`
}

repositories {
    mavenCentral()
}

dependencies {
    minecraft("net.minecraftforge:forge:1.20.2-48.1.0")

    testImplementation("org.jetbrains.kotlin:kotlin-test")

    implementation(project(":")) { setTransitive(false) }
    implementation(project(":gson")) { setTransitive(false) }
    implementation(project(":guava")) { setTransitive(false) }
}

tasks.jar {
    dependsOn(":jar")
    dependsOn(":gson:jar")
    dependsOn(":guava:jar")
    from(zipTree(project(":").tasks.jar.get().outputs.files.asPath))
    from(zipTree(project(":gson").tasks.jar.get().outputs.files.asPath))
    from(zipTree(project(":guava").tasks.jar.get().outputs.files.asPath))
}

minecraft {
    mappings("official", "1.20.2")
}

val projectVersion: String by project

publishing {
    publications {
        create<MavenPublication>("mavenJava") {
            from(components["java"])
            artifact(tasks["sourceJar"])
            artifactId = "kommons-mc"

            pom {
                dependencies {

                }
            }
        }
    }
}

tasks.withType(ProcessResources::class.java) {
    val replaceProperties = mapOf("mod_version"	to projectVersion)
    inputs.properties(replaceProperties)

    filesMatching(arrayListOf("META-INF/mods.toml")) {
        expand(replaceProperties)
    }
}