buildscript { repositories { mavenCentral() maven { name = "forge" url = "http://files.minecraftforge.net/maven" } maven { name = "sonatype" url = "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' classpath "gradle.plugin.net.minecrell:licenser:0.2.1" } } apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'maven' apply plugin: 'maven-publish' apply plugin: net.minecrell.gradle.licenser.Licenser sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { maven { name = "Modmuss50" url = "http://maven.modmuss50.me/" } maven { name "TiC" url "http://dvs1.progwml6.com/files/maven" } maven { name = "Amadornes" url "http://maven.amadornes.com/" } maven { name "Jared" url "http://maven.blamejared.com/" } maven { url 'http://maven.epoxide.xyz' } maven { url "http://maven.tterrag.com/" } maven { name = "ic2" url = "http://maven.ic2.player.to/" } maven { // HWYLA name "TehNut" url "http://tehnut.info/maven/" } maven { name 'CB Repo' url "http://chickenbones.net/maven/" } maven { name 'Covers' url "http://maven.covers1624.net/" } ivy { name "BuildCraft" artifactPattern "http://www.mod-buildcraft.com/releases/BuildCraft/[revision]/[module]-[revision].[ext]" } } configurations { shade compile.extendsFrom shade } version = "2.7.4" def ENV = System.getenv() if (ENV.BUILD_NUMBER) { version = version + "." + "${System.getenv().BUILD_NUMBER}" } minecraft { version = "1.12.2-14.23.0.2486" mappings = "snapshot_20170918" replace "@MODVERSION@", project.version useDepAts = true runDir = "run" } license { header file('HEADER') include '**/*.java' ignoreFailures = true //Stops the build from failing if a file does not have a license header } group = 'TechReborn' dependencies { deobfCompile('RebornCore:RebornCore-1.12.2:+:universal') { transitive = false } deobfCompile "mezz.jei:jei_1.12:+" compile "mcp.mobius.waila:Hwyla:+" compile "net.darkhax.tesla:Tesla-1.12:1.0.59:deobf" //1.11 updates //deobfCompile "slimeknights:TConstruct:1.10.2-2.5.3.jenkins384" //deobfCompile "slimeknights.mantle:Mantle:1.10.2-1.0.0.jenkins170" deobfCompile "mcjty.theoneprobe:TheOneProbe-1.12:1.12-1.4.11-5" compile "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.0.0.5" deobfCompile 'net.industrial-craft:industrialcraft-2:2.8.7-ex112' //compile name: 'buildcraft', version: '7.99.4', ext: 'jar' deobfCompile 'cofh:ThermalDynamics:1.12-2.3.4.11:universal' deobfCompile 'cofh:ThermalExpansion:1.12-5.3.4.16:universal' } 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' } // Move access transformers to META-INF rename '(.+_at.cfg)', 'META-INF/$1' } task deobfJar(type: Jar) { from sourceSets.main.output exclude "**/*.psd" classifier = 'dev' manifest { attributes 'FMLAT': 'techreborn_at.cfg' } } jar { exclude "**/*.psd" classifier = 'universal' // configurations.shade.each { dep -> // from(project.zipTree(dep)){ // include 'ic2/api/' // include 'forestry/api/fuels/' // exclude 'META-INF', 'META-INF/**', '**/*.java' // } // } manifest { attributes 'FMLAT': 'techreborn_at.cfg' } } task apiJar(type: Jar) { from sourceSets.main.allSource from sourceSets.main.output include 'techreborn/api/**/*' classifier = "api" } apiJar.mustRunAfter deobfJar artifacts { archives deobfJar archives apiJar } build.dependsOn deobfJar, apiJar uploadArchives { repositories { mavenDeployer { //This is used when the build is done on a slave node if (project.hasProperty('mavenPass')) { println 'Uploading to remote Maven Repo' repository(url: "http://mavenupload.modmuss50.me/") { authentication(userName: "buildslave", password: project.getProperty('mavenPass')) } } else { //this is when the build is executed on the master node println 'Uploading to local Maven Repo' repository(url: "file:///var/www/maven/") } pom { groupId = "TechReborn" version = project.version artifactId = project.archivesBaseName project { name project.archivesBaseName packaging 'jar' description 'TechReborn' url 'https://github.com/TechReborn/TechReborn' scm { url 'https://github.com/TechReborn/TechReborn' connection 'scm:git:git@github.com:TechReborn/TechReborn.git' developerConnection 'scm:git:git@github.com:TechReborn/TechReborn.git' } issueManagement { system 'github' url 'https://github.com/TechReborn/TechReborn/issues' } licenses { license { name 'License' url 'https://raw.githubusercontent.com/TechReborn/TechReborn/master/LICENSE.md' distribution 'repo' } } developers { developer { id 'modmuss50' name 'modmuss50' roles {role 'developer'} } developer { id 'Gigabit101' name 'Gigabit101' roles {role 'developer'} } } } } } } } task wrapper(type: Wrapper) { //To update the wrapper change the version bellow then run: gradle wrapper gradleVersion = '2.13' } //Thanks Matthew from #ForgeGradle https://gist.github.com/matthewprenger/108265e3efc83181bd2cc2d2fc31a853 task updateMappings(dependsOn: sourceJar) { def remapped = file('src_remapped/main/java') def methods = file('methods.csv') def fields = file('fields.csv') doLast { Map map = new HashMap<>() methods.eachLine {line -> String[] pts = line.split(",") map.put(pts[0], pts[1]) } fields.eachLine {line -> String[] pts = line.split(",") map.put(pts[0], pts[1]) } copy { from zipTree(sourceJar.archivePath) into remapped include '**/*.java' filter {javaLine -> map.entrySet().each {entry -> javaLine = javaLine.replace(entry.getKey(), entry.getValue()) } return javaLine } includeEmptyDirs = false eachFile {println "Processing: $it.name"} } } } task signJar(type: SignJar, dependsOn: reobfJar) { onlyIf { project.hasProperty('keyStore') } if (project.hasProperty('keyStore')) { keyStore = project.keyStore alias = project.keyStoreAlias storePass = project.keyStorePass keyPass = project.keyStoreKeyPass inputFile = jar.archivePath outputFile = jar.archivePath } } build.dependsOn signJar apply from: 'https://github.com/FabricMC/fabric-docs/raw/master/gradle/ideconfig.gradle' import groovy.util.XmlSlurper import org.apache.commons.io.FileUtils task curseTools { doLast { def cacheFiles = new File(".gradle/curseTools") if (!cacheFiles.exists()) { cacheFiles.mkdirs() } def mavenMetadata = new File(cacheFiles, "maven-metadata.xml") logger.lifecycle(":downloading curseTools metadata") FileUtils.copyURLToFile(new URL("http://maven.modmuss50.me/CurseTools/CurseTools/maven-metadata.xml"), mavenMetadata) def metadata = new XmlSlurper().parseText(FileUtils.readFileToString(mavenMetadata)) def curseToolsVersion = metadata.versioning.release def curseTools = new File(cacheFiles, "${curseToolsVersion}.jar") logger.lifecycle(":downloading CurseTools") FileUtils.copyURLToFile(new URL("http://maven.modmuss50.me/CurseTools/CurseTools/${curseToolsVersion}/CurseTools-${curseToolsVersion}.jar"), curseTools) logger.lifecycle(":launching CurseTools") ant.java(jar: curseTools.getAbsolutePath(), fork: true, spawn: false) { arg(value: jar.archivePath.getAbsolutePath()) arg(value: deobfJar.archivePath.getAbsolutePath()) arg(value: apiJar.archivePath.getAbsolutePath()) } } }