ironbarrels/build.gradle

229 lines
7.2 KiB
Groovy
Executable File

buildscript {
repositories {
mavenLocal()
maven { url = 'https://maven.minecraftforge.net' }
mavenCentral()
jcenter()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
}
}
apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
repositories {
maven {
name 'DVS1 Maven FS'
url 'https://dvs1.progwml6.com/files/maven'
}
}
group = "dev.ubujira.ironbarrels"
// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17.
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
minecraft {
mappings channel: 'official', version: mappings_version
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
runs {
client {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP,CORE'
// property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP,CORE' enable if you want spam from the scanner.
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
mods {
ironchest {
source sourceSets.main
}
}
//The below if statements are to add args to your gradle.properties file in user home
// (DO NOT add them directly to the gradle.properties file for this project)
// Setting the below properties allows use of your normal Minecraft account in the
// dev environment including having your skin load. Each property also has a comment
// explaining what information to set the value to/format it expects
// One thing to note is because of the caching that goes on, after changing these
// variables, you need to refresh the project and rerun genIntellijRuns/genEclipseRuns
if (project.hasProperty('mc_uuid')) {
//Your uuid without any dashes in the middle
args '--uuid', project.getProperty('mc_uuid')
}
if (project.hasProperty('mc_username')) {
//Your username/display name, this is the name that shows up in chat
// Note: This is not your email, even if you have a Mojang account
args '--username', project.getProperty('mc_username')
}
if (project.hasProperty('mc_accessToken')) {
//Your access token, you can find it in your '.minecraft/launcher_profiles.json' file
args '--accessToken', project.getProperty('mc_accessToken')
}
}
server {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP,CORE'
// property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP,CORE' enable if you want spam from the scanner.
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
mods {
ironchest {
source sourceSets.main
}
}
}
data {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP,CORE'
// property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP,CORE' enable if you want spam from the scanner.
// Recommended logging level for the console
property 'forge.logging.console.level', 'debug'
args '--mod', 'ironchest', '--all', '--output', file('src/generated/resources/')
mods {
ironchest {
source sourceSets.main
}
}
}
}
}
task buildInfo {
def cmd = "git rev-parse --short HEAD"
def proc = cmd.execute()
proc.waitFor()
if (proc.exitValue() == 0) {
ext.revision = proc.text.trim()
} else {
ext.revision = "GITBORK"
}
if (System.getenv().BUILD_NUMBER != null) {
ext.buildNum = System.getenv().BUILD_NUMBER
} else {
ext.buildNum = "DEV.${project.buildInfo.revision}"
}
}
version = "${minecraft_version}-${mod_version}.${project.buildInfo.buildNum}"
sourceSets {
main {
resources {
srcDirs "src/generated/resources"
//But exclude the cache of the generated data from what gets built
exclude '.cache'
}
}
}
dependencies {
minecraft 'net.minecraftforge:forge:' + minecraft_version + '-' + forge_version
// compile against the JEI API but do not include it at runtime
//compileOnly fg.deobf("mezz.jei:jei-${jei_version}:api")
// at runtime, use the full JEI jar
//runtimeOnly fg.deobf("mezz.jei:jei-${jei_version}")
}
def modsTomlSpec = copySpec{
from(sourceSets.main.resources) {
include 'META-INF/mods.toml'
expand 'version': project.version,
'loader_range': loader_range,
'minecraft_range': minecraft_range,
'forge_range': forge_range
}
}
// need to copy into each build directory, unfortunately does not seem easy to do this automatically
def buildPaths = [
"$rootDir/out/production/resources", // IDEA
"$rootDir/bin", // Eclipse
]
// task to add mods.toml to all relevant folders
task replaceResources {
// copy for gradle
copy {
outputs.upToDateWhen { false }
with modsTomlSpec
into processResources.destinationDir
}
// copy for IDEs
buildPaths.each { path ->
if (new File(path).exists()) {
copy {
outputs.upToDateWhen { false }
with modsTomlSpec
into path
}
}
}
}
processResources {
exclude 'META-INF/mods.toml'
finalizedBy replaceResources
}
jar {
manifest {
attributes([
"Specification-Title" : "Iron Barrels",
"Specification-Vendor" : "Progwml6, Ubujira",
"Specification-Version" : "1", // We are version 1 of ourselves
"Implementation-Title" : project.name,
"Implementation-Version" : "${version}",
"Implementation-Vendor" : "Progwml6, Ubujira",
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}
}
jar.finalizedBy('reobfJar')
task sourcesJar(type: Jar) {
from sourceSets.main.allJava
classifier = 'sources'
}
artifacts {
archives sourcesJar
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
artifact sourcesJar
}
}
repositories {
if (project.hasProperty('DEPLOY_DIR')) {
maven { url DEPLOY_DIR }
}
}
}