build.gradle 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. import net.fabricmc.loom.task.RemapJarTask
  2. import java.text.SimpleDateFormat
  3. plugins {
  4. id 'fabric-loom' version '0.4.3'
  5. id 'maven-publish'
  6. id 'net.minecrell.licenser' version '0.4.1'
  7. id 'com.matthewprenger.cursegradle' version '1.4.0'
  8. }
  9. sourceCompatibility = targetCompatibility = 1.8
  10. archivesBaseName = "RoughlyEnoughItems"
  11. group = "me.shedaniel"
  12. def forceVersion = ""
  13. version = forceVersion != "" ? forceVersion : project.mod_version
  14. def includeDep = true
  15. minecraft {
  16. accessWidener = file("src/main/resources/rei.aw")
  17. }
  18. static def buildTime() {
  19. def df = new SimpleDateFormat("yyyyMMddHHmm")
  20. df.setTimeZone(TimeZone.getTimeZone("UTC"))
  21. return df.format(new Date())
  22. }
  23. license {
  24. header rootProject.file('HEADER')
  25. include '**/*.java'
  26. }
  27. repositories {
  28. }
  29. jar {
  30. from "LICENSE"
  31. }
  32. processResources {
  33. filesMatching('fabric.mod.json') {
  34. expand 'version': project.version
  35. }
  36. inputs.property "version", project.version
  37. }
  38. dependencies {
  39. minecraft("com.mojang:minecraft:${project.minecraft_version}")
  40. mappings("net.fabricmc:yarn:${project.yarn_version}:v2")
  41. modApi("net.fabricmc:fabric-loader:${project.fabricloader_version}")
  42. modApi("net.fabricmc.fabric-api:fabric-api:${project.fabric_api}") {
  43. exclude module: "fabric-biomes-v1"
  44. }
  45. modApi("me.shedaniel.cloth:cloth-events:${cloth_events_version}") {
  46. transitive = false
  47. }
  48. modImplementation("me.shedaniel.cloth:config-2:${cloth_config_version}") {
  49. exclude module: "fabric-api"
  50. }
  51. modApi("me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig1u}") {
  52. exclude module: "fabric-api"
  53. }
  54. modApi("org.jetbrains:annotations:18.0.0")
  55. modCompileOnly("io.github.prospector:modmenu:${modmenu_version}") {
  56. transitive = false
  57. }
  58. modRuntime("io.github.prospector:modmenu:${modmenu_version}") {
  59. transitive = false
  60. }
  61. if (includeDep) {
  62. afterEvaluate {
  63. def listAdded = new ArrayList(Arrays.asList((api_exculde as String).split(',')))
  64. def eachDep = { dep ->
  65. for (apiIncludeDepStr in (api_include as String).split(',')) {
  66. def apiIncludeGroup = apiIncludeDepStr.split(':')[0]
  67. def apiIncludeDep = apiIncludeDepStr.split(':')[1]
  68. if (dep.module.id.group == apiIncludeGroup && dep.module.id.name.startsWith(apiIncludeDep)) {
  69. def version = dep.module.id.version.indexOf('@') >= 0 ? dep.module.id.version.substring(0, dep.module.id.version.indexOf('@')) : dep.module.id.version
  70. def mavenDep = "${dep.module.id.group}:${dep.module.id.name}:$version"
  71. if (!(mavenDep in listAdded)) {
  72. include(mavenDep) {
  73. transitive = false
  74. }
  75. listAdded.add(mavenDep)
  76. }
  77. break
  78. }
  79. }
  80. }
  81. configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each eachDep
  82. configurations.runtimeClasspath.resolvedConfiguration.firstLevelModuleDependencies.each eachDep
  83. }
  84. }
  85. }
  86. task sourcesJar(type: Jar, dependsOn: classes) {
  87. classifier = "sources"
  88. from sourceSets.main.allSource
  89. }
  90. task remapMavenJar(type: RemapJarTask, dependsOn: jar) {
  91. // classifier = "maven"
  92. afterEvaluate {
  93. //noinspection GroovyAccessibility
  94. input = file("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar")
  95. archiveName = "${archivesBaseName}-${version}.jar"
  96. //noinspection GroovyAccessibility
  97. addNestedDependencies = false
  98. }
  99. }
  100. def releaseChangelog = "No changelog"
  101. /* Thank you modmenu & fablabs */
  102. task releaseOnCf {
  103. def df = new SimpleDateFormat("yyyy-MM-dd HH:mm")
  104. df.setTimeZone(TimeZone.getTimeZone("UTC"))
  105. def branch
  106. if (System.env.BRANCH_NAME) {
  107. branch = System.env.BRANCH_NAME
  108. branch = branch.substring(branch.lastIndexOf("/")+1)
  109. } else {
  110. branch = "git rev-parse --abbrev-ref HEAD".execute().in.text.trim()
  111. }
  112. if (branch == "HEAD") {
  113. branch = "git rev-parse --short HEAD".execute().in.text.trim()
  114. }
  115. def time = df.format(new Date())
  116. def changes = new StringBuilder()
  117. changes << "<h2>REI v$project.version for $project.supported_version</h2>Updated at <b>$time</b>.<br><a href=\"https://www.github.com/shedaniel/RoughlyEnoughItems/commits/$branch\">Click here for changelog</a>"
  118. def proc = "git log --max-count=200 --pretty=format:\"%s\"".execute()
  119. proc.in.eachLine { line ->
  120. def processedLine = line.toString()
  121. if (!processedLine.contains("New translations") && !processedLine.contains("Merge") && !processedLine.contains("branch")) {
  122. changes << "<br>- $processedLine"
  123. }
  124. }
  125. proc.waitFor()
  126. releaseChangelog = changes.toString()
  127. dependsOn tasks.getByName("curseforge")
  128. }
  129. curseforge {
  130. if (project.hasProperty('danielshe_curse_api_key') || System.getenv('danielshe_curse_api_key') != null) {
  131. apiKey = project.hasProperty('danielshe_curse_api_key') ? project.property('danielshe_curse_api_key') : System.getenv('danielshe_curse_api_key')
  132. project {
  133. id = '310111'
  134. releaseType = 'beta'
  135. changelogType = "html"
  136. changelog = releaseChangelog
  137. addGameVersion '1.16-Snapshot'
  138. addGameVersion 'Java 8'
  139. addGameVersion 'Fabric'
  140. relations {
  141. requiredDependency 'fabric-api'
  142. embeddedLibrary 'cloth'
  143. embeddedLibrary 'cloth-config'
  144. }
  145. mainArtifact(file("${project.buildDir}/libs/${project.archivesBaseName}-${project.version}.jar")) {
  146. displayName = "[Fabric $project.supported_version] v$project.version"
  147. }
  148. afterEvaluate {
  149. uploadTask.dependsOn("remapJar")
  150. }
  151. }
  152. }
  153. options {
  154. forgeGradleIntegration = false
  155. javaVersionAutoDetect = false
  156. }
  157. }
  158. publishing {
  159. publications {
  160. mavenJava(MavenPublication) {
  161. artifact(file("${project.buildDir}/libs/$archivesBaseName-${version}.jar")) {
  162. builtBy remapMavenJar
  163. }
  164. artifact(sourcesJar) {
  165. builtBy remapSourcesJar
  166. }
  167. }
  168. }
  169. repositories {
  170. if (project.hasProperty('danielshe_pass')) {
  171. maven {
  172. url = "http://deploy.modmuss50.me/"
  173. credentials {
  174. username = "danielshe"
  175. password = project.getProperty('danielshe_pass')
  176. }
  177. }
  178. }
  179. }
  180. }