Files
2026-06-18 16:32:03 +08:00

99 lines
2.9 KiB
Groovy

import groovy.json.JsonSlurper
import org.apache.tools.ant.filters.ReplaceTokens
import org.gradle.api.attributes.java.TargetJvmVersion
def info = new JsonSlurper().parse(file("build.info.json"))
def releaseGroup = info['mod_group']
def releaseName = info['mod_name']
def releaseVersion = info['mod_version']
def releaseEdition = info['edition']
def releaseIsSnapshot = build_type != 'release'
def releaseBuildNumber = System.getenv('GITHUB_RUN_NUMBER')?.trim() ?: '0'
def releaseFullVersion = (releaseIsSnapshot ? "${releaseVersion}-SNAPSHOT-${releaseBuildNumber}" : releaseVersion).toString()
group = releaseGroup
version = releaseFullVersion
ext {
modName = releaseName
modVersion = releaseVersion
modBuildNumber = releaseBuildNumber
modFullVersion = releaseFullVersion
releaseArchiveBaseName = "${releaseName}_${releaseEdition}".toString()
}
def macroValues = {
[
modVersion : rootProject.ext.modVersion.toString(),
modFullVersion : rootProject.ext.modFullVersion.toString(),
modBuildNumber : rootProject.ext.modBuildNumber.toString()
]
}
def javaMacroTokens = {
def values = macroValues()
[
MOD_VERSION : values.modVersion,
MOD_FULL_VERSION : values.modFullVersion,
MOD_BUILD_NUMBER : values.modBuildNumber
]
}
def resourceMacroTokens = {
macroValues()
}
subprojects {
apply plugin: 'java'
apply plugin: 'customskinloader.manifest-libraries'
manifestLibraries {
// Share Bootstrap's dependency set with all packaged child modules.
add "https://raw.githubusercontent.com/PrismLauncher/meta-launcher/refs/heads/master/net.minecraft/${minecraft_version}.json"
}
repositories {
mavenCentral()
}
def generatedJavaDir = layout.buildDirectory.dir('generated/sources/java-macros/main/java').get().asFile
def generateJavaMacros = tasks.register('generateJavaMacros', Sync) {
inputs.properties(javaMacroTokens())
from('src/main/java') {
include '**/*.java'
filteringCharset = 'UTF-8'
filter(ReplaceTokens, tokens: javaMacroTokens())
}
into(generatedJavaDir)
}
configurations.configureEach { configuration ->
if (configuration.canBeResolved) {
configuration.attributes.attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 25)
}
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
compileJava {
dependsOn(generateJavaMacros)
source = generatedJavaDir
}
processResources {
inputs.properties(resourceMacroTokens())
filteringCharset = 'UTF-8'
filesMatching(['**/*.json', '**/*.toml', '**/mcmod.info']) {
filter(ReplaceTokens, beginToken: '${', endToken: '}', tokens: resourceMacroTokens())
}
}
}