buildscript {
    repositories {
        mavenCentral()
        maven {
            name = "forge"
            url = "https://maven.minecraftforge.net/"
        }
    }
    dependencies {
        classpath ('com.anatawa12.forge:ForgeGradle:1.2-1.1.+') {
            changing = true
        }
    }
}

plugins {
    id 'java-library'
    id 'maven-publish'
//    id 'com.github.johnrengelman.shadow' version '6.1.0' // Use the latest version
}

apply plugin: 'forge'

// These settings allow you to choose what version of Java you want to be compatible with. Forge 1.7.10 runs on Java 6 to 8.
sourceCompatibility = 1.8
targetCompatibility = 1.8

version = project.version
group = project.group
def yourMixinConfig = 'mixins.cindercore_modlist.json'
def refMapForYourConfig = 'mixins.cindercore_modlist.refmap.json'
def relativePathToMixinAP = 'libs/mixin-0.8-SNAPSHOT.jar'
def refMap = 'src/main/resources/' + refMapForYourConfig
def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg"

repositories {
    flatDir {
        dirs 'libs'
    }
    maven {
        name = 'sponge'
        url = 'https://repo.spongepowered.org/repository/maven-public'
    }
}

dependencies {
//    implementation 'com.google.code.gson:gson:2.8.6'
    implementation('org.spongepowered:mixin:0.7.11-SNAPSHOT') {
        // Mixin includes a lot of dependencies that are too up-to-date
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
        exclude module: 'log4j-core'
    }
//    implementation name: 'mixin-0.8-SNAPSHOT', ext: 'jar'
//    implementation name: 'SpongeMixins-1.5.0', ext: 'jar'
    implementation name: 'cindercore', ext: 'jar'
}

minecraft {
    version = project.minecraft_version + "-" + project.forge_version
    runDir = "run"
}


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 values in only mcmod.info.
    filesMatching('mcmod.info') {
        // Replace version and mcversion.
        expand 'version':project.version, 'mcversion':project.minecraft.version
    }
}

// Ensures that the encoding of source files is set to UTF-8, see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

// This task creates a .jar file containing the source code of this mod.
task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = "sources"
    from sourceSets.main.allSource
}

// This task creates a .jar file containing a deobfuscated version of this mod, for other developers to use in a development environment.
task devJar(type: Jar) {
    classifier = "dev"
    from sourceSets.main.output
}

// Creates the listed artifacts on building the mod.
artifacts {
    archives sourcesJar
    archives devJar
}

// This block configures any maven publications you want to make.
publishing {
    publications {
        mavenJava(MavenPublication) {
        // Add any other artifacts here that you would like to publish!
            artifact(jar) {
                builtBy build
            }
            artifact(sourcesJar) {
                builtBy sourcesJar
            }
            artifact(devJar) {
                builtBy devJar
            }
        }
    }

    // This block selects the repositories you want to publish to.
}

jar {
    duplicatesStrategy = DuplicatesStrategy.INCLUDE

    from sourceSets.main.output.resourcesDir
    from refMap
    manifest {
        attributes([
                "Manifest-Version": "1.0",
                "TweakClass": "org.spongepowered.asm.launch.MixinTweaker",
                'MixinConfigs': yourMixinConfig,
                "FMLCorePlugin": "com.zivilon.cindercore_modlist.coremod.ModListCore",
                'FMLCorePluginContainsFMLMod': 'true',
                "ForceLoadAsMod": true
        ])
    }
}
reobf {
    addExtraSrgFile mixinSrg
}
afterEvaluate {
    def fixedRelPathToAP = relativePathToMixinAP
    if(fixedRelPathToAP.startsWith('./') || fixedRelPathToAP.startsWith('.\\')){
        fixedRelPathToAP = fixedRelPathToAP.substring(2)
    } else if(fixedRelPathToAP.startsWith('/') || fixedRelPathToAP.startsWith('\\')){
        fixedRelPathToAP = fixedRelPathToAP.substring(1)
    }

    tasks.withType(JavaCompile) {
        options.annotationProcessorPath = files(projectDir.absolutePath + '/' + fixedRelPathToAP)
        println "Refmap path: ${refMap}"
        options.compilerArgs += [
            "-ArefMapFile=${refMap}",
            "-AoutRefMapFile=${refMap}",
            "-AdefaultObfuscationEnv=searge"
        ]
    }
}
sourceSets {
    main {
        output.resourcesDir = output.classesDirs.asPath
        ext.refMap = refMapForYourConfig
    }
}
