plugins { id 'net.neoforged.moddev' version '2.0.78' id 'maven-publish' } repositories { mavenCentral() def localRepository = mavenLocal() remove(localRepository) add(0, localRepository) // CurseMaven for Jade and other mods maven { url "https://cursemaven.com" content { includeGroup "curse.maven" } } // Modrinth for Jade maven { url "https://api.modrinth.com/maven" } } group = mod_group var modName = mod_name var mcVersion = minecraft_version base { archivesName = "${modName}-${mcVersion}-neoforge" } java { toolchain.languageVersion = JavaLanguageVersion.of(21) withSourcesJar() } neoForge { version = neoforge_version runs { client { client() } server { server() } } mods { "${mod_id}" { sourceSet sourceSets.main } } } dependencies { compileOnly "org.appliedenergistics:appliedenergistics2:19.2.17:api" compileOnly "org.appliedenergistics:appliedenergistics2:19.2.17" // 加这行保留!!让AE2内部类可编译 compileOnly files('library/thaumcraft-0.2.2.95-port.229.jar') // 必须与整合包运行版本一致(0.2.2.95);.34 缺少 getRemainingItems/findMatchingArcaneRecipeEntry 等 API compileOnly files('library/jei-1.21.1-neoforge-19.39.0.368.jar') compileOnly files('library/ae2jeiintegration-1.2.1.jar') compileOnly files('library/InventoryProfilesNext-neoforge-1.21.1-2.2.5.jar') compileOnly files('library/extendedae_plus-1.6.1.jar') // eap mixin target(InputEvents.toGenericStack) compileOnly "maven.modrinth:jade:${jade_version}" } tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' it.options.release = 21 } // mods.toml 的 version 也用 git 实时版本(与 jar 版本一致,不依赖写死的 mod_version) var modVersion = gitVersion() def loaderRange = project.findProperty('loader_version_range') ?: '[4,)' def neoforgeRange = project.findProperty('neoforge_version_range') ?: '[21,)' def mcRange = project.findProperty('minecraft_version_range') ?: '[1.21.1,1.22)' processResources { filesMatching('META-INF/neoforge.mods.toml') { expand([ 'version': modVersion, 'loader_version_range': loaderRange, 'neoforge_version_range': neoforgeRange, 'minecraft_version_range': mcRange ]) } } jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE // PCL/启动器显示的 jar 图标(mod 列表图标走 neoforge.mods.toml 的 logoFile) from('src/main/resources') { include 'pack.png' } } //// 获取git提交总数 //def gitCommitCount = providers.exec { // commandLine 'git', 'rev-list', '--count', 'HEAD' //}.standardOutput.asText.map { it.trim() } // //// 最终完整版本 = 主版本+构建号 //version = "${mod_version}.${gitCommitCount.get()}-alpha" // build.gradle 替换现有 version 逻辑 def gitVersion() { def describe = providers.exec { commandLine 'git', 'describe', '--tags', '--always' }.standardOutput.asText.map { it.trim() }.get() // 支持 "2.2" / "v2.2.0" / "2.2-3-gabc1234" / "abc1234"(无tag时) // 版本 = tag 的 X.Y + 提交数:tag 2.2 + 2 提交 → 2.2.2 // find() 只匹配开头,忽略尾部 commit hash(-gabc1234) def m = describe =~ /^v?(\d+\.\d+)(?:\.\d+)?(?:-(\d+))?/ if (m.find()) { def xy = m.group(1) // 2.2 def count = m.group(2) ? m.group(2) : '0' // tag 后提交数 return "${xy}.${count}-alpha" // 2.2.2-alpha } // 兜底(从未打 tag):0.0.<提交总数>-alpha,不依赖写死的 mod_version def count = providers.exec { commandLine 'git', 'rev-list', '--count', 'HEAD' }.standardOutput.asText.map { it.trim() }.get() return "0.0.${count}-alpha" } version = modVersion