plugins { id 'multiloader-loader' id 'net.neoforged.moddev' } def commonResources = project(':common').file('src/main/resources/').getAbsolutePath() def forgeResources = file('src/main/resources/').getAbsolutePath() def forgeBuildResources = 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 validateAccessTransformers = true def at = project(':common').file('src/main/resources/META-INF/accesstransformer.cfg') if (at.exists()) { accessTransformers = ["src/main/resources/META-INF/accesstransformer.cfg"] } parchment { minecraftVersion = parchment_minecraft mappingsVersion = parchment_version } runs { client { client() devLogin = true programArguments.addAll( '--mod', project.mod_id, '--all', '--existing', forgeResources, '--existing', commonResources, '--existing', forgeBuildResources, '--existing', commonBuildResources ) } data { data() // 使用之前定义的变量 programArguments.addAll( '--mod', project.mod_id, '--all', '--output', generatedOutput, '--existing', forgeResources, '--existing', commonResources, '--existing', forgeBuildResources, '--existing', commonBuildResources ) } server { server() } } mods { "${mod_id}" { sourceSet sourceSets.main } } } sourceSets.main.resources.srcDir project(':common').file('src/generated/resources') dependencies { compileOnly project(":common") implementation(annotationProcessor("io.github.llamalad7:mixinextras-common:0.2.0")) implementation(group: 'tschipp.carryon', name: 'carryon-neoforge-1.21.1', version: '2.2.4.4') { transitive = false } implementation "curse.maven:jade-324717:7545219" } // 配置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') } test { useJUnitPlatform() } // 处理资源 processResources { from project(':common').sourceSets.main.resources inputs.property "version", project.version inputs.property "minecraft_version", minecraft_version inputs.property "neoforge_version", neoforge_version inputs.property "mod_id", mod_id inputs.property "mod_name", mod_name inputs.property "description", description inputs.property "mod_author", mod_author inputs.property "credits", credits filesMatching(['META-INF/mods.toml', 'pack.mcmeta', "*.mixins.json"]) { expand([ version: project.version, minecraft_version: minecraft_version, neoforge_version: neoforge_version, mod_id: mod_id, mod_name: mod_name, description: description, mod_author: mod_author, "credits": credits ]) } duplicatesStrategy = DuplicatesStrategy.EXCLUDE }