/*
 * This file is part of Baritone.
 *
 * Baritone is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Baritone is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Baritone.  If not, see <https://www.gnu.org/licenses/>.
 */

group 'baritone'
version '1.2.14'

buildscript {
    repositories {
        maven {
            name = 'forge'
            url = 'http://files.minecraftforge.net/maven'
        }
        maven {
            name = 'SpongePowered'
            url = 'http://repo.spongepowered.org/maven'
        }
        jcenter()
    }

    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
        classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT'
    }
}


import baritone.gradle.task.CreateDistTask
import baritone.gradle.task.ProguardTask

apply plugin: 'java'
apply plugin: 'net.minecraftforge.gradle.tweaker-client'
apply plugin: 'org.spongepowered.mixin'

sourceCompatibility = targetCompatibility = '1.8'
compileJava {
    sourceCompatibility = targetCompatibility = '1.8'
    options.encoding = "UTF-8" // allow emoji in comments :^)
}

sourceSets {
    launch {
        compileClasspath += main.compileClasspath + main.runtimeClasspath + main.output
    }

    schematica_api {
        compileClasspath += main.compileClasspath
    }

    main {
        compileClasspath += schematica_api.output
    }
}

minecraft {
    version = '1.12.2'
    mappings = 'stable_39'
    tweakClass = 'baritone.launch.BaritoneTweaker'
    runDir = 'run'

    // The sources jar should use SRG names not MCP to ensure compatibility with all mappings
    makeObfSourceJar = true
}

repositories {
    mavenCentral()

    maven {
        name = 'spongepowered-repo'
        url = 'http://repo.spongepowered.org/maven/'
    }

    maven {
        name = 'impactdevelopment-repo'
        url = 'https://impactdevelopment.github.io/maven/'
    }
}

dependencies {
    runtime launchCompile('com.github.ImpactDevelopment:SimpleTweaker:1.2')
    runtime launchCompile('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'
    }
    testImplementation 'junit:junit:4.12'
}

mixin {
    defaultObfuscationEnv searge
    add sourceSets.launch, 'mixins.baritone.refmap.json'
}

javadoc {
    options.addStringOption('Xwerror', '-quiet') // makes the build fail on travis when there is a javadoc error
    options.linkSource true
    options.encoding "UTF-8" // allow emoji in comments :^)
    source = sourceSets.api.allJava
    classpath += sourceSets.api.compileClasspath
}

jar {
    from sourceSets.launch.output, sourceSets.api.output

    if (!getProject().hasProperty("baritone.forge_build")) {
        exclude "**/BaritoneForgeModXD.class"
        exclude "**/mods.toml"
    }

    preserveFileTimestamps = false
    reproducibleFileOrder = true

    manifest {
        attributes(
                'MixinConfigs': 'mixins.baritone.json',

                'Implementation-Title': 'Baritone',
                'Implementation-Version': version
        )
    }
}

task proguard(type: ProguardTask) {
    url 'https://downloads.sourceforge.net/project/proguard/proguard/6.0/proguard6.0.3.zip'
    extract 'proguard6.0.3/lib/proguard.jar'
}

task createDist(type: CreateDistTask, dependsOn: proguard)

build.finalizedBy(createDist)