buildscript {
    repositories {
        mavenCentral()
        maven {
            name = 'forge'
            url = 'https://files.minecraftforge.net/maven'
        }
        maven {
            name = 'SpongePowered'
            url = 'https://repo.spongepowered.org/maven'
        }
        maven {
            name = 'jitpack.io'
            url = 'https://jitpack.io'
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
        classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT'
        classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.4'
        classpath 'com.formdev:flatlaf:1.5'
    }
}

// project will not compile when set to true but we can see incompatibilities with vanilla mc.
boolean TWEAKER = false

// TODO: double check from time to time if there's forge methods we missed with vanilla source
if (TWEAKER) {
    apply plugin: 'net.minecraftforge.gradle.tweaker-client'
} else {
    apply plugin: 'net.minecraftforge.gradle.forge'
}

apply plugin: 'org.spongepowered.mixin'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'application'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: 'maven'

mainClassName = 'me.earth.earthhack.installer.main.Main'
group project.modGroup //http://maven.apache.org/guides/mini/guide-naming-conventions.html
project.version = '1.8.6'

boolean VANILLA = false
//noinspection GroovyUnusedAssignment
sourceCompatibility = targetCompatibility = '1.8'
compileJava {
    sourceCompatibility = targetCompatibility = '1.8'
}

minecraft {
    if (TWEAKER) {
        version = '1.12.2'
        tweakClass = 'me.earth.earthhack.tweaker.EarthhackTweaker'
    } else {
        version = project.forgeVersion
    }

    runDir = 'run'
    mappings = project.mcpVersion
    makeObfSourceJar = false
}

repositories {
    mavenCentral()
    google()
    maven {
        name = 'spongepowered-repo'
        url = 'https://repo.spongepowered.org/maven'
    }
    maven {
        name = 'jitpack.io'
        url  = 'https://jitpack.io'
    }
}

dependencies {
    compile('org.spongepowered:mixin:0.7.11-SNAPSHOT') {
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
    }

    /*
    Had this in to make a Mixin, not needed anymore, but leaving it here
    compileOnly ('com.github.3arthqu4ke:HeadlessMc:1.5.2') {
        exclude module: 'headlessmc-launcher'
        exclude module: 'headlessmc-lwjgl'
    }
    */

    compile group: 'club.minnced', name: 'java-discord-rpc', version: '2.0.1'
    compile group: 'com.formdev', name: 'flatlaf', version: '1.5'
}


task getDeps(type: Copy) {
    from sourceSets.main.runtimeClasspath
    into 'runtime/'
}

processResources {
    inputs.property 'version', project.version
    inputs.property 'mcversion', project.minecraft.version
    from(sourceSets.main.resources.srcDirs) {
        include 'mcmod.info'
        expand 'version': project.version, 'mcversion': project.minecraft.version
    }

    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }

    rename '(.+_at.cfg)', 'META-INF/$1'
}

task copyShadowJar(type: Copy, dependsOn: subprojects.jar) {
    from(project.shadowJar)
    if (System.getProperty('pb.jar.dir') != null) {
        into project.file(System.getProperty('pb.jar.dir'))
    } else {
        into project.file('build/dummy')
    }
}

shadowJar {
    finalizedBy(copyShadowJar)
    dependencies {
        include(dependency('org.spongepowered:mixin'))
        include(dependency('club.minnced:java-discord-rpc:2.0.1'))
        include(dependency('club.minnced:discord-rpc-release:v3.3.0'))
        include(dependency('com.formdev:flatlaf:1.5'))
    }
    exclude 'dummyThing'
    exclude 'LICENSE.txt'
    exclude '**/*module-info.class'
    exclude '**/META-INF/versions/9/**'
    classifier = 'release'
}

mixin {
    defaultObfuscationEnv searge
    //noinspection GroovyAssignabilityCheck
    add sourceSets.main, 'mixins.earth.refmap.json'
}

reobf {
    shadowJar {
        mappingType = VANILLA ? 'NOTCH' : 'SEARGE'
        classpath = sourceSets.main.compileClasspath
    }
}

jar {
    manifest {
        attributes(
            'Manifest-Version': 1.0,
            'TweakClass': 'me.earth.earthhack.tweaker.EarthhackTweaker',
            'TweakOrder': -999,
            'FMLCorePluginContainsFMLMod': 'true',
            'ForceLoadAsMod': 'true',
            'Main-Class': mainClassName
        )
    }
}

build.dependsOn(shadowJar)
