plugins {
	id 'fabric-loom' version '1.9-SNAPSHOT'
}

sourceCompatibility = targetCompatibility = JavaVersion.VERSION_21

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

repositories {
	mavenCentral()
	mavenLocal()
	maven { url "https://maven.meteordev.org/releases"}
	maven { url "https://maven.meteordev.org/snapshots" }
	maven { url "https://maven.seedfinding.com/" }
	maven { url "https://maven-snapshots.seedfinding.com/" }
	maven { url 'https://jitpack.io' }
	maven { url 'https://maven.duti.dev/releases' }
}

loom {
	accessWidenerPath = file("src/main/resources/meteor-rejects.accesswidener")
}

configurations {
	// configuration that holds jars to include in the jar
	extraLibs
}

dependencies {
	// This will make it work on most platforms. It automatically chooses the right dependencies at runtime.
	extraLibs('dev.duti.acheong:cubiomes:1.22.3') { transitive = false }
	extraLibs('dev.duti.acheong:cubiomes:1.22.3:linux64') { transitive = false }
	extraLibs('dev.duti.acheong:cubiomes:1.22.3:osx') { transitive = false }
	extraLibs('dev.duti.acheong:cubiomes:1.22.3:windows64') { transitive = false }
	// To change the versions see the gradle.properties file
	minecraft "com.mojang:minecraft:${project.minecraft_version}"
	mappings "net.fabricmc:yarn:${project.yarn_version}:v2"
	modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

	modImplementation("meteordevelopment:meteor-client:${project.minecraft_version}-SNAPSHOT")
    modCompileOnly "meteordevelopment:baritone:${project.baritone_version}-SNAPSHOT"

	// seed .locate and ore sim
	extraLibs('com.seedfinding:mc_math:ffd2edcfcc0d18147549c88cc7d8ec6cf21b5b91') { transitive = false }
	extraLibs('com.seedfinding:mc_seed:1ead6fcefe7e8de4b3d60cd6c4e993f1e8f33409') { transitive = false }
	extraLibs('com.seedfinding:mc_core:1.210.0') { transitive = false }
	extraLibs('com.seedfinding:mc_noise:7e3ba65e181796c4a2a1c8881d840b2254b92962') { transitive = false }
	extraLibs('com.seedfinding:mc_biome:41a42cb9019a552598f12089059538853e18ec78') { transitive = false }
	extraLibs('com.seedfinding:mc_terrain:b4246cbd5880c4f8745ccb90e1b102bde3448126') { transitive = false }
	extraLibs('com.seedfinding:mc_feature:919b7e513cc1e87e029a9cd703fc4e2dc8686229') { transitive = false }

	// seedcracker api
	implementation (include('com.github.19MisterX98.SeedcrackerX:seedcrackerx-api:2.10.1')) {transitive = false}
//	implementation (include('com.github.19MisterX98.SeedcrackerX:seedcrackerx-api:master-SNAPSHOT')) {transitive = false}

	configurations.implementation.extendsFrom(configurations.extraLibs)
}

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


	filesMatching("fabric.mod.json") {
		expand "version": project.version,
				"mc_version": project.minecraft_version,
				"gh_hash": (System.getenv("GITHUB_SHA") ?: "")
	}
}

jar {
	from("LICENSE") {
		rename { "${it}_${project.archivesBaseName}" }
	}
	from {
		configurations.extraLibs.collect { it.isDirectory() ? it : zipTree(it) }
	}
}
tasks.withType(Jar) {
	duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

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"

	// The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too
	// JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used.
	// We'll use that if it's available, but otherwise we'll use the older option.
	def targetVersion = 21
	if (JavaVersion.current().isJava9Compatible()) {
		 it.options.release = targetVersion
	}
}
