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}" } 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') } }