buildscript {
    dependencies {
        classpath 'com.github.dexman545:Outlet:1.3.10'
    }
}
plugins {
    id 'java-library'
    id 'fabric-loom' version '0.12-SNAPSHOT'
    id 'com.modrinth.minotaur' version '2.+'
    id 'org.ajoberstar.reckon' version '0.13.0'
}
apply plugin: 'dex.plugins.outlet'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
    withSourcesJar()
}

outlet.allowSnapshotsForProject = false
outlet.mcVersionRange = project.minecraft_version_range

group = project.group
description = project.displayname
archivesBaseName = project.name

loom {
    mixin.defaultRefmapName = 'unicopia.mixin.refmap.json'
    accessWidenerPath = file('src/main/resources/unicopia.aw')
}

reckon {
    scopeFromProp()
    stageFromProp 'beta', 'rc', 'final'
}

repositories {
    mavenLocal()
    flatDir { dirs 'lib' }
    maven { name 'entity-reach-attributes'; url 'https://maven.jamieswhiteshirt.com/libs-release' }
    maven { name 'trinkets'; url 'https://ladysnake.jfrog.io/artifactory/mods' }
    maven { name 'mod-menu'; url 'https://maven.terraformersmc.com/' }
    maven { name 'minelp-snapshot'; url 'https://repo.minelittlepony-mod.com/maven/snapshot' }
    maven { name 'minelp-releases'; url 'https://repo.minelittlepony-mod.com/maven/release' }
    maven { name 'TerraformersMC'; url 'https://maven.terraformersmc.com/' }
}

dependencies {
    minecraft "com.mojang:minecraft:${project.minecraft_version}"
    mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
    modApi "net.fabricmc:fabric-loader:${project.loader_version}"
    modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

    modApi "com.minelittlepony:minelittlepony:${project.minelp_version}"

    modApi "com.minelittlepony:kirin:${project.kirin_version}"
    include "com.minelittlepony:kirin:${project.kirin_version}"

    modApi "com.jamieswhiteshirt:reach-entity-attributes:${project.reach_attributes_version}"
    include "com.jamieswhiteshirt:reach-entity-attributes:${project.reach_attributes_version}"

    modApi "com.sollace:fabwork:${project.fabwork_version}"
    include "com.sollace:fabwork:${project.fabwork_version}"

    compileOnly "com.sollace:Romanizer:Romanizer:1.0.2"
    include "com.sollace:Romanizer:Romanizer:1.0.2"

    modCompileOnly "com.terraformersmc:modmenu:${project.modmenu_version}"
    modCompileOnly "dev.emi:trinkets:${project.trinkets_version}"
    
    modImplementation "com.terraformersmc.terraform-api:terraform-wood-api-v1:${project.terraformer_api_version}"
    include "com.terraformersmc.terraform-api:terraform-wood-api-v1:${project.terraformer_api_version}"

    if (project.tmi_type == 'emi') {
      modCompileOnly "dev.emi:emi-fabric:${project.emi_version}"
    } else {
      modCompileOnly "dev.emi:emi-fabric-dummy:${project.emi_version}"
    }

    if (project.tmi_type == 'rei') {
      // TODO:
    } else {
      // TODO:
    }
}

processResources {
    inputs.property "version", project.version.toString()

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

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

tasks.modrinth {
    onlyIf {
      def stage = version.version.stage.value
      stage == null || stage.name != 'beta'
    }
}

modrinth {
    token = System.env.MODRINTH_KEY
    projectId = project.modrinth_project_id
    //featured = true
    versionNumber = version.toString()
    versionName = archivesBaseName + '-' + version
    changelog = "[Changelog](https://github.com/Sollace/Unicopia/releases/tag/${version.toString()})"
    uploadFile = remapJar
    outlet.mcVersions().each{ver ->
      gameVersions.add ver
    }
    dependencies {
       required.project '9K7RJlvM'
    }
}