plugins {
    id "fabric-loom" version "0.10-SNAPSHOT"
    id "maven-publish"
    id 'com.github.johnrengelman.shadow' version '2.0.4'
}

sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

archivesBaseName = project.archives_base_name
version = project.mod_version
group = project.maven_group

repositories {
    mavenCentral()
    maven {
        name = "gaucho-matrero-repo"
        url = "https://gaucho-matrero.github.io/maven/"
    }
    flatDir {
        dirs '../baritone/build/libs'
    }
}

dependencies {
    //to change the versions see the gradle.properties file
    minecraft("com.mojang:minecraft:${project.minecraft_version}")
    mappings("net.fabricmc:yarn:${project.yarn_mappings}:v2")
    modImplementation("net.fabricmc:fabric-loader:${project.loader_version}")

    // Fabric API. This is technically optional, but you probably want it anyway.
    modImplementation("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}")

    // Jackson JSON
    implementation 'com.fasterxml.jackson.core:jackson-core:2.10.1'
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.10.1'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.1'

    // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
    // You may need to force-disable transitiveness on them.
    shadow('com.fasterxml.jackson.core:jackson-core:2.10.1')
    shadow('com.fasterxml.jackson.core:jackson-annotations:2.10.1')
    shadow('com.fasterxml.jackson.core:jackson-databind:2.10.1')

    // Thank you georgeagostino for fixing my garbage
    if (getProject().hasProperty("altoclef.development")) {
        // Must run build from baritone-plus once
        modImplementation 'baritone-api-fabric:baritone-unoptimized-fabric:1.18.2'
    } else {
        modImplementation "cabaletta:baritone-unoptimized-fabric:1.18.2"
        include "cabaletta:baritone-unoptimized-fabric:1.18.2"
    }
    //modImplementation 'baritone-api-fabric:baritone-api-fabric:1.6.3'
    //implementation files('baritone-plus/build/libs/baritone-unoptimized-fabric-1.6.3.jar')
}
shadowJar {
    configurations = [project.configurations.shadow]
    classifier = 'shadow'
}

remapJar {
    dependsOn(":shadowJar")
    input.set(shadowJar.archiveFile)
}

processResources {
    inputs.property "version", project.version

    from(sourceSets.main.resources.srcDirs) {
        include "fabric.mod.json"
        expand "version": project.version
        duplicatesStrategy DuplicatesStrategy.EXCLUDE
    }

    from(sourceSets.main.resources.srcDirs) {
        duplicatesStrategy DuplicatesStrategy.EXCLUDE
        exclude "fabric.mod.json"
    }
}

// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
    options.incremental = true
}

// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this task, sources will not be generated.
task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = "sources"
    from sourceSets.main.allSource
}

jar {
    from "LICENSE"
}

// configure the maven publication
publishing {
    publications {
        mavenJava(MavenPublication) {
            // add all the jars that should be included when publishing to maven
            artifact(remapJar) {
                builtBy remapJar
            }
            artifact(sourcesJar) {
                builtBy remapSourcesJar
            }
        }
    }

    // select the repositories you want to publish to
    repositories {
        // uncomment to publish to the local maven
        // mavenLocal()
    }
}
