plugins {
    id 'idea'
    id 'maven-publish'
    id 'net.minecraftforge.gradle'
    id 'org.spongepowered.mixin'
}
base {
    archivesName = "${mod_name}-forge-${minecraft_version}"
}
mixin {
    add(sourceSets.main, "${mod_id}.refmap.json")

    config("${mod_id}.mixins.json")
    config("${mod_id}.forge.mixins.json")
}

minecraft {
    mappings channel: 'official', version: minecraft_version

    // Automatically enable forge AccessTransformers if the file exists
    // This location is hardcoded in Forge and can not be changed.
    // https://github.com/MinecraftForge/MinecraftForge/blob/be1698bb1554f9c8fa2f58e32b9ab70bc4385e60/fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ModFile.java#L123
    if (file('src/main/resources/META-INF/accesstransformer.cfg').exists()) {
        accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
    }

    runs {
        client {
            workingDirectory project.file('run')
            ideaModule "${rootProject.name}.${project.name}.main"
            taskName 'Client'
            property 'mixin.env.remapRefMap', 'true'
            property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
            mods {
                modClientRun {
                    source sourceSets.main
                    source project(":common").sourceSets.main
                }
            }
        }

        server {
            workingDirectory project.file('run')
            ideaModule "${rootProject.name}.${project.name}.main"
            taskName 'Server'
            property 'mixin.env.remapRefMap', 'true'
            property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
            mods {
                modServerRun {
                    source sourceSets.main
                    source project(":common").sourceSets.main
                }
            }
        }

        data {
            workingDirectory project.file('run')
            ideaModule "${rootProject.name}.${project.name}.main"
            args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
            taskName 'Data'
            property 'mixin.env.remapRefMap', 'true'
            property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
            mods {
                modDataRun {
                    source sourceSets.main
                    source project(":common").sourceSets.main
                }
            }
        }
    }
}

sourceSets.main.resources.srcDir 'src/generated/resources'

dependencies {
    minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
    compileOnly project(":common")
    annotationProcessor("org.spongepowered:mixin:0.8.5-SNAPSHOT:processor")
}

tasks.withType(JavaCompile).configureEach {
    source(project(":common").sourceSets.main.allSource)
}
tasks.withType(Javadoc).configureEach {
    source(project(":common").sourceSets.main.allJava)
}
tasks.named("sourcesJar", Jar) {
    from(project(":common").sourceSets.main.allSource)
}

processResources {
    from project(":common").sourceSets.main.resources
}

jar.finalizedBy('reobfJar')

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifactId base.archivesName.get()
            from components.java
            fg.component(it)
        }
    }
    repositories {
        maven {
            url "file://" + System.getenv("local_maven")
        }
    }
}
