11plugins {
22 `java- library`
33
4- val kotlinVersion = " 2.2 .0"
4+ val kotlinVersion = " 2.3 .0"
55 kotlin(" jvm" ) version kotlinVersion
66 kotlin(" plugin.serialization" ) version kotlinVersion
77
8- id(" fabric-loom " ) version " 1.14-SNAPSHOT "
8+ id(" dev.isxander.modstitch.base " ) version " 0.8.4 "
99
1010 id(" me.modmuss50.mod-publish-plugin" ) version " 0.8.4"
1111 `maven- publish`
12-
12+ signing
13+ id(" dev.isxander.secrets" ) version " 0.1.0"
1314 id(" org.ajoberstar.grgit" ) version " 5.3.2"
1415}
1516
16- val mcVersion = property(" mcVersion" )!! .toString()
17- val mcSemverVersion = stonecutter.current.version
18- val mcDep = property(" fmj.mcDep" ).toString()
17+ modstitch {
18+ minecraftVersion = property(" mcVersion" ).toString()
1919
20- group = " dev.isxander"
21- val versionWithoutMC = " 2.14.6"
22- version = " $versionWithoutMC +${stonecutter.current.project} "
20+ parchment {
21+ mappingsVersion = providers.gradleProperty(" parchment.version" )
22+ minecraftVersion = providers.gradleProperty(" parchment.minecraft" )
23+ }
2324
24- val isAlpha = " alpha" in version.toString()
25- val isBeta = " beta" in version.toString()
25+ metadata {
26+ modId = providers.gradleProperty(" modId" )
27+ modName = providers.gradleProperty(" modName" )
28+ modVersion = providers.gradleProperty(" modVersion" ).map { " $it +${stonecutter.current.project} " }
29+ modDescription = providers.gradleProperty(" modDescription" )
30+ modGroup = " dev.isxander"
31+ modLicense = " LGPL-3.0-or-later"
32+ modAuthor = " isXander"
33+ }
2634
27- base {
28- archivesName.set(property(" modName" ).toString())
29- }
35+ loom {
36+ fabricLoaderVersion = providers.gradleProperty(" deps.fabricLoader" )
3037
31- loom {
32- runConfigs.all {
33- ideConfigGenerated(true )
34- runDir(" ../../run" )
38+ configureLoom {
39+ runConfigs.all {
40+ runDir(" ../../run" )
41+ }
42+ }
3543 }
3644
3745 mixin {
38- useLegacyMixinAp.set(false )
46+ addMixinsToModManifest = true
47+ configs.register(" zoomify" )
3948 }
4049}
4150
51+
52+ val isAlpha = " alpha" in modstitch.metadata.modVersion.get()
53+ val isBeta = " beta" in modstitch.metadata.modVersion.get()
54+
4255stonecutter {
4356 swaps.put(
4457 " fov-precision" ,
@@ -71,120 +84,56 @@ repositories {
7184 forRepository { maven(" https://cursemaven.com" ) }
7285 filter { includeGroup(" curse.maven" ) }
7386 }
74- exclusiveContent {
75- forRepository { mavenLocal() }
76- filter {
77- includeVersionByRegex(" net\\ .fabricmc\\ .fabric-api" , " fabric.*" , " .*local" )
78- includeVersion(" dev.isxander" , " yet-another-config-lib" , " 3.7.1+1.21.9-fabric" )
79- }
80- }
8187}
8288
8389dependencies {
84- fun Dependency?.jij () = this ?.also (::include )
90+ fun Dependency?.jij () = this ?.also (::modstitchJiJ )
8591
86- minecraft(" com.mojang:minecraft:$mcVersion " )
87- mappings(loom.layered {
88- optionalProp(" deps.parchment" ) {
89- parchment(" org.parchmentmc.data:parchment-$it @zip" )
90- }
91-
92- officialMojangMappings()
93- })
94- modImplementation(" net.fabricmc:fabric-loader:${property(" deps.fabricLoader" )} " )
95-
96- modImplementation(" net.fabricmc.fabric-api:fabric-api:${property(" deps.fabricApi" )} " )
97-
98- modImplementation(" net.fabricmc:fabric-language-kotlin:${property(" deps.flk" )} " )
99-
100- modApi(" dev.isxander:yet-another-config-lib:${property(" deps.yacl" )} " ) {
101- // was including old fapi version that broke things at runtime
102- exclude(group = " net.fabricmc.fabric-api" )
103- }.jij()
92+ modstitchModImplementation(" net.fabricmc.fabric-api:fabric-api:${property(" deps.fabricApi" )} " )
93+ modstitchModImplementation(" net.fabricmc:fabric-language-kotlin:${property(" deps.flk" )} " )
94+ modstitchModApi(" dev.isxander:yet-another-config-lib:${property(" deps.yacl" )} " )
10495
10596 // mod menu compat
10697 optionalProp(" deps.modMenu" ) {
107- modCompileOnly(" com.terraformersmc:modmenu:$it " ) {
108- exclude(group = " net.fabricmc.fabric-api" )
109- }
98+ modstitchModCompileOnly(" com.terraformersmc:modmenu:$it " )
11099 }
111100
112101 optionalProp(" deps.controlify" ) {
113- modCompileOnly(" dev.isxander:controlify:$it " ) {
114- exclude(group = " net.fabricmc.fabric-api" )
115- }
116- }
117-
118- modImplementation(include(" com.akuleshov7:ktoml-core-jvm:${property(" deps.ktoml" )} " )!! )
119- }
120-
121- tasks {
122- processResources {
123- val modId: String by project
124- val modName: String by project
125- val modDescription: String by project
126- val githubProject: String by project
127-
128- val props = mapOf (
129- " id" to modId,
130- " group" to project.group,
131- " name" to modName,
132- " description" to modDescription,
133- " version" to project.version,
134- " github" to githubProject,
135- " mc" to mcDep
136- )
137-
138- props.forEach(inputs::property)
139-
140- filesMatching(" fabric.mod.json" ) {
141- expand(props)
142- }
143-
144- eachFile {
145- // don't include photoshop files for the textures for development
146- if (name.endsWith(" .psd" )) {
147- exclude()
148- }
149- }
102+ modstitchModCompileOnly(" dev.isxander:controlify:$it " )
150103 }
151104
152- register(" releaseMod" ) {
153- group = " mod"
154-
155- dependsOn(" publishMods" )
156- dependsOn(" publish" )
157- }
105+ modstitchImplementation(" com.akuleshov7:ktoml-core-jvm:${property(" deps.ktoml" )} " ).jij()
158106}
159107
160- val javaMajorVersion = property(" java.version" ).toString().toInt()
161108java {
162109 withSourcesJar()
163-
164- javaMajorVersion
165- .let { JavaVersion .values()[it - 1 ] }
166- .let {
167- sourceCompatibility = it
168- targetCompatibility = it
169- }
110+ withJavadocJar()
170111}
171112
172- tasks.withType< JavaCompile > {
173- options.release = javaMajorVersion
113+ tasks.javadoc {
114+ isFailOnError = false
174115}
116+
175117kotlin {
176- jvmToolchain(javaMajorVersion)
118+ // jvmToolchain(modstitch.javaVersion)
119+ }
120+
121+ tasks.register(" releaseMod" ) {
122+ group = " mod"
123+
124+ dependsOn(" publishMods" )
125+ dependsOn(" publish" )
177126}
178127
179128publishMods {
180- displayName.set( " Zoomify $versionWithoutMC for MC $mcVersion " )
181- file.set(tasks.remapJar.get(). archiveFile)
182- changelog.set(
183- rootProject.file(" changelogs/ ${versionWithoutMC} .md" )
129+ displayName = modstitch.metadata.modVersion.map { " Zoomify $it " }
130+ file = modstitch.finalJarTask.flatMap { it. archiveFile }
131+ changelog = providers.provider {
132+ rootProject.file(" changelog .md" )
184133 .takeIf { it.exists() }
185134 ?.readText()
186135 ? : " No changelog provided."
187- )
136+ }
188137 type.set(when {
189138 isAlpha -> ALPHA
190139 isBeta -> BETA
@@ -200,43 +149,37 @@ publishMods {
200149 // modrinth and curseforge use different formats for snapshots. this can be expressed globally
201150 val stableMCVersions = versionList(" pub.stableMC" )
202151
203- val modrinthId: String by project
204- if (modrinthId.isNotBlank() && hasProperty(" modrinth.token" )) {
205- modrinth {
206- projectId.set(modrinthId)
207- accessToken.set(findProperty(" modrinth.token" )?.toString())
208- minecraftVersions.addAll(stableMCVersions)
209- minecraftVersions.addAll(versionList(" pub.modrinthMC" ))
210-
211- requires { slug.set(" fabric-api" ) }
212- requires { slug.set(" yacl" ) }
213- requires { slug.set(" fabric-language-kotlin" ) }
214- optional { slug.set(" modmenu" ) }
215- }
152+ modrinth {
153+ accessToken = secrets.gradleProperty(" modrinth.accessToken" )
154+ projectId = providers.gradleProperty(" pub.modrinthId" )
155+
156+ minecraftVersions.addAll(stableMCVersions)
157+ minecraftVersions.addAll(versionList(" pub.modrinthMC" ))
158+
159+ requires { slug.set(" fabric-api" ) }
160+ requires { slug.set(" yacl" ) }
161+ requires { slug.set(" fabric-language-kotlin" ) }
162+ optional { slug.set(" modmenu" ) }
216163 }
217164
218- val curseforgeId: String by project
219- if (curseforgeId.isNotBlank() && hasProperty(" curseforge.token" )) {
220- curseforge {
221- projectId.set(curseforgeId)
222- accessToken.set(findProperty(" curseforge.token" )?.toString())
223- minecraftVersions.addAll(stableMCVersions)
224- minecraftVersions.addAll(versionList(" pub.curseMC" ))
225-
226- requires { slug.set(" fabric-api" ) }
227- requires { slug.set(" yacl" ) }
228- requires { slug.set(" fabric-language-kotlin" ) }
229- optional { slug.set(" modmenu" ) }
230- }
165+ curseforge {
166+ accessToken = secrets.gradleProperty(" curseforge.accessToken" )
167+ projectId = providers.gradleProperty(" pub.curseforgeId" )
168+ projectSlug = providers.gradleProperty(" pub.curseforgeSlug" )
169+
170+ minecraftVersions.addAll(stableMCVersions)
171+ minecraftVersions.addAll(versionList(" pub.curseMC" ))
172+
173+ requires { slug.set(" fabric-api" ) }
174+ requires { slug.set(" yacl" ) }
175+ requires { slug.set(" fabric-language-kotlin" ) }
176+ optional { slug.set(" modmenu" ) }
231177 }
232178
233- val githubProject: String by project
234- if (githubProject.isNotBlank() && hasProperty(" github.token" )) {
235- github {
236- repository.set(githubProject)
237- accessToken.set(findProperty(" github.token" )?.toString())
238- commitish.set(grgit.branch.current().name)
239- }
179+ github {
180+ accessToken = secrets.gradleProperty(" github.accessToken" )
181+ repository = providers.gradleProperty(" githubProject" )
182+ commitish = grgit.branch.current().name
240183 }
241184}
242185
0 commit comments