plugins {
	id 'fabric-loom' version '1.10-SNAPSHOT'
	id 'maven-publish'
	id 'com.modrinth.minotaur' version '2.+'
	id 'net.darkhax.curseforgegradle' version '1.1.+'
	id 'co.uzzu.dotenv.gradle' version '4.0.0'
}

version = project.mod_version
group = project.maven_group

base {
	archivesName = project.file_name
}

repositories {
	maven { url = "https://maven.terraformersmc.com/releases/" }
	maven { url = "https://maven.isxander.dev/releases" }
}

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

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

	modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

	modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}"
}

processResources {
	filteringCharset = "UTF-8"

	var replaceProperties = [
			version                : project.version,
			minecraft_version      : minecraft_version,
			min_minecraft_version  : min_minecraft_version,
			max_minecraft_version  : max_minecraft_version,
			loader_version         : loader_version
	]

	inputs.properties replaceProperties
	filesMatching("fabric.mod.json") {
		expand replaceProperties
	}
}

tasks.withType(JavaCompile).configureEach {
	it.options.release = 17
}

java {
	// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
	// if it is present.
	// If you remove this line, sources will not be generated.
	withSourcesJar()

	sourceCompatibility = JavaVersion.VERSION_17
	targetCompatibility = JavaVersion.VERSION_17
}

jar {
	from("LICENSE") {
		rename { "${it}_${project.base.archivesName.get()}"}
	}
}

// configure the maven publication
publishing {
	publications {
		mavenJava(MavenPublication) {
			from components.java
		}
	}

	// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
	repositories {
		// Add repositories to publish to here.
		// Notice: This block does NOT have the same function as the block in the top level.
		// The repositories here will be used for publishing your artifact, not for
		// retrieving dependencies.
	}
}

import com.modrinth.minotaur.dependencies.ModDependency

modrinth {
	token = env.fetchOrNull('MODRINTH')
	projectId = 'EsYqsGV4'
	versionNumber = project.mod_version
	versionName = "v${project.mod_version} [Fabric]"
	versionType = "release"
	uploadFile = remapJar
	gameVersions = [project.minecraft_version]
	loaders = ['fabric', 'quilt']
	dependencies = [
			new ModDependency('P7dR8mSH', 'required'),
			new ModDependency('mOgUt4GM', 'optional')
	]
	changelog = file('changelog.md').text
}

import net.darkhax.curseforgegradle.TaskPublishCurseForge

tasks.register('publishCurseForge', TaskPublishCurseForge) {
	apiToken = env.fetchOrNull('CURSEFORGE')

	def mainFile = upload(892424, remapJar)
	mainFile.changelog = file('changelog.md')
	mainFile.displayName = "v${project.mod_version} [Fabric]"
	mainFile.addModLoader("fabric", 'quilt')
	mainFile.releaseType = "release"
	mainFile.addEnvironment("client", "server")
}