@@ -12,31 +12,33 @@ apply plugin: 'maven-publish'
1212apply plugin : ' jacoco'
1313
1414import net.neoforged.gradle.common.tasks.PotentiallySignJar
15+ import net.darkhax.curseforgegradle.Constants
16+ import net.darkhax.curseforgegradle.TaskPublishCurseForge
1517
1618// Determine build number
1719String build_number = " DEV" // this will be referenced as simply build_number from now on.
1820if (System . getenv(). BUILD_NUMBER )
1921 build_number = System . getenv(). BUILD_NUMBER
20- if (System . getenv(). TRAVIS_BUILD_NUMBER )
21- build_number = System . getenv(). TRAVIS_BUILD_NUMBER
2222if (System . getenv(). GITHUB_RUN_ID )
2323 build_number = System . getenv(). GITHUB_RUN_NUMBER
24- if (System . getenv(). RELEASE || System . getenv() . TRAVIS_TAG )
24+ if (System . getenv(). RELEASE )
2525 build_number = " RELEASE"
2626logger. lifecycle " BUILDING VERSION: " + build_number
2727
28- // Set mod details
29- version = project. mod_version
30- group = " org.cyclops.integratedscripting"
31- archivesBaseName = " IntegratedScripting-${ project.minecraft_version} -neoforge"
28+ // Include build number in version
29+ if (build_number. equals(" RELEASE" ))
30+ version = " ${ project.mod_version} "
31+ else
32+ version = " ${ project.mod_version} -${ build_number} "
33+
3234base {
33- archivesName = archivesBaseName
35+ archivesName = " ${ mod_id } - ${ minecraft_version } -neoforge "
3436}
3537
36- // Set Java details
37- java. toolchain. languageVersion = JavaLanguageVersion . of(21 )
38+ java {
39+ toolchain. languageVersion = JavaLanguageVersion . of(java_version)
40+ }
3841compileJava. options. compilerArgs << " -Xmaxerrs" << " 9999"
39- println (' Java: ' + System . getProperty(' java.version' ) + ' JVM: ' + System . getProperty(' java.vm.version' ) + ' (' + System . getProperty(' java.vendor' ) + ' ) Arch: ' + System . getProperty(' os.arch' ))
4042
4143// Load secrets
4244def getSecrets () {
@@ -46,7 +48,38 @@ def getSecrets() {
4648 }
4749 return props
4850}
49- Properties secrets = getSecrets();
51+ def getCurseforgeKey () {
52+ if (secrets. curseforge_key) {
53+ return secrets. curseforge_key
54+ } else if (System . getenv(). GITHUB_ACTIONS && System . getenv(). CURSEFORGE_KEY_SECRET ) {
55+ return System . getenv(). CURSEFORGE_KEY_SECRET
56+ } else {
57+ return " DUMMY"
58+ }
59+ }
60+ def getModrinthKey () {
61+ if (secrets. modrinth_key) {
62+ return secrets. modrinth_key
63+ } else if (System . getenv(). GITHUB_ACTIONS && System . getenv(). MODRINTH_KEY_SECRET ) {
64+ return System . getenv(). MODRINTH_KEY_SECRET
65+ } else {
66+ return " DUMMY"
67+ }
68+ }
69+ def getChangelog () {
70+ if (System . getenv(). RELEASE ) {
71+ return file(" ./resources/changelog/${ project.minecraft_version} -${ project.mod_version} .txt" ). getText();
72+ } else {
73+ return " Changes since last release: ${ project.github_url} /compare/${ project.minecraft_version} -${ project.mod_version} ...${ System.getenv().GITHUB_SHA} "
74+ }
75+ }
76+ // ext {
77+ Properties secrets = getSecrets();
78+ secrets. curseforgeKey = getCurseforgeKey();
79+ secrets. modrinthKey = getModrinthKey();
80+ secrets. changelog = getChangelog();
81+ secrets. build_number = build_number;
82+ // }
5083
5184sourceSets {
5285 main
@@ -164,11 +197,6 @@ runs {
164197 }
165198}
166199
167- if (build_number. equals(" RELEASE" ))
168- version = " ${ project.mod_version} "
169- else
170- version = " ${ project.mod_version} -${ build_number} "
171-
172200jar {
173201 archiveClassifier. set(' slim' )
174202 manifest {
@@ -248,47 +276,65 @@ artifacts {
248276 archives javadocJar
249277}
250278
251- task publishCurseForge (type : net.darkhax.curseforgegradle.TaskPublishCurseForge ) {
252- dependsOn(tasks. jar)
253-
254- if (secrets. hasProperty(" curseforge_key" ) && secrets. hasProperty(" changelog" )) {
255- apiToken = secrets. curseforge_key
256- } else if (System . getenv(). GITHUB_ACTIONS && System . getenv(). CURSEFORGE_KEY_SECRET ) {
257- apiToken = System . getenv(). CURSEFORGE_KEY_SECRET
258- } else {
259- apiToken = " DUMMY"
279+ // Replace properties in files
280+ processResources {
281+ def expandProps = [
282+ ' mod_version' : mod_version,
283+ ' group' : project. group, // Else we target the task's group.
284+ ' minecraft_version' : minecraft_version,
285+ ' mod_name' : mod_name,
286+ ' mod_author' : mod_author,
287+ ' mod_id' : mod_id,
288+ ' license' : license,
289+ ' issue_tracker_url' : issue_tracker_url,
290+ ' display_url' : display_url,
291+ ' description' : project. description,
292+ ' neoforge_version' : neoforge_version,
293+ ' neoforge_loader_version_range' : neoforge_loader_version_range,
294+ ' neoforge_update_json_url' : neoforge_update_json_url,
295+ ' java_version' : java_version,
296+ ' cyclopscore_version' : cyclopscore_version,
297+ ' cyclopscore_version_semver' : cyclopscore_version. replaceAll(" -.*\$ " , " " ),
298+ ' commoncapabilities_version' : commoncapabilities_version,
299+ ' commoncapabilities_version_semver' : commoncapabilities_version. replaceAll(" -.*\$ " , " " ),
300+ ' integrateddynamics_version' : integrateddynamics_version,
301+ ' integrateddynamics_version_semver' : integrateddynamics_version. replaceAll(" -.*\$ " , " " )
302+ ]
303+
304+ filesMatching([' pack.mcmeta' , ' META-INF/mods.toml' , ' META-INF/neoforge.mods.toml' , ' mixins.*.json' ]) {
305+ expand expandProps
260306 }
307+ inputs. properties(expandProps)
308+ }
261309
262- def projectId = " 889785" // my project url is http://minecraft.curseforge.com/mc-mods/889785/
263-
264- def mainFile = upload(projectId, shadowJar)
265- mainFile. releaseType = ' release'
266- mainFile. changelogType = " text"
267- mainFile. changelog = file(" resources/changelog/${ project.minecraft_version} -${ project.version} .txt" )
268- mainFile. addGameVersion(project. minecraft_version)
269- mainFile. addModLoader(" NeoForge" )
270-
271- mainFile. addRequirement(' cyclops-core' )
272- mainFile. addRequirement(' integrated-dynamics' )
310+ task publishCurseForge (type : TaskPublishCurseForge ) {
311+ dependsOn(tasks. jar)
312+ apiToken = secrets. curseforgeKey;
313+ def mainFile = upload(project. curseforge_project_id, shadowJar)
314+ mainFile. releaseType = secrets. build_number. equals(" RELEASE" ) ? Constants . RELEASE_TYPE_RELEASE : Constants . RELEASE_TYPE_BETA
315+ mainFile. changelogType = " text"
316+ mainFile. changelog = secrets. changelog
317+ mainFile. addJavaVersion(" Java ${ project.java_version} " )
318+ mainFile. addGameVersion(project. minecraft_version)
319+ mainFile. addModLoader(" NeoForge" )
320+
321+ mainFile. addRequirement(" cyclops-core" )
322+ mainFile. addRequirement(' integrated-dynamics' )
273323}
274324
275325modrinth {
276- if (secrets. modrinth_key) {
277- token = secrets. modrinth_key
278- } else if (System . getenv(). GITHUB_ACTIONS && System . getenv(). MODRINTH_KEY_SECRET ) {
279- token = System . getenv(). MODRINTH_KEY_SECRET
280- } else {
281- token = " DUMMY"
282- }
283- projectId = " uDJkuFRe"
284- versionNumber = project. minecraft_version + ' -' + project. mod_version
285- versionType = project. release_type
326+ token = secrets. modrinthKey;
327+ projectId = " ${ modrinth_project_id} "
328+ versionNumber = project. minecraft_version + ' -' + project. version
329+ versionName = " ${ project.version} for NeoForge ${ project.minecraft_version} "
330+ versionType = secrets. build_number. equals(" RELEASE" ) ? " release" : " beta"
286331 uploadFile = shadowJar
287332 gameVersions = [ project. minecraft_version ]
288- changelog = provider { file(" resources/changelog/${ project.minecraft_version} -${ project.version} .txt" ). getText() }
289- dependencies { // A special DSL for creating dependencies
290- required. project " Z9DM0LJ4" // Cyclops Core
291- required. project " yYzdQHJI" // Integrated Dynamics
333+ changelog = provider { secrets. changelog }
334+
335+ dependencies {
336+ required. project " Z9DM0LJ4" // Cyclops Core
337+ required. project " yYzdQHJI" // Integrated Dynamics
292338 }
293339}
294340
0 commit comments