println("Specifying project version/group/archivesBaseName...")
version = "${mod_version}"
group = "${mod_group}"
archivesBaseName = "${mod_archives_name}"

println("Specifying Java compatibility...")
java.toolchain.languageVersion = JavaLanguageVersion.of(17)

println("Java Installation Data:")
println(" - Java Version: " + System.getProperty('java.version'))
println(" - JVM Version: " + System.getProperty('java.vm.version'))
println(" - Vendor: " + System.getProperty('java.vendor'))
println(" - OS Archetype: " + System.getProperty('os.arch'))

minecraft {
	println("Specifying MCP mappings...")
    mappings channel: 'parchment', version: project.version_mcp
	
	runs {
        client {
			properties 'org.gradle.jvmargs': '-Xms4G -Xmx4G'
			properties 'fml.earlyprogresswindow': 'false'
			properties 'mixin.env.disableRefMap': 'true'
            workingDirectory project.file('run')

            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
            property 'forge.logging.console.level', 'debug'

            mods {
                any {
                    source sourceSets.main
                }
            }
        }

        server {
			properties 'mixin.env.disableRefMap': 'true'
            workingDirectory project.file('run')

            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
            property 'forge.logging.console.level', 'debug'

            mods {
                any {
                    source sourceSets.main
                }
            }
        }
    }
}

sourceSets.main.resources {
    // NO-OP
}

repositories {
	println("Specifying repositories...")
	
	
	//flatDir {  dirs 'deps' }
	maven {  url "file:///${project.projectDir}/deps/" } // I'LL FUCKING STAB YOUR PARENTS
	maven {  url = "https://maven.theillusivec4.top/" } // curios
	maven {  url 'https://maven.blamejared.com' } // patchouli
	maven {  url = "https://repo.spongepowered.org/maven" } // mixin
    maven {	 url "https://dvs1.progwml6.com/files/maven/" } // no idea
	maven {  url = 'https://maven.parchmentmc.org'  }
}

dependencies {
	// Minecraft & Forge
    minecraft "net.minecraftforge:forge:${version_forge}"
}


tasks.withType(Jar) {
	doFirst {
		println("Processing manifest...")
	}		

    manifest {
        attributes([
            "Specification-Title": "${mod_name}",
            "Specification-Vendor": "${mod_author}",
            "Specification-Version": "${mod_version}",
            "Implementation-Title": "${mod_name}",
            "Implementation-Version": "${mod_version}",
            "Implementation-Vendor" :"${mod_author}",
            "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }
}

curseforge {

    project {
		println("Pushing CurseGradle specifications for project ID: ${curse_id}")
		
		// Specified as cmd argument
        apiKey = findProperty('curseKey') ?: '0'
        
		id = project.curse_id
        releaseType = project.curse_release
        changelogType = 'html'
        changelog = file('docs/changelog.html')
		
		addGameVersion project.version_mc
		addGameVersion 'Forge'
		addGameVersion 'Java 17'
		
		relations {
			requiredDependency 'curios'
			requiredDependency 'patchouli'
			requiredDependency 'caelus'
		}
		
        //addArtifact(sourcesJar)
        //addArtifact(apiJar)
    }
}

modrinth {
    token = findProperty('modrinthKey') ?: '0'
    projectId = "IpUWAlqM"
    versionNumber = project.version
	versionName = "Enigmatic Legacy v" + project.version
    versionType = "release"
	changelog = "See on CurseForge: https://www.curseforge.com/minecraft/mc-mods/enigmatic-legacy/files"
    uploadFile = jar
    gameVersions = [ project.version_mc ]
	loaders = [ 'forge' ]
    dependencies {
		// The scope can be `required`, `optional`, or `incompatible`
		required.project "nU0bVIaL"
		required.project "vvuO3ImH"
		required.project "40FYwb4z"
    }
	
	syncBodyFrom = rootProject.file("docs/README.md").text
}

task upload {
	dependsOn('modrinth')
	dependsOn('curseforge')
}

tasks.withType(JavaCompile) {
    options.failOnError(true)
}

jar.finalizedBy('reobfJar')
//publish.dependsOn('reobfJar')

tasks.modrinth.dependsOn(tasks.modrinthSyncBody)

publishing {

	// TODO This needs some work

    publications {
        mavenJava(MavenPublication) {
            artifact jar
        }
    }
    repositories {
        maven {
            url "file:///${project.projectDir}/mcmodsrepo"
        }
    }
}