-
Notifications
You must be signed in to change notification settings - Fork 16
/
build.gradle
185 lines (166 loc) Β· 8.05 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
plugins {
id 'fabric-loom' version '1.7-SNAPSHOT'
id "com.matthewprenger.cursegradle" version "1.4.0"
id "com.github.breadmoirai.github-release" version "2.4.1"
id "com.modrinth.minotaur" version "2.+"
}
version = project.mod_version + "+" + project.minecraft_version
group = project.maven_group
repositories {
maven { url 'https://jitpack.io' }
maven { url 'https://maven.kosmx.dev/' }
maven { url 'https://maven.shedaniel.me/' }
maven { url 'https://maven.azuredoom.com/mods' }
maven { url 'https://maven.terraformersmc.com/' }
maven {
name = 'Modrinth'
url = 'https://api.modrinth.com/maven'
content {
includeGroup 'maven.modrinth'
}
}
maven {
name = "Ladysnake Libs"
url = 'https://maven.ladysnake.org/releases'
}
}
dependencies {
// Game
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
// Fabric
modImplementation "net.fabricmc:fabric-loader:${project.fabric_loader_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
// Dependencies
include(implementation("com.github.ZsoltMolnarrr:TinyConfig:${project.tiny_config_version}"))
modImplementation("mod.azure.azurelibarmor:azurelibarmor-fabric-${project.azure_mc_version}:${project.azure_lib_version}")
include(modImplementation("maven.modrinth:structure-pool-api:${project.structure_pool_api_version}"))
modImplementation("maven.modrinth:runes:${project.runes_version}")
modImplementation("maven.modrinth:spell-engine:${project.spell_engine_version}")
modImplementation("maven.modrinth:spell-power:${project.spell_power_version}")
// modImplementation(files("run/mods/dev/spell_engine-${project.spell_engine_version}.jar"))
// modImplementation(files("run/mods/dev/spell_power-${project.spell_power_version}.jar"))
modImplementation("dev.emi:trinkets:${project.trinkets_version}")
modImplementation("dev.kosmx.player-anim:player-animation-lib-fabric:${project.player_anim_version}")
modImplementation("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}")
}
processResources {
inputs.property "version", project.version
filteringCharset "UTF-8"
filesMatching("fabric.mod.json") {
expand(project.properties)
}
}
def targetJavaVersion = 21
tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
// If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8"
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
it.options.release = targetJavaVersion
}
}
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
archivesBaseName = project.archives_base_name
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
}
jar {
from("LICENSE") {
rename { "${it}_${project.archives_base_name}"}
}
}
ext.changelog_last_section = { ->
return new File("CHANGELOG.md").text.split('\n# ')[0]
}
def gitBranch() {
def branch = ""
def proc = "git rev-parse --abbrev-ref HEAD".execute()
proc.in.eachLine { line -> branch = line }
proc.err.eachLine { line -> println line }
proc.waitFor()
branch
}
if(project.hasProperty('release_type')) {
tasks.register("publishMod") {
dependsOn(build)
finalizedBy(tasks.curseforge)
finalizedBy(tasks.modrinth)
finalizedBy(tasks.githubRelease)
}
curseforge {
apiKey = System.getenv("CURSEFORGE_API_KEY")
project {
id = System.getenv("CURSEFORGE_PROJECT_ID")
changelog = changelog_last_section()
changelogType = 'markdown'
releaseType = release_type
addGameVersion "${project.minecraft_version}"
addGameVersion "${project.minecraft_compat_version}"
addGameVersion "Fabric"
relations {
requiredDependency 'fabric-api'
requiredDependency 'azurelib-armor'
requiredDependency 'spell-engine'
requiredDependency 'spell-power'
requiredDependency 'rune-crafting'
requiredDependency 'structure-pool-api'
}
mainArtifact(remapJar)
afterEvaluate {
uploadTask.dependsOn(remapJar)
}
options {
forgeGradleIntegration = false
}
}
}
modrinth {
token = System.getenv("MODRINTH_API_KEY")
projectId = System.getenv("MODRINTH_PROJECT_ID") // This can be the project ID or the slug. Either will work!
versionName = "${version}" // You don't need to set this manually. Will fail if Modrinth has this version already
versionNumber = "${version}" // You don't need to set this manually. Will fail if Modrinth has this version already
versionType = release_type // This is the default -- can also be `beta` or `alpha`
uploadFile = remapJar // With Loom, this MUST be set to `remapJar` instead of `jar`!
gameVersions = ["${project.minecraft_version}", "${project.minecraft_compat_version}"] // Must be an array, even with only one version
loaders = ["fabric"] // Must also be an array - no need to specify this if you're using Loom or ForgeGradle
changelog = changelog_last_section()
dependencies { // A special DSL for creating dependencies
// scope.type
// The scope can be `required`, `optional`, `incompatible`, or `embedded`
// The type can either be `project` or `version`
required.project 'fabric-api'
required.project 'azurelib-armor'
required.project 'spell-engine'
required.project 'spell-power'
required.project 'runes'
required.project 'structure-pool-api'
}
}
githubRelease {
token System.getenv("GH_API_KEY") // This is your personal access token with Repo permissions
owner System.getenv("GH_OWNER") // default is the last part of your group. Eg group: "com.github.breadmoirai" => owner: "breadmoirai"
repo System.getenv("GH_REPO") // by default this is set to your project name
tagName "${version}" // by default this is set to "v${project.version}"
targetCommitish gitBranch() // by default this is set to "main"
releaseName "Release" // Release title, by default this is the same as the tagName
generateReleaseNotes false // Generate release notes automatically, if true and body is present, body will be pre-pended, if name is not given, one will be generated by the tag
// body.set "" // by default this is empty
draft false // by default this is true
prerelease release_type != "release" // by default this is false
// releaseAssets jar.destinationDir.listFiles // this points to which files you want to upload as assets with your release, by default this is empty
allowUploadToExisting false // Setting this to true will allow this plugin to upload artifacts to a release if it found an existing one. If overwrite is set to true, this option is ignored.
overwrite false // by default false; if set to true, will delete an existing release with the same tag and name
// dryRun true // by default false; you can use this to see what actions would be taken without making a release
apiEndpoint "https://api.github.com" // should only change for github enterprise users
client // This is the okhttp client used for http requests
}
}