buildscript {
    repositories {
        jcenter()

        maven {
            url = "https://files.minecraftforge.net/maven"
        }
    }

    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
        classpath "com.github.jengelman.gradle.plugins:shadow:1.2.3"
    }
}

apply plugin: 'net.minecraftforge.gradle.forge'
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.

apply plugin: "com.github.johnrengelman.shadow"

version = "3.2.1"
group = "me.rigamortis"
archivesBaseName = "seppuku"
def buildmode = "IDE"

sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
compileJava {
    sourceCompatibility = targetCompatibility = '1.8'
}

idea {
    module {
        inheritOutputDirs = false
        outputDir = compileJava.destinationDir
        testOutputDir = compileTestJava.destinationDir
    }
}

minecraft {
    version = "1.12.2-14.23.5.2847"
    runDir = "run"

    // the mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   snapshot are built nightly.
    // stable_#            stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // simply re-run your setup task after changing the mappings to update your workspace.
    mappings = "stable_39"
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
}

dependencies {
    compile group: "com.googlecode.json-simple", name: "json-simple", version: "1.1.1"
}

jar {
    manifest {
        attributes 'FMLCorePlugin': 'me.rigamortis.seppuku.impl.fml.core.SeppukuLoadingPlugin'
        attributes 'FMLCorePluginContainsFMLMod': 'true'
        attributes 'FMLAT': 'seppuku_at.cfg'
    }
}

reobf {
    jar {
        mappingType = 'SEARGE'
    }

    shadowJar {
        //mappingType = 'NOTCH'
        mappingType = 'SEARGE'
        classpath = sourceSets.main.compileClasspath
    }
}

shadowJar {
    dependencies {
        include(dependency('com.googlecode.json-simple:json-simple:1.1.1'))
        include(dependency('net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'))
    }

    manifest {
        attributes 'FMLCorePlugin': 'me.rigamortis.seppuku.impl.fml.core.SeppukuLoadingPlugin'
        attributes 'FMLCorePluginContainsFMLMod': 'true'
        attributes 'FMLAT': 'seppuku_at.cfg'
    }

    exclude 'dummyThing'
    exclude 'LICENSE.txt'
    classifier = 'full'
}

task signJar(type: SignJar, dependsOn: reobfJar) {
    onlyIf {
        project.hasProperty('keyStore')
    }

    keyStore = project.findProperty('keyStore')
    alias = project.findProperty('keyStoreAlias')
    storePass = project.findProperty('keyStorePass')
    keyPass = project.findProperty('keyStoreKeyPass')
    inputFile = jar.archivePath
    outputFile = jar.archivePath
}

build.dependsOn {
    [
            'shadowJar',
            'reobfShadowJar',
            'signJar'
    ]
}

processResources {
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include 'mcmod.info'

        // replace version and mcversion
        expand 'version': project.version, 'mcversion': project.minecraft.version
    }

    // copy everything else except the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }
}

if (buildmode == "IDE") {
    sourceSets {
        main(({
            output.resourcesDir = output.classesDir
        }))
    }
}
