import groovy.json.JsonOutput def mainVersion = "1.7" def buildNumber = "38" // For those who want the bleeding edge buildscript { repositories { jcenter() maven { name = "forge" url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'idea' /* // for people who want stable - not yet functional for MC 1.8.8 - we require the forgegradle 2.1 snapshot plugins { id "net.minecraftforge.gradle.forge" version "2.0.2" } */ version = "${mainVersion}-${buildNumber}" group= "malte0811" archivesBaseName = "IndustrialWires" sourceCompatibility = 1.8 targetCompatibility = 1.8 minecraft { version = "1.12.2-14.23.5.2847" runDir = "run" replace '${version}', project.version mappings = "stable_39" } repositories { maven { name 'ic2' url 'http://maven.ic2.player.to/' } maven { name 'tr' url 'http://maven.modmuss50.me' } maven { name 'jared maven' url 'http://blamejared.com/maven' } maven { // Albedo/Mirage Lights url 'https://repo.elytradev.com/' } maven { // JEI & Tinkers name 'DVS1 Maven FS' url 'http://dvs1.progwml6.com/files/maven' } // dependencies of TR... maven { url 'http://maven.mcmoddev.com' } maven { // HWYLA name "TehNut" url "http://tehnut.info/maven/" } repositories {//Curseforge maven for project red maven { name = "CurseForge" url = "https://minecraft.curseforge.com/api/maven/" } } maven { name = "chickenbones" url = "http://chickenbones.net/maven" } } dependencies { compile 'net.industrial-craft:industrialcraft-2:2.8.+' deobfCompile "blusunrize:ImmersiveEngineering:0.12-+" compileOnly "pl.asie.charset:charset:0.5.6.4.19:full" //Project red and runtime dependencies compileOnly "project-red-base:ProjectRed-1.12.2:4.9.1.92:Base" //runtime "project-red-integration:ProjectRed-1.12.2:4.9.1.92:integration" //runtime "forge-multipart-cbe:ForgeMultipart-1.12.2:2.5.0.69:universal" //runtime "codechicken:CodeChickenLib:1.12.2-3.2.1.349:universal" //runtime "codechicken:ChickenASM:1.12-1.0.2.7" //runtime "mrtjpcore:MrTJPCore-1.12.2:2.1.3.35:universal" //Tech Reborn compileOnly "TechReborn:TechReborn-1.12:2.6.9.7:universal" compileOnly "RebornCore:RebornCore-1.12:3.2.+:universal" //Others //TODO do something about this // compileOnly 'com.elytradev:mirage:2.0.1-SNAPSHOT' compileOnly "mezz.jei:jei_1.12:4.+" compileOnly "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.8.460" compile 'com.elytradev:mirage:2.0.3-rc3-SNAPSHOT' compile "gregtechce:gregtech:1.12.2:1.9.0.481" compile "magneticraft:Magneticraft_1.12:2.8.2:dev" } jar { from 'LICENSE' manifest { attributes 'Maven-Artifact': group+':'+archivesBaseName+':'+version attributes "FMLAT": "industrialwires_at.cfg" } } task signMain(type: SignJar) { onlyIf { project.hasProperty('keyStore') } dependsOn reobfJar if (project.hasProperty('keyStore')) { keyStore = project.keyStore alias = project.storeAlias storePass = project.storePass keyPass = project.storePass inputFile = jar.archivePath outputFile = jar.archivePath } } build.dependsOn signMain 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' } } //Code for automatic update JSON generation class GenerateUpdateJSON extends DefaultTask { static def IW_VERSION_PREFIX = "####Version " static def MC_VERSION_PREFIX = "###Minecraft " static def UNFINISHED_SUFFIX = " - UNFINISHED" static def RECOMMENDED = "-recommended" static def LATEST = "-latest" static def CF_URL = "https://minecraft.curseforge.com/projects/industrial-wires" int compareVersions(String vA, String vB) { String[] vPartsA = vA.split("[\\D]") String[] vPartsB = vB.split("[\\D]") if (vPartsA.length==0&&vPartsB.length==0) return vA <=> vB else if (vPartsA.length==0) return -1 else if (vPartsB.length==0) return 1 int length = Math.min(vPartsA.length, vPartsB.length) for (int i = 0;ipB } } if (vPartsA.length != vPartsB.length) return vPartsA.length <=> vPartsB.length return vA <=> vB } def addChangelog(Map> changelogForVersions, Map promos, String currentMCVersion, String currentVersion, String currentChangelog) { if (!changelogForVersions.containsKey(currentMCVersion)) { promos.put(currentMCVersion+RECOMMENDED, currentVersion) promos.put(currentMCVersion+LATEST, currentVersion) changelogForVersions[currentMCVersion] = new TreeMap<>({String s1, String s2-> compareVersions(s1, s2)}) } changelogForVersions[currentMCVersion][currentVersion] = currentChangelog } @TaskAction def generate() { File changelog = new File("changelog.md") if (!changelog.exists()) println "Changelog does not exist! Aborting!" else { String currentMCVersion = ""; Map> changelogForVersions = new HashMap<>() Map promos = new TreeMap<>({String s1, String s2-> compareVersions(s1, s2)}) String currentVersion = null String currentChangelog = "" changelog.eachLine {line -> if (line.startsWith(IW_VERSION_PREFIX)) { if (currentVersion!=null) { addChangelog(changelogForVersions, promos, currentMCVersion, currentVersion, currentChangelog) } if (!line.endsWith(UNFINISHED_SUFFIX)) { currentVersion = line.substring(IW_VERSION_PREFIX.length()) } else { currentVersion = (String) null } currentChangelog = "" } else if (line.startsWith(MC_VERSION_PREFIX)) { if (currentVersion!=null) { addChangelog(changelogForVersions, promos, currentMCVersion, currentVersion, currentChangelog) } currentChangelog = "" currentVersion = (String) null currentMCVersion = line.substring(MC_VERSION_PREFIX.length()) } else if (!line.isEmpty()) { if (currentChangelog.length()==0) currentChangelog += line else currentChangelog += "\n"+line } } Map mainMap = new TreeMap<>({String s1, String s2-> compareVersions(s1, s2)}) mainMap.putAll(changelogForVersions) mainMap["homepage"] = CF_URL mainMap["promos"] = promos def outJson = JsonOutput.toJson(mainMap) outJson = JsonOutput.prettyPrint(outJson) File outF = new File("changelog.json") outF.delete() outF << outJson } } } task updateJson(type: GenerateUpdateJSON) build.finalizedBy updateJson