Files
JMT-MCMT/build.gradle
T
jediminer543 95f7aaf667 0.18.60 pre release; Untested but probably good (am committing to test on second machine)
Fixes the multiple mod jar distribution issue, and also adds thread limiting
2020-10-10 00:23:07 +01:00

211 lines
6.8 KiB
Groovy

buildscript {
repositories {
maven { url = 'https://files.minecraftforge.net/maven' }
jcenter()
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
}
apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
version = "${mcmt_ver}"
group = 'org.jmt.mcmt' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "jmt_mcmt-${mc_ver}"
sourceSets {
syncfu {
compileClasspath += sourceSets.main.runtimeClasspath
compileClasspath += sourceSets.main.compileClasspath
}
}
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
minecraft {
// The mappings can be changed at any time, and must be in the following format.
// snapshot_YYYYMMDD Snapshot are built nightly.
// stable_# Stables are built at the discretion of the MCP team.
// Use non-default mappings at your own risk. they may not always work.
// Simply re-run your setup task after changing the mappings to update your workspace.
mappings channel: "${mappings_chan}", version: "${mappings_ver}"
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
// Default run configurations.
// These can be tweaked, removed, or duplicated as needed.
runs {
client {
workingDirectory project.file('run')
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
//property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
mods {
jmt_mcmt {
source sourceSets.main
}
jmt_mcmt_syncfu {
source sourceSets.syncfu
}
}
}
server {
workingDirectory project.file('run')
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
//property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
mods {
jmt_mcmt {
source sourceSets.main
}
jmt_mcmt_syncfu {
source sourceSets.syncfu
}
}
}
data {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
args '--mod', 'examplemod', '--all', '--output', file('src/generated/resources/')
mods {
jmt_mcmt {
source sourceSets.main
}
jmt_mcmt_syncfu {
source sourceSets.syncfu
}
}
}
}
}
dependencies {
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
// that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
minecraft "net.minecraftforge:forge:${mc_ver}-${fg_ver}"
// You may put jars on which you depend on in ./libs or you may define them like so..
// compile "some.group:artifact:version:classifier"
// compile "some.group:artifact:version"
// Real examples
// compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
// compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
// The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
// provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
// These dependencies get remapped to your current MCP mappings
// deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
// For more info...
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html
}
// Example for how to get properties into the manifest for reading by the runtime..
jar {
from sourceSets.main.output
classifier "modcore"
manifest {
attributes([
"Specification-Title": "jmt_mcmt",
"Specification-Vendor": "jmtmakesthings",
"Specification-Version": "1", // We are version 1 of ourselves
"Implementation-Title": project.name,
"Implementation-Version": "${version}",
"Implementation-Vendor" :"jmtmakesthings",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}
}
task fullJar(type: Jar) {
from sourceSets.syncfu.output
from jar.outputs.files
dependsOn jar
}
configure(fullJar) {
group = 'Build'
description = 'Create the full mod'
}
build.dependsOn fullJar
task cleanModToml(type: Delete) {
delete 'src/main/resources/META-INF/mods.toml'
followSymlinks = true
}
import org.apache.tools.ant.filters.*
task generateModToml(type: Copy) {
def fgMajor = fg_ver.tokenize(".")[0]
from 'src/main/resources/META-INF/template'
into 'src/main/resources/META-INF'
filter(ReplaceTokens, tokens: [
FORGE_VER: fgMajor,
MC_VER: mc_ver
])
}
configure(cleanModToml) {
group = 'Build'
description = 'Clean in the mod toml'
}
clean.dependsOn cleanModToml
generateModToml.dependsOn cleanModToml
configure(generateModToml) {
group = 'Build'
description = 'Fill in the mod toml'
}
processResources.dependsOn generateModToml
// Example configuration to allow publishing using the maven-publish task
// This is the preferred method to reobfuscate your jar file
jar.finalizedBy('reobfJar')
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
//publish.dependsOn('reobfJar')
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
}
}
repositories {
maven {
url "file:///${project.projectDir}/mcmodsrepo"
}
}
}