build.gradle.kts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import com.blamejared.modtemplate.Utils
  2. import net.darkhax.curseforgegradle.TaskPublishCurseForge
  3. import net.darkhax.curseforgegradle.Constants as CFG_Constants
  4. plugins {
  5. `maven-publish`
  6. id("fabric-loom") version "0.10-SNAPSHOT"
  7. id("com.blamejared.modtemplate")
  8. id("net.darkhax.curseforgegradle") version ("1.0.8")
  9. }
  10. val modVersion: String by project
  11. val minecraftVersion: String by project
  12. val fabricLoaderVersion: String by project
  13. val fabricVersion: String by project
  14. val modName: String by project
  15. val modAuthor: String by project
  16. val modId: String by project
  17. val modAvatar: String by project
  18. val curseProjectId: String by project
  19. val curseHomepageLink: String by project
  20. val gitFirstCommit: String by project
  21. val gitRepo: String by project
  22. val modJavaVersion: String by project
  23. val baseArchiveName = "${modName}-fabric-${minecraftVersion}"
  24. version = Utils.updatingSemVersion(modVersion)
  25. base {
  26. archivesName.set(baseArchiveName)
  27. }
  28. dependencies {
  29. minecraft("com.mojang:minecraft:${minecraftVersion}")
  30. mappings(loom.layered {
  31. officialMojangMappings()
  32. parchment("org.parchmentmc.data:parchment-1.18.1:2021.12.19@zip")
  33. })
  34. modImplementation("net.fabricmc:fabric-loader:${fabricLoaderVersion}")
  35. modImplementation("net.fabricmc.fabric-api:fabric-api:${fabricVersion}")
  36. implementation(project(":Common"))
  37. }
  38. loom {
  39. runs {
  40. named("client") {
  41. client()
  42. setConfigName("Fabric Client")
  43. ideConfigGenerated(true)
  44. runDir("run")
  45. }
  46. named("server") {
  47. server()
  48. setConfigName("Fabric Server")
  49. ideConfigGenerated(true)
  50. runDir("run_server")
  51. }
  52. }
  53. }
  54. modTemplate {
  55. mcVersion(minecraftVersion)
  56. curseHomepage(curseHomepageLink)
  57. displayName(modName)
  58. modLoader("Fabric")
  59. changelog {
  60. enabled(true)
  61. firstCommit(gitFirstCommit)
  62. repo(gitRepo)
  63. }
  64. versionTracker {
  65. enabled(true)
  66. author(modAuthor)
  67. projectName("${modName}-Fabric")
  68. homepage(curseHomepageLink)
  69. }
  70. }
  71. tasks.processResources {
  72. outputs.upToDateWhen { false }
  73. from(project(":Common").sourceSets.main.get().resources)
  74. inputs.property("version", project.version)
  75. filesMatching("fabric.mod.json") {
  76. expand("version" to project.version)
  77. }
  78. filesMatching("*.mixins.json") {
  79. expand("refmap_target" to "$baseArchiveName-")
  80. }
  81. }
  82. tasks.withType<JavaCompile> {
  83. source(project(":Common").sourceSets.main.get().allSource)
  84. }
  85. publishing {
  86. publications {
  87. register("mavenJava", MavenPublication::class) {
  88. artifactId = baseArchiveName
  89. from(components["java"])
  90. }
  91. }
  92. repositories {
  93. maven("file://${System.getenv("local_maven")}")
  94. }
  95. }
  96. tasks.create<TaskPublishCurseForge>("publishCurseForge") {
  97. apiToken = Utils.locateProperty(project, "curseforge_api_token")
  98. val mainFile = upload(curseProjectId, file("${project.buildDir}/libs/$baseArchiveName-$version.jar"))
  99. mainFile.changelogType = "markdown"
  100. mainFile.changelog = Utils.getFullChangelog(project)
  101. mainFile.releaseType = CFG_Constants.RELEASE_TYPE_RELEASE
  102. mainFile.addJavaVersion("Java $modJavaVersion")
  103. mainFile.addGameVersion(minecraftVersion)
  104. doLast {
  105. project.ext.set("curse_file_url", "${curseHomepageLink}/files/${mainFile.curseFileId}")
  106. }
  107. }