build.gradle 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. buildscript {
  2. repositories {
  3. maven { url = 'https://maven.minecraftforge.net' }
  4. maven { url = 'https://maven.blamejared.com' }
  5. maven { url = 'https://repo.spongepowered.org/repository/maven-public/' }
  6. mavenCentral()
  7. }
  8. dependencies {
  9. classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
  10. classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.4.0'
  11. classpath group: 'com.blamejared', name: 'ModTemplate', version: '2.+', changing: true
  12. classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
  13. }
  14. }
  15. apply plugin: 'java'
  16. apply plugin: 'net.minecraftforge.gradle'
  17. apply plugin: 'com.blamejared.modtemplate'
  18. apply plugin: 'eclipse'
  19. apply plugin: 'org.spongepowered.mixin'
  20. apply plugin: 'maven-publish'
  21. apply plugin: 'com.matthewprenger.cursegradle'
  22. import com.blamejared.modtemplate.Utils
  23. archivesBaseName = "${mod_name}-forge-${minecraft_version}"
  24. version = Utils.updatingVersion(mod_version)
  25. mixin {
  26. add sourceSets.main, "${mod_id}.refmap.json"
  27. config "${mod_id}.mixins.json"
  28. config "${mod_id}.forge.mixins.json"
  29. }
  30. minecraft {
  31. mappings channel: 'official', version: minecraft_version
  32. if (project.hasProperty('forge_ats_enabled') && project.findProperty('forge_ats_enabled').toBoolean()) {
  33. // This location is hardcoded in Forge and can not be changed.
  34. // https://github.com/MinecraftForge/MinecraftForge/blob/be1698bb1554f9c8fa2f58e32b9ab70bc4385e60/fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ModFile.java#L123
  35. accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
  36. project.logger.debug('Forge Access Transformers are enabled for this project.')
  37. }
  38. runs {
  39. client {
  40. workingDirectory project.file('run')
  41. ideaModule "${rootProject.name}.${project.name}.main"
  42. taskName 'Client'
  43. args "-mixin.config=${mod_id}.mixins.json", "-mixin.config=${mod_id}.forge.mixins.json"
  44. mods {
  45. modClientRun {
  46. source sourceSets.main
  47. source project(":Common").sourceSets.main
  48. }
  49. }
  50. }
  51. server {
  52. workingDirectory project.file('run')
  53. ideaModule "${rootProject.name}.${project.name}.main"
  54. taskName 'Server'
  55. args "-mixin.config=${mod_id}.mixins.json", "-mixin.config=${mod_id}.forge.mixins.json"
  56. mods {
  57. modServerRun {
  58. source sourceSets.main
  59. source project(":Common").sourceSets.main
  60. }
  61. }
  62. }
  63. data {
  64. workingDirectory project.file('run')
  65. ideaModule "${rootProject.name}.${project.name}.main"
  66. args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
  67. taskName 'Data'
  68. args "-mixin.config=${mod_id}.mixins.json", "-mixin.config=${mod_id}.forge.mixins.json"
  69. mods {
  70. modDataRun {
  71. source sourceSets.main
  72. source project(":Common").sourceSets.main
  73. }
  74. }
  75. }
  76. }
  77. }
  78. modTemplate {
  79. mcVersion minecraft_version
  80. curseHomepage curse_homepage
  81. displayName mod_name
  82. modLoader "Forge"
  83. changelog {
  84. enabled true
  85. firstCommit git_first_commit
  86. repo git_repo
  87. }
  88. versionTracker {
  89. enabled true
  90. author mod_author
  91. projectName mod_name
  92. }
  93. webhook {
  94. enabled true
  95. curseId curse_project_id
  96. avatarUrl mod_avatar
  97. }
  98. }
  99. sourceSets.main.resources.srcDir 'src/generated/resources'
  100. dependencies {
  101. minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
  102. compileOnly project(":Common")
  103. annotationProcessor 'org.spongepowered:mixin:0.8.4-SNAPSHOT:processor'
  104. }
  105. tasks.withType(JavaCompile) {
  106. source(project(":Common").sourceSets.main.allSource)
  107. }
  108. processResources {
  109. from project(":Common").sourceSets.main.resources
  110. filesMatching('*.mixins.json') {
  111. expand "refmap_target": "${mod_id}."
  112. }
  113. }
  114. jar {
  115. manifest {
  116. attributes([
  117. "Specification-Title" : mod_name,
  118. "Specification-Vendor" : mod_author,
  119. "Specification-Version" : "1",
  120. "Implementation-Title" : project.name,
  121. "Implementation-Version" : project.jar.archiveVersion,
  122. "Implementation-Vendor" : mod_author,
  123. "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
  124. "MixinConfigs" : "controlling.mixins.json"
  125. ])
  126. }
  127. }
  128. jar.finalizedBy('reobfJar')
  129. publishing {
  130. publications {
  131. mavenJava(MavenPublication) {
  132. groupId project.group
  133. artifactId project.archivesBaseName
  134. version project.version
  135. artifact jar
  136. }
  137. }
  138. repositories {
  139. maven {
  140. url "file://" + System.getenv("local_maven")
  141. }
  142. }
  143. }
  144. curseforge {
  145. apiKey = findProperty('curseforge_api_token') ?: 0
  146. project {
  147. id = curse_project_id
  148. releaseType = 'release'
  149. changelog = file("changelog.md")
  150. changelogType = 'markdown'
  151. addGameVersion "Forge"
  152. addGameVersion minecraft_version
  153. }
  154. }