251 lines
8.1 KiB
Groovy
251 lines
8.1 KiB
Groovy
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;i<length;i++) {
|
|
int pA = Integer.parseInt(vPartsA[i])
|
|
int pB = Integer.parseInt(vPartsB[i])
|
|
if (pA!=pB) {
|
|
return pA<=>pB
|
|
}
|
|
}
|
|
if (vPartsA.length != vPartsB.length)
|
|
return vPartsA.length <=> vPartsB.length
|
|
return vA <=> vB
|
|
}
|
|
|
|
def addChangelog(Map<String, Map<String, String>> changelogForVersions, Map<String, String> 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<String, Map<String, String>> changelogForVersions = new HashMap<>()
|
|
Map<String, String> 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<String, Object> 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
|