MultiLoader-Template/neoforge/build.gradle

113 lines
4.1 KiB
Groovy

plugins {
id 'multiloader-loader'
id 'net.neoforged.moddev'
}
def commonResources = project(':common').file('src/main/resources/').getAbsolutePath()
def neoforgeResources = file('src/main/resources/').getAbsolutePath()
def neoforgeBuildResources = file('build/resources/main/').getAbsolutePath()
def commonBuildResources = project(':common').file('build/resources/main/').getAbsolutePath()
def generatedOutput = project(':common').file('src/generated/resources/').getAbsolutePath()
neoForge {
version = neoforge_version
// Automatically enable neoforge AccessTransformers if the file exists
def at = project(':common').file('src/main/resources/META-INF/accesstransformer.cfg')
if (at.exists()) {
accessTransformers.from(at.absolutePath)
}
parchment {
minecraftVersion = parchment_minecraft
mappingsVersion = parchment_version
}
runs {
configureEach {
systemProperty('neoforge.enabledGameTestNamespaces', mod_id)
ideName = "NeoForge ${it.name.capitalize()} (${project.path})" // Unify the run config names with fabric
}
client {
client()
programArguments.addAll(
'--mod', project.mod_id,
'--all',
'--existing', neoforgeResources,
'--existing', commonResources,
'--existing', neoforgeBuildResources,
'--existing', commonBuildResources
)
}
data {
data()
// DataGen can be run by - "./gradlew :neoforge:runData" in Terminal.
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
programArguments.addAll(
'--mod', project.mod_id,
'--all',
'--output', generatedOutput,
'--existing', neoforgeResources,
'--existing', commonResources,
'--existing', neoforgeBuildResources,
'--existing', commonBuildResources
)
}
server {
server()
programArguments.addAll(
'--mod', project.mod_id,
'--all',
'--existing', neoforgeResources,
'--existing', commonResources,
'--existing', neoforgeBuildResources,
'--existing', commonBuildResources
)
}
}
mods {
"${mod_id}" {
sourceSet sourceSets.main
}
}
}
// 配置sourceJar任务
tasks.named('sourcesJar', Jar) {
dependsOn classes
dependsOn project(':common').tasks.named('sourcesJar') // 显式依赖common的source
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveClassifier.set('sources')
from sourceSets.main.allSource
from project(':common').sourceSets.main.allSource
}
// 配置javadoc任务
tasks.named('javadoc', Javadoc) {
source project(':common').sourceSets.main.allJava
source sourceSets.main.allJava
classpath = configurations.compileClasspath
classpath += project(':common').sourceSets.main.compileClasspath
options.encoding = 'UTF-8'
options.charSet = 'UTF-8'
options.links("https://docs.oracle.com/en/java/javase/21/docs/api/")
options.memberLevel = JavadocMemberLevel.PUBLIC
options.addBooleanOption('Xdoclint:none', true)
options.addStringOption('doctitle', "${mod_id} ${minecraft_version} ${version} Javadoc")
}
// 配置javadocJar任务
tasks.named('javadocJar', Jar) {
dependsOn javadoc
dependsOn project(':common').tasks.named('javadoc') // 显式依赖common的javadoc
archiveClassifier.set('javadoc')
from javadoc.destinationDir
from project(':common').javadoc.destinationDir
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
// 确保build任务包含所有需要的jar
tasks.named('build') {
dependsOn tasks.named('sourcesJar')
dependsOn tasks.named('javadocJar')
}
sourceSets.main.resources.srcDir project(':common').file('src/generated/resources')