Files
batteries/gradle/neoforge-module.gradle

182 lines
5.2 KiB
Groovy

def versionKeyPrefix = project.name.replace('-', '_').replace('.', '_')
def versionProperty = { String suffix ->
providers.gradleProperty("${versionKeyPrefix}_${suffix}")
.orElse(providers.gradleProperty(suffix))
.get()
}
def optionalVersionProperty = { String suffix ->
providers.gradleProperty("${versionKeyPrefix}_${suffix}")
.orElse(providers.gradleProperty(suffix).orElse(''))
.get()
}
def dataRunMethod = optionalVersionProperty('data_run_method')
if (!dataRunMethod) {
dataRunMethod = 'clientData'
}
tasks.withType(Wrapper).configureEach {
distributionType = Wrapper.DistributionType.BIN
}
version = providers.gradleProperty('mod_version').get()
group = providers.gradleProperty('mod_group_id').get()
sourceSets.main.java.srcDir(rootProject.file('common/src/main/java'))
sourceSets.main.resources {
srcDir(rootProject.file('common/src/main/resources'))
srcDir('src/generated/resources')
exclude("**/*.bbmodel")
exclude("src/generated/**/.cache")
}
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
filter {
includeGroup "maven.modrinth"
}
}
}
base {
archivesName = "${providers.gradleProperty('mod_id').get()}-${project.name}"
}
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
neoForge {
version = versionProperty('neo_version')
parchment {
mappingsVersion = versionProperty('parchment_mappings_version')
minecraftVersion = versionProperty('parchment_minecraft_version')
}
runs {
client {
client()
systemProperty 'neoforge.enabledGameTestNamespaces', providers.gradleProperty('mod_id').get()
}
server {
server()
programArgument '--nogui'
systemProperty 'neoforge.enabledGameTestNamespaces', providers.gradleProperty('mod_id').get()
}
gameTestServer {
type = "gameTestServer"
systemProperty 'neoforge.enabledGameTestNamespaces', providers.gradleProperty('mod_id').get()
}
data {
delegate."${dataRunMethod}"()
programArguments.addAll '--mod', providers.gradleProperty('mod_id').get(), '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
}
configureEach {
systemProperty 'forge.logging.markers', 'REGISTRIES'
logLevel = org.slf4j.event.Level.DEBUG
}
}
mods {
"${providers.gradleProperty('mod_id').get()}" {
sourceSet(sourceSets.main)
}
}
}
configurations {
runtimeClasspath.extendsFrom localRuntime
}
dependencies {
def jeiCompile = optionalVersionProperty('jei_compile_dependency')
def jadeRuntime = optionalVersionProperty('jade_runtime_dependency')
def jeiRuntime = optionalVersionProperty('jei_runtime_dependency')
def powerRuntime = optionalVersionProperty('power_test_runtime_dependency')
compileOnly "org.jspecify:jspecify:1.0.0"
if (jeiCompile) {
compileOnly jeiCompile
}
if (jadeRuntime) {
localRuntime jadeRuntime
}
if (jeiRuntime) {
localRuntime jeiRuntime
}
if (powerRuntime) {
localRuntime powerRuntime
}
}
var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {
var replaceProperties = [
minecraft_version : versionProperty('minecraft_version'),
minecraft_version_range: versionProperty('minecraft_version_range'),
neo_version : versionProperty('neo_version'),
mod_id : providers.gradleProperty('mod_id').get(),
mod_name : providers.gradleProperty('mod_name').get(),
mod_license : providers.gradleProperty('mod_license').get(),
mod_version : providers.gradleProperty('mod_version').get(),
]
inputs.properties replaceProperties
expand replaceProperties
from "src/main/templates"
into "build/generated/sources/modMetadata"
}
sourceSets.main.resources.srcDir generateModMetadata
neoForge.ideSyncTask generateModMetadata
if (versionProperty('minecraft_version') == '1.21.1') {
def syncModMetadataToClasses = tasks.register("syncModMetadataToClasses", Copy) {
dependsOn generateModMetadata
from(generateModMetadata) {
include 'META-INF/neoforge.mods.toml'
}
into layout.buildDirectory.dir('classes/java/main')
}
tasks.named('classes').configure {
dependsOn syncModMetadataToClasses
}
tasks.named('compileJava').configure {
finalizedBy syncModMetadataToClasses
}
}
publishing {
publications {
register('mavenJava', MavenPublication) {
from components.java
}
}
repositories {
maven {
url "file://${project.projectDir}/repo"
}
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
}
idea {
module {
downloadSources = true
downloadJavadoc = true
}
}