1
+ // TODO remove buildscript block
1
2
buildscript {
3
+
2
4
repositories {
3
- maven { url = ' https://files.minecraftforge.net/maven' }
4
- maven { url ' https://plugins.gradle.org/m2/' }
5
- jcenter()
5
+
6
6
mavenCentral()
7
7
}
8
+
8
9
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.diluv.schoomp' , name : ' Schoomp' , version : ' 1.1.0'
10
+
11
+ classpath group : ' com.diluv.schoomp' , name : ' Schoomp' , version : ' 1.2.5'
12
12
}
13
13
}
14
14
15
- apply plugin : ' net.minecraftforge.gradle'
16
- apply plugin : ' com.matthewprenger.cursegradle'
17
- apply plugin : ' maven-publish'
18
- apply plugin : ' eclipse'
19
-
20
- apply from : ' ./gradle/secrets.gradle'
21
- apply from : ' ./gradle/markdown-git-changelog.gradle'
22
- apply from : ' ./gradle/artifacts.gradle'
23
- apply from : ' ./gradle/patreon.gradle'
24
-
25
- import groovy.json.JsonSlurper
26
- import groovy.json.JsonOutput
27
- import com.diluv.schoomp.Webhook
28
- import com.diluv.schoomp.message.Message
29
- import com.diluv.schoomp.message.embed.Embed
30
- import com.diluv.schoomp.message.embed.Footer
31
-
32
- if (project. hasProperty(' secretFile' )) {
33
- loadSecrets(new File ((String ) findProperty(' secretFile' )))
15
+ plugins {
16
+ id ' net.darkhax.curseforgegradle' version ' 1.1.17' apply(false )
17
+ id ' com.modrinth.minotaur' version ' 2.8.5' apply(false )
18
+ id ' org.jetbrains.gradle.plugin.idea-ext' version ' 1.1.7'
34
19
}
35
20
36
- version = " ${ mod_version} ." + getBuildNumber()
37
- archivesBaseName = " ${ mod_name} -${ minecraft_version} "
21
+ apply from : ' gradle/property_loader.gradle'
22
+ apply from : ' gradle/build_number.gradle'
23
+ apply from : ' gradle/git_changelog.gradle'
24
+ apply from : ' gradle/version_checker.gradle'
38
25
39
- java . toolchain . languageVersion = JavaLanguageVersion . of( 17 )
26
+ subprojects {
40
27
41
- minecraft {
28
+ apply plugin : ' maven-publish '
42
29
43
- mappings channel : ' official' , version : " ${ minecraft_version} " . toString()
44
-
45
- if (project. hasProperty(' mod_at' )) {
46
-
47
- accessTransformer = file(findProperty(' mod_at' ))
48
- }
49
-
50
- runs {
51
- client {
52
-
53
- workingDirectory project. file(' run' )
54
- taskName " ${ mod_name} Client"
55
-
56
- mods {
57
- badmobs {
58
- source sourceSets. main
59
- }
60
- }
61
- }
30
+ apply from : ' ../gradle/property_loader.gradle'
31
+ apply from : ' ../gradle/java.gradle'
32
+ apply from : ' ../gradle/build_number.gradle'
33
+ apply from : ' ../gradle/git_changelog.gradle'
34
+ apply from : ' ../gradle/minify_jsons.gradle'
35
+ apply from : ' ../gradle/signing.gradle'
62
36
63
- server {
64
- workingDirectory project. file(' run' )
65
- taskName " ${ mod_name} Server"
66
-
67
- mods {
68
- badmobs {
69
- source sourceSets. main
70
- }
71
- }
72
- }
73
- }
74
- }
37
+ // Disables Gradle's custom module metadata from being published to maven. The
38
+ // metadata includes mapped dependencies which are not reasonably consumable by
39
+ // other mod developers.
40
+ tasks. withType(GenerateModuleMetadata ) {
75
41
76
- dependencies {
77
-
78
- minecraft " net.minecraftforge:forge:${ forge_version} "
79
- }
80
-
81
- jar {
82
- manifest {
83
- attributes([
84
- ' Timestamp' : System . currentTimeMillis(),
85
- ' Specification-Title' : " ${ mod_name} " ,
86
- ' Specification-Vendor' : " ${ mod_vendor} " ,
87
- ' Specification-Version' : " ${ version} " ,
88
- ' Implementation-Title' : project. archivesBaseName,
89
- ' Implementation-Version' : project. version,
90
- ' Implementation-Vendor' :" ${ mod_vendor} " ,
91
- ' Implementation-Timestamp' : new Date (). format(" yyyy-MM-dd'T'HH:mm:ssZ" ),
92
- ' Built-On-Java' : " ${ System.getProperty('java.vm.version')} (${ System.getProperty('java.vm.vendor')} )" ,
93
- ' Built-On' : " ${ forge_version} "
94
- ])
42
+ enabled = false
95
43
}
96
- }
97
-
98
- String getBuildNumber () {
99
44
100
- return System . getenv(' BUILD_NUMBER' ) ? System . getenv(' BUILD_NUMBER' ) : System . getenv(' TRAVIS_BUILD_NUMBER' ) ? System . getenv(' TRAVIS_BUILD_NUMBER' ) : ' 0' ;
101
- }
102
-
103
- processResources {
45
+ // Enable Mixins
46
+ project. ext. mixin_enabled = project. file(" src/main/resources/${ mod_id} .mixins.json" ). exists()
47
+ project. logger. lifecycle(" Mixin ${ project.ext.mixin_enabled ? 'enabled' : 'disabled'} for project ${ project.name} ." )
104
48
105
- def buildProps = project. properties. clone()
106
-
107
- // Replaces FML's magic file.jarVersion string with the correct version at
108
- // build time.
109
- buildProps. put(' file' , [jarVersion : project. version])
49
+ repositories {
110
50
111
- filesMatching([ ' META-INF/mods.toml ' , ' pack.mcmeta ' ]) {
51
+ mavenCentral()
112
52
113
- expand buildProps
53
+ maven {
54
+ name = ' Sponge / Mixin'
55
+ url = ' https://repo.spongepowered.org/repository/maven-public/'
56
+ }
114
57
}
115
58
}
116
59
117
- curseforge {
118
60
119
- apiKey = findProperty(' curse_auth' ) ?: 0
120
- def versions = " ${ curse_versions} " . split(' , ' )
121
- project {
122
-
123
- id = " ${ curse_project} "
124
- releaseType = ' alpha'
125
- changelog = getGitChangelog() + " \n\n Like the mod? Consider following me on [Twitter](https://twitter.com/darkhaxdev) and joining the [Discord](https://discord.darkhax.net)\n\n Huge thanks to my supporters on [Patreon](https://www.patreon.com/Darkhax?MCChangelog?${ mod_name} )\n\n " + getPledgeLog()
126
- changelogType = ' markdown'
127
-
128
- versions. each {
129
-
130
- addGameVersion " ${ it} "
131
- }
61
+ import com.diluv.schoomp.Webhook
62
+ import com.diluv.schoomp.message.Message
63
+ import com.diluv.schoomp.message.embed.Embed
132
64
133
- if (project . hasProperty( ' curse_requirements ' ) || project . hasProperty( ' curse_optionals ' ) ) {
65
+ task postDiscord ( ) {
134
66
135
- mainArtifact(jar) {
67
+ doLast {
68
+ try {
136
69
137
- relations {
70
+ // Create a new webhook instance for Discord
71
+ def webhook = new Webhook (findProperty(' curse_discord_webhook' ), " ${ project.ext.mod_name} CurseForge Gradle Upload" )
138
72
139
- if (project. hasProperty(' curse_requirements' )) {
140
- def requirements = " ${ curse_requirements} " . split(' , ' )
141
- requirements. each {
73
+ // Craft a message to send to Discord using the webhook.
74
+ def message = new Message ()
75
+ message. setUsername(" Mod Update: ${ project.ext.mod_name} " )
76
+ message. setContent(" ${ project.ext.mod_name} ${ project.version} for Minecraft ${ project.ext.minecraft_version} has been published!" )
142
77
143
- requiredLibrary " ${ it} "
144
- }
145
- }
78
+ def embed = new Embed ();
79
+ def downloadSources = new StringJoiner (' \n ' )
146
80
147
- if (project. hasProperty(' curse_optionals' )) {
148
- def optionals = " ${ curse_optionals} " . split(' , ' )
149
- optionals. each {
81
+ if (project(' :forge' ). hasProperty(' curse_file_url' )) {
150
82
151
- optionalLibrary " ${ it} "
152
- }
153
- }
154
- }
83
+ downloadSources. add(" <:forge:916233930091401266> [Forge](${ project(':forge').findProperty('curse_file_url')} )" )
155
84
}
156
- }
157
-
158
- addArtifact(sourcesJar)
159
- addArtifact(javadocJar)
160
- addArtifact(deobfJar)
161
- }
162
- }
163
-
164
- tasks. getByName(" curseforge" ). doLast {
165
-
166
- try {
167
-
168
- // Reads the file ID given to us by CurseForge
169
- def newFileId = tasks. getByName(" curseforge${ curse_project} " ). property(' mainArtifact' ). fileID
170
-
171
- def webhook = new Webhook (findProperty(' discordCFWebhook' ), " ${ project.findProperty('mod_name')} Gradle Upload" );
172
-
173
- def message = new Message ();
174
- message. setUsername(findProperty(' mod_name' ));
175
- message. setContent(" ${ project.findProperty('mod_name')} ${ version} for Minecraft ${ findProperty('minecraft_version')} has been released! The download will be public soon." );
176
-
177
- def embed = new Embed ();
178
- embed. addField(' Download' , " ${ project.findProperty('curse_page')} /files/$newFileId " , false );
179
- embed. addField(' Change Log' , " ${ getGitChangelog() ?: 'Unavailable :('} " , false );
180
- embed. setColor(0xFF8000 );
181
- message. addEmbed(embed);
182
-
183
- webhook. sendMessage(message);
184
- }
185
-
186
- catch (IOException e) {
187
- println ' Failed to push to the Discord webhook.'
188
- }
189
- }
190
85
191
- task updateVersionTracker {
192
-
193
- onlyIf {
194
-
195
- project. hasProperty(' versionTrackerAPI' )
196
- }
197
-
198
- doLast {
199
- def body = [
200
- ' author' : " ${ project.findProperty('mod_vendor')} " ,
201
- ' projectName' : " ${ project.findProperty('mod_name').toLowerCase()} " ,
202
- ' gameVersion' : " ${ project.findProperty('minecraft_version')} " ,
203
- ' projectVersion' : " ${ version} " ,
204
- ' homepage' : " ${ project.findProperty('mod_download')} " ,
205
- ' uid' : " ${ project.findProperty('versionTrackerKey')} "
206
- ]
207
-
208
- // Opens a connection to the version tracker API and writes the payload JSON.
209
- def req = new URL (project. findProperty(' versionTrackerAPI' )). openConnection()
210
- req. setRequestMethod(' POST' )
211
- req. setRequestProperty(' Content-Type' , ' application/json; charset=UTF-8' )
212
- req. setRequestProperty(' User-Agent' , " ${ project.findProperty('mod_name')} Tracker Gradle" )
213
- req. setDoOutput(true )
214
- req. getOutputStream(). write(JsonOutput . toJson(body). getBytes(" UTF-8" ))
215
-
216
- // We need to attempt a read in order to actually send the message.
217
- println " VersionCheck Status code: ${ req.getResponseCode()} "
218
- println " VersionCheck Response: ${ req.getInputStream().getText()} "
219
- }
220
- }
86
+ // Add Curseforge DL link if available.
87
+ def downloadString = downloadSources. toString()
221
88
222
- publishing {
89
+ if (downloadString && ! downloadString . isEmpty()) {
223
90
224
- tasks. publish. dependsOn ' build'
225
-
226
- publications {
91
+ embed. addField(' Download' , downloadString, false )
92
+ }
227
93
228
- mavenJava(MavenPublication ) {
229
-
230
- artifactId project. archivesBaseName
94
+ // Add a changelog field if a changelog exists.
95
+ if (project. ext. mod_changelog && ! project. ext. mod_changelog. isEmpty()) {
231
96
232
- // Base mod archive.
233
- artifact jar
234
-
235
- // Adds the sources as an artifact.
236
- artifact sourcesJar {
237
- classifier ' sources'
97
+ embed. addField(' Changelog' , getChangelog(1500 ), false )
238
98
}
239
99
240
- // Adds the javadocs as an artifact.
241
- artifact javadocJar {
242
- classifier ' javadoc '
243
- }
100
+ embed . setColor( 0xFF8000 )
101
+ message . addEmbed(embed)
102
+
103
+ webhook . sendMessage(message)
244
104
}
245
- }
246
105
247
- repositories {
248
- maven {
249
- // Sets the maven URL
250
- url findProperty(' localMaven' )
106
+ catch (IOException e) {
107
+
108
+ project. logger. error(' Failed to push CF Discord webhook.' )
251
109
}
252
110
}
253
111
}
0 commit comments