buildscript {
	repositories {
		maven { url = 'https://maven.minecraftforge.net/' }
		maven { url = 'https://plugins.gradle.org/m2' }
		mavenCentral()
	}
	dependencies {
		classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
	}
}

apply plugin: 'forge'

def jsonFile = file('./src/main/resources/mcmod.info')
def parsedJson = new groovy.json.JsonSlurper().parseText(jsonFile.text)
version = parsedJson.version
group = "com.hbm" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "HBM-NTM"

sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'

minecraft {
	version = "1.7.10-10.13.4.1614-1.7.10"
	runDir = "eclipse"
}

// A little hack to fix codechicken's crazy maven structure (at least in 1.7.10)
eclipse.classpath.file.whenMerged { cp ->
	// Find all codechicken source jars
	def srcent = cp.entries.findAll { entry -> entry.path.contains("codechicken") && entry.path.endsWith("-src.jar") }
	
	// Remove them from classpath
	cp.entries.removeAll srcent

	// Map the source entries to their dev counterparts based on basename
	Map<String, File> srcmap = new HashMap<String, File>()
	srcent.forEach { entry ->
		def file = new File(entry.path)
		srcmap.put(file.getName().replace("-src.jar", "-dev.jar"), file)
	}
	
	// Create file reference factory
	def fileref = new org.gradle.plugins.ide.eclipse.model.internal.FileReferenceFactory()
	
	// Find all codechicken development jars
	cp.entries.findAll { entry -> entry.path.contains("codechicken") && entry.path.endsWith("-dev.jar") }.forEach { entry ->
		File srcmapping = new File(entry.path) // Initialize the srcmapping from the dev jar path
		srcmapping = srcmap.get(srcmapping.getName()) // Transform it using the sourcemap
		entry.sourcePath = fileref.fromFile(srcmapping) // Set the source path
	}
}

repositories {
	maven {
		name = 'ModMaven'
		url = 'https://modmaven.dev'
	}
	//maven {
	//	name = "CurseForge"
	//	url = "https://minecraft.curseforge.com/api/maven/"
	//}
}

dependencies {
	compile 'codechicken:CodeChickenCore:1.7.10-1.0.4.29:dev'
	compileOnly 'codechicken:CodeChickenCore:1.7.10-1.0.4.29:src'
	
	compile 'codechicken:CodeChickenLib:1.7.10-1.1.3.140:dev'
	compileOnly 'codechicken:CodeChickenLib:1.7.10-1.1.3.140:src'
	
	compile 'codechicken:NotEnoughItems:1.7.10-1.0.3.74:dev'
	compileOnly 'codechicken:NotEnoughItems:1.7.10-1.0.3.74:src'

	//compileOnly 'inventory-tweaks:InventoryTweaks:1.62+beta.84:api'
}

processResources {
	// this will ensure that this task is redone when the versions change.
	inputs.property "version", project.version
	inputs.property "mcversion", project.minecraft.version

	// replace stuff in mcmod.info, nothing else
	from(sourceSets.main.resources.srcDirs) {
		include 'mcmod.info'
		
		// replace version and mcversion
		expand 'version':project.version, 'mcversion':project.minecraft.version
	}
		
	// copy everything else, thats not the mcmod.info
	from(sourceSets.main.resources.srcDirs) {
		exclude 'mcmod.info'
	}
}

task version {
	doFirst {
		println project.version
	}
}
