plugins {
    id "maven-publish"
    id 'java-library'
    id 'net.neoforged.moddev' version '2.0.78'
}

tasks.named('wrapper', Wrapper).configure {
    distributionType = Wrapper.DistributionType.BIN
}

base {
    archivesName = project.archives_base_name
}

version = project.mod_version
group = project.maven_group

java {
    sourceCompatibility = targetCompatibility = JavaVersion.VERSION_21
}

neoForge {
    version = project.neo_version
    accessTransformers {
        publish(project.file('src/main/resources/META-INF/accesstransformer.cfg'))
    }


    runs {
        configureEach {
            logLevel = org.slf4j.event.Level.INFO
        }

        client {
            client()

            gameDirectory = file 'run'
            systemProperty 'neoforge.enabledGameTestNamespaces', mod_id
        }

        server {
            server()
            programArgument('--nogui')
            gameDirectory = file 'server'
        }
    }

    mods {
        "${mod_id}" {
            sourceSet(sourceSets.main)
        }
    }

    parchment {
        minecraftVersion = parchment_mc_version
        mappingsVersion = parchment_mapping_version
    }
}

sourceSets.main.resources {srcDir("src/generated/resources")}

configurations {
    runtimeClasspath.extendsFrom localRuntime
}

repositories {
    maven {
        name = "Lat's Maven (Rhino, KubeJS)"
        url = "https://maven.latvian.dev/releases"
    }
    // This is needed for an animated gif lib... Don't know why something requires it.
    maven {
        url 'https://jitpack.io'
        content {
            includeGroup "com.github.rtyley"
        }
    }
}

dependencies {
    /* Kube Dependencies */
    implementation(accessTransformers(interfaceInjectionData("dev.latvian.mods:kubejs-neoforge:${kjs_ver}")))

}

processResources {
    inputs.property "version", project.version
    filesMatching("META-INF/neoforge.mods.toml") {
        expand "version": project.version
    }
}

java {
    sourceCompatibility = JavaVersion.VERSION_21
    withSourcesJar()
}

compileJava {
    options.encoding = 'UTF-8'
    options.release.set(21)
}

jar {
    manifest {
        attributes([
                "Specification-Title"     : project.mod_id,
                "Specification-Vendor"    : project.mod_author,
                "Specification-Version"   : "1",
                "Implementation-Title"    : project.name,
                "Implementation-Version"  : version,
                "Implementation-Vendor"   : project.mod_author,
                "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }
}


publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }

    repositories {
    }
}
