MultiLoader-Template/fabric/build.gradle

142 lines
5.5 KiB
Groovy

plugins {
id 'multiloader-loader'
id 'fabric-loom'
}
dependencies {
minecraft "com.mojang:minecraft:${minecraft_version}"
mappings loom.layered {
officialMojangMappings()
parchment("org.parchmentmc.data:parchment-${parchment_minecraft}:${parchment_version}@zip")
}
modImplementation "net.fabricmc:fabric-loader:${fabric_loader_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}"
localRuntime 'net.covers1624:DevLogin:0.1.0.5'
}
loom {
def commonResources = project(':common').file('src/main/resources/').getAbsolutePath().toString()
def fabricResources = file('src/main/resources/').getAbsolutePath().toString()
def fabricBuildResources = file('build/resources/main/').getAbsolutePath().toString()
def commonBuildResources = project(':common').file('build/resources/main/').getAbsolutePath().toString()
def generatedOutput = project(':common').file('src/generated/resources/').getAbsolutePath().toString()
if (project(":common").file("src/main/resources/${mod_id}.accesswidener").exists()) {
accessWidenerPath.set(project(":common").file("src/main/resources/${mod_id}.accesswidener"))
}
mixin {
defaultRefmapName.set("${mod_id}.refmap.json")
}
runs {
client {
client()
setConfigName('Fabric Client')
ideConfigGenerated(true)
runDir('runs/client')
programArgs "--username", "dev"
def args = [
"-Dlib39.modid=${mod_id}".toString(),
"-Dlib39.output=${generatedOutput}".toString(),
"-Dlib39.existing.fabric=${fabricResources}".toString(),
"-Dlib39.existing.common=${commonResources}".toString(),
"-Dlib39.existing.fabricBuild=${fabricBuildResources}".toString(),
"-Dlib39.existing.commonBuild=${commonBuildResources}".toString()
]
vmArgs.addAll(args)
// 也可以添加JVM参数
vmArgs.addAll(
"-Dfabric.log.level=info",
"-Dmixin.debug.export=true"
)
}
server {
server()
setConfigName('Fabric Server')
ideConfigGenerated(true)
runDir('runs/server')
def args = [
"-Dlib39.modid=${mod_id}".toString(),
"-Dlib39.output=${generatedOutput}".toString(),
"-Dlib39.existing.fabric=${fabricResources}".toString(),
"-Dlib39.existing.common=${commonResources}".toString(),
"-Dlib39.existing.fabricBuild=${fabricBuildResources}".toString(),
"-Dlib39.existing.commonBuild=${commonBuildResources}".toString()
]
vmArgs.addAll(args)
}
}
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
}
tasks.named('javadoc', Javadoc) {
source project(':common').sourceSets.main.allJava
dependsOn project(':common').tasks.named('javadoc') // 显式依赖common的javadoc
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")
}
tasks.named('javadocJar', Jar) {
dependsOn javadoc
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveClassifier.set('javadoc')
from javadoc.destinationDir
from project(':common').javadoc.destinationDir
}
tasks.named('build') {
dependsOn tasks.named('sourcesJar')
dependsOn tasks.named('javadocJar')
}
publishing {
publications {
mavenJava(MavenPublication) {
// 重置artifactsId
artifactId = "${mod_id}-fabric-${minecraft_version}"
artifacts.clear()
// 手动添加需要的artifacts
artifact(remapJar) {
builtBy remapJar
}
artifact(remapSourcesJar) {
builtBy remapSourcesJar
classifier = 'sources'
}
artifact(javadocJar) {
builtBy javadocJar
classifier = 'javadoc'
}
pom {
name = mod_name
description = project.description ?: "default"
developers {
developer {
id = mod_author
name = mod_author
}
}
}
}
}
}
tasks.named('generateMetadataFileForMavenJavaPublication') {
dependsOn tasks.named('remapJar')
dependsOn tasks.named('remapSourcesJar')
dependsOn tasks.named('javadocJar')
}
}