buildscript {
    repositories {
        //new forge repository
        maven { url "https://maven.minecraftforge.net" }
        maven { url "https://repo.spongepowered.org/maven"}
    }
    dependencies {
        classpath "net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT"
        classpath "org.spongepowered:mixingradle:0.6-SNAPSHOT"
    }
}

plugins {
    id "java"
    id "com.github.johnrengelman.shadow" version "2.0.4"
}

apply plugin: "net.minecraftforge.gradle.forge"
apply plugin: "org.spongepowered.mixin"

version = "0.0.0"
group = "dreamys.studio.ecu" //http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "ecu" //name of the output jar

sourceCompatibility = targetCompatibility = 1.8 //using java 8
compileJava.options.encoding = "UTF-8"

minecraft {
    version = "1.8.9-11.15.1.2318-1.8.9"
    runDir = "run"
    mappings = "stable_22" //mappings for 1.8.9
    makeObfSourceJar = false //disable creation of sources jar
}

configurations {
    shade
    compile.extendsFrom(shade)
}

repositories {
    //repos for libraries (not gradle plugins)
    //example:
    //maven { url "https://repo.dreamys.studio/" }
    maven { url "https://repo.spongepowered.org/maven/" }
}

dependencies {
    compile "org.jetbrains:annotations:24.0.0"

    shade("org.spongepowered:mixin:0.7.10-SNAPSHOT") {
        exclude module: "launchwrapper"
        exclude module: "guava"
        exclude module: "gson"
        exclude module: "commons-io"
        exclude module: "log4j-core"
    }

    compile(files("libs/essential.mock.jar"))

    //shade will bundle your library to the output jar
    //your libraries will be accessible outside of intellij
    //example:
    //shade "studio.dreamys:libSkyblock:1.1.1"

    //compile will make your library available only in this dev environment
    //your libraries wont be accessible outside of intellij
    //example:
    //compile "studio.dreamys:libSkyblock:1.1.1"
}

processResources {
    //copy everything else, that"s not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude "mcmod.info"
    }

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

shadowJar {
    dependencies {
        //we remove gson because it belongs to the public api and will break shading
        //exclude(dependency("com.google.code.gson:gson:2.8.6"))
    }
    configurations = [project.configurations.shade]
    duplicatesStrategy DuplicatesStrategy.EXCLUDE //prevent duplicates
    classifier project.hasProperty("legacy") ? "legacy" : "" //prevent creation of unshadowed jar
    if (project.hasProperty("legacy")) exclude "studio/dreamys/ecu/ecu.class"
}

reobf {
    //reobfuscate the shadowed jar
    shadowJar {}
}

jar {
    manifest {
        attributes "FMLCorePlugin": "studio.dreamys.ecu.mixin.MixinLoader",
                "ForceLoadAsMod": true,
                "TweakOrder": 0,
                "ModSide": "CLIENT",
                "FMLCorePluginContainsFMLMod": true,
                "TweakClass": "org.spongepowered.asm.launch.MixinTweaker",
                "MixinConfigs": "mixins.ecu.json"
    }
}

sourceSets {
    main {
        ext.refMap = "mixins.ecu.refmap.json"
    }
}