plugins {
    // Publishing
    id 'com.matthewprenger.cursegradle' version '1.4.0'
    id "com.modrinth.minotaur" version "2.+"

    id 'fabric-loom' version '0.12-SNAPSHOT'
    id 'maven-publish'
}

sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

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

repositories {
    mavenCentral();
    mavenLocal()
    maven {
        name "Sonatype Snapshots"
        url "https://s01.oss.sonatype.org/content/repositories/snapshots/"
    }
    maven {
        url 'https://jitpack.io'
    }
    maven {
        url 'https://notalpha.dev/maven/releases'
    }
}

loom {
    accessWidenerPath = file("src/main/resources/dashloader.accesswidener")
}

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}"

    // TODO jákob if you need modmenu uncomment this and in gradle.properties - !alpha
    // modImplementation "com.terraformersmc:modmenu:$project.modmenu_version"

    implementation "dev.notalpha:Hyphen:0.4.0-rc.5"
    include "dev.notalpha:Hyphen:0.4.0-rc.5"

    implementation "dev.notalpha:Taski:2.1.0"
    include "dev.notalpha:Taski:2.1.0"

    implementation 'com.github.luben:zstd-jni:1.5.2-2'
    include 'com.github.luben:zstd-jni:1.5.2-2'

    modCompileOnly fabricApi.module("fabric-renderer-indigo", "0.69.1+1.19.3");
}

test {
    useJUnitPlatform()
    testLogging {
        events "passed", "skipped", "failed"
    }
}

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

    filesMatching("fabric.mod.json") {
        expand "version": project.version
    }
}

tasks.withType(JavaCompile).configureEach {
    // 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
    // If Javadoc is generated, this must be specified in that task too.
    it.options.encoding = "UTF-8"

    // Minecraft 1.17 (21w19a) upwards uses Java 16.
    it.options.release = 17
}

java {
    //include sources in maven publish
    withSourcesJar()
}

jar {
    from("LICENSE") {
        rename { "${it}_${project.archivesBaseName}" }
    }
}

// Publishing
modrinth {
    token = project.hasProperty("modrinthApiKey") ? project.modrinthApiKey : ""
    projectId = 'ZfQ3kTvR'
    changelog = file("changelog.md").getText();
    versionNumber = project.version
    versionName = "$project.version".split("\\+")[0] + " for $project.minecraft_version"
    uploadFile = remapJar
    versionType = "alpha"
    gameVersions = ['1.19.3']
    loaders = ['fabric', 'quilt']
}

curseforge {
    apiKey = project.hasProperty("curseForgeApiKey") ? project.curseForgeApiKey : ""
    project {
        id = '472772'
        changelogType = "markdown"
        changelog = file("changelog.md");
        releaseType = 'alpha'

        addGameVersion "1.19.3"
        addGameVersion "Fabric"
        addGameVersion "Quilt"
        addGameVersion "Java 17"

        mainArtifact(remapJar) {
            displayName = "$project.version".split("\\+")[0] + " for $project.minecraft_version"
        }
    }
    options {
        forgeGradleIntegration = false
    }
}

tasks.register("publishMod") {
    dependsOn 'modrinth'
    dependsOn 'curseforge'
}

tasks.register("getVersion") {
    print("$project.version")
}

publishing {
    repositories {
        maven {
            name = "notalpha"
            url = "https://notalpha.dev/maven/releases"
            credentials(PasswordCredentials)
            authentication {
                basic(BasicAuthentication)
            }
        }
    }
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
}