OpenComputers/build.gradle
2025-06-01 13:37:40 +02:00

318 lines
9.9 KiB
Groovy

buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "https://maven.minecraftforge.net/"
}
maven {
name = "gt"
url = "https://gregtech.overminddl1.com/"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
maven {
url = "https://jitpack.io"
}
}
dependencies {
classpath 'com.github.GTNewHorizons:ForgeGradle:1.2.13'
}
}
plugins {
id 'scala'
id 'idea'
id 'maven-publish'
id "com.matthewprenger.cursegradle" version "1.4.0"
id 'com.modrinth.minotaur' version '2.8.7'
}
apply plugin: 'forge'
file "build.properties" withReader {
def prop = new Properties()
prop.load(it)
ext.config = new ConfigSlurper().parse prop
}
version = "${mod_version}"
if (version.endsWith("-snapshot")) {
version += "-" + (new Date().format('yyyyMMdd'))
}
group = "li.cil.oc"
archivesBaseName = "OpenComputers"
def getGitRef() {
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
} catch (Throwable e) {
return "unknown"
}
}
version += "+" + getGitRef()
ext.simpleVersion = version
version = "MC${config.minecraft.version}-${project.version}"
runClient {
jvmArgs '-Dfml.coreMods.load=li.cil.oc.common.launch.TransformerLoader'
}
runServer {
jvmArgs '-Dfml.coreMods.load=li.cil.oc.common.launch.TransformerLoader'
}
compileScala {
configure(scalaCompileOptions.forkOptions) {
memoryMaximumSize = '1g'
}
}
repositories {
maven {
name = "mightypirates"
url = "https://maven.cil.li/"
metadataSources {
mavenPom()
artifact()
}
}
maven {
name 'Overmind forge repo mirror'
url 'https://gregtech.overminddl1.com/'
}
// These are necessary because some parts of the maven repo is weirdly structured, this needs to be fixed.
ivy {
name 'weird maven repos'
artifactPattern "https://maven.cil.li/[module]/[revision]/[module]-[revision].[ext]"
metadataSources {
artifact()
}
}
ivy {
name 'weird maven repos 2'
artifactPattern "https://maven.cil.li/[module]/[revision]/[module]-[revision]-[classifier].[ext]"
metadataSources {
artifact()
}
}
ivy {
name 'asie dependency mirror'
artifactPattern "https://asie.pl/javadeps/[module]-[revision](-[classifier]).[ext]"
metadataSources {
artifact()
}
}
}
configurations {
embedded
implementation.extendsFrom embedded
}
dependencies {
compileOnly "appeng:RotaryCraft:${config.rotc.version}:api"
compileOnly ("appeng:appliedenergistics2:${config.ae2.version}:dev") {
exclude module: 'buildcraft'
}
compileOnly "codechicken:CodeChickenLib:${config.minecraft.version}-${config.ccl.version}:dev"
compileOnly "codechicken:EnderStorage:${config.minecraft.version}-${config.es.version}:dev"
compileOnly "codechicken:ForgeMultipart:${config.minecraft.version}-${config.fmp.version}:dev"
compileOnly "codechicken:NotEnoughItems:${config.minecraft.version}-${config.nei.version}:dev"
compileOnly "codechicken:WR-CBE:${config.minecraft.version}-${config.wrcbe.version}:dev"
compileOnly "com.bluepowermod:BluePower:${config.bluepower.version}:deobf"
compileOnly "com.gregoriust.gregtech:gregtech_${config.minecraft.version}:${config.gt.version}:dev"
compileOnly "igwmod:IGW-Mod-1.7.10:${config.igwmod.version}:userdev"
compileOnly "li.cil.tis3d:TIS-3D:${config.tis3d.version}:dev"
compileOnly "mcp.mobius.waila:Waila:${config.waila.version}_${config.minecraft.version}:dev"
compileOnly "net.industrial-craft:industrialcraft-2:${config.ic2.version}:dev"
compileOnly "net.sengir.forestry:forestry_${config.minecraft.version}:${config.forestry.version}:dev"
compileOnly "dev.modwarriors.notenoughkeys:NotEnoughKeys:${config.minecraft.version}-${config.nek.version}:deobf-dev"
compileOnly "qmunity:QmunityLib:${config.qmunitylib.version}:deobf"
compileOnly "tmech:TMechworks:${config.minecraft.version}-${config.tmech.version}:deobf"
compileOnly ("mrtjp:ProjectRed:${config.projred.version}:dev") {
exclude module: 'CoFHCore'
}
// compileOnly "coloredlightscore:ColoredLightsCore:${config.coloredlights.version}:api"
compileOnly name: 'buildcraft', version: config.bc.version, classifier: 'dev', ext: 'jar'
compileOnly name: 'GalacticraftCoreAll', version: config.gc.version, ext: 'jar'
compileOnly name: 'MekanismAll', version: config.mekanism.version, ext: 'jar'
compileOnly name: 'redlogic', version: config.redlogic.version, classifier: 'dev', ext: 'jar'
compileOnly name: 'CoFHLib', version: config.cofhlib.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'CoFHCore', version: config.cofhcore.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'MineFactoryReloaded', version: config.mfr.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'ComputerCraft', version: config.cc.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'EnderIO', version: config.eio.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'Railcraft', version: config.rc.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'BloodMagic', version: config.bloodmagic.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'ExtraCells', version: config.ec.version, ext: 'jar', classifier: 'dev'
compileOnly name: 'thaumicenergistics', version: config.thaumicenergistics.version, ext: 'jar', classifier: 'dev'
compile 'com.google.code.findbugs:jsr305:1.3.9' // Annotations used by google libs.
embedded name: 'OC-LuaJ', version: '20220907.1', ext: 'jar'
embedded name: 'OC-JNLua', version: '20230530.0', ext: 'jar'
embedded name: 'OC-JNLua-Natives', version: '20220928.1', ext: 'jar'
testCompile "junit:junit:4.13.2"
testCompile "org.mockito:mockito-all:1.10.19"
testCompile "org.scalactic:scalactic_2.11:2.2.6"
testCompile "org.scalatest:scalatest_2.11:2.2.6"
}
minecraft {
version = "${config.minecraft.version}-${config.forge.version}"
replace "@VERSION@", "${mod_version}"
replace "/*@MCVERSIONDEP@*/", ", acceptedMinecraftVersions = \"[${config.minecraft.version},${config.minecraft.version}+)\""
}
processResources {
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
expand 'version': "${mod_version}", 'mcversion': config.minecraft.version
}
from(sourceSets.main.resources.srcDirs) {
include 'application.conf'
filter { line ->
line.replaceAll("@VERSION@", "${mod_version}")
}
}
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
exclude 'application.conf'
}
// Move access transformer to META-INF
rename '(.+_at.cfg)', 'META-INF/$1'
}
def commonManifest = {
attributes FMLCorePlugin: "li.cil.oc.common.launch.TransformerLoader"
attributes FMLCorePluginContainsFMLMod: "true"
attributes FMLAT: "oc_at.cfg"
}
jar {
exclude "cofh/**"
exclude "mods/**"
configurations.embedded.each { dep ->
from(project.zipTree(dep)) {
exclude 'META-INF', 'META-INF/**'
}
}
classifier = 'universal'
manifest commonManifest
}
javadoc {
include 'li/cil/oc/api/**'
}
// because the normal default jar task has been modified to be obfuscated
task deobfJar(type: Jar) {
from sourceSets.main.output
exclude "cofh/**"
exclude "mods/**"
configurations.embedded.each { dep ->
from(project.zipTree(dep)) {
exclude 'META-INF', 'META-INF/**'
}
}
classifier = 'dev'
manifest commonManifest
}
task apiJar(type: Jar) {
from sourceSets.main.output
from sourceSets.main.java
classifier = 'api'
include 'li/cil/oc/api/**'
}
task javadocJar(type: Jar, dependsOn: javadoc) {
from 'build/docs/javadoc'
classifier 'javadoc'
}
task sourcesJar(type: Jar) {
from sourceSets.main.java
from sourceSets.main.scala
classifier = 'sources'
}
artifacts {
archives deobfJar
archives apiJar
archives javadocJar
archives sourcesJar
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId = project.group
artifactId = project.name
version = mod_version
artifact jar
artifact apiJar
artifact javadocJar
artifact sourcesJar
artifact deobfJar { classifier 'dev' }
}
}
repositories {
maven {
name = "GitHubPackages"
url = System.getenv("GITHUB_MAVEN_URL") ?: ""
credentials {
username = System.getenv("GITHUB_ACTOR")
password = System.getenv("GITHUB_TOKEN")
}
}
}
}
curseforge {
apiKey = System.getenv('CURSEFORGE_API_KEY') ?: ""
project {
id = config.curse.project.id
releaseType = System.getenv('CURSEFORGE_RELEASE_TYPE') ?: "alpha"
changelogType = "markdown"
changelog = System.getenv("CHANGELOG") ?: "Changelog not available."
addGameVersion config.minecraft.version
addGameVersion "Java 8"
addGameVersion "Forge"
}
}
modrinth {
token = System.getenv("MODRINTH_API_KEY") ?: ""
projectId = config.modrinth.project.id
changelog = System.getenv("CHANGELOG") ?: "Changelog not available."
versionNumber = mod_version
versionName = "${rootProject.name}-${version}"
versionType = System.getenv('MODRINTH_RELEASE_TYPE') ?: "alpha"
uploadFile = jar
gameVersions = [config.minecraft.version]
loaders = ["forge"]
}
// this is needed for IntelliJ so we don't have to copy over the assets manually every time
idea {
module {
inheritOutputDirs = true
}
}