1+ plugins {
2+ `maven- publish`
3+ id(" fabric-loom" )
4+ // id("dev.kikugie.j52j")
5+ // id("me.modmuss50.mod-publish-plugin")
6+ }
7+
8+ class ModData {
9+ val id = property(" mod.id" ).toString()
10+ val name = property(" mod.name" ).toString()
11+ val version = property(" mod.version" ).toString()
12+ val group = property(" mod.group" ).toString()
13+ }
14+
15+ class ModDependencies {
16+ operator fun get (name : String ) = property(" deps.$name " ).toString()
17+ }
18+
19+ val mod = ModData ()
20+ val deps = ModDependencies ()
21+ val mcVersion = stonecutter.current.version
22+ val mcDep = property(" mod.mc_dep" ).toString()
23+
24+ version = " ${mod.version} +$mcVersion "
25+ group = mod.group
26+ base { archivesName.set(mod.id) }
27+
28+ loom {
29+ splitEnvironmentSourceSets()
30+
31+ mods {
32+ create(" template" ) {
33+ sourceSet(sourceSets[" main" ])
34+ sourceSet(sourceSets[" client" ])
35+ }
36+ }
37+
38+ runs {
39+ getByName(" client" ) {
40+ environmentVariable(" __GL_THREADED_OPTIMIZATIONS" , " 0" )
41+ }
42+ }
43+ }
44+
45+ repositories {
46+ fun strictMaven (url : String , alias : String , vararg groups : String ) = exclusiveContent {
47+ forRepository { maven(url) { name = alias } }
48+ filter { groups.forEach(::includeGroup) }
49+ }
50+ strictMaven(" https://www.cursemaven.com" , " CurseForge" , " curse.maven" )
51+ strictMaven(" https://api.modrinth.com/maven" , " Modrinth" , " maven.modrinth" )
52+ mavenLocal()
53+ }
54+
55+ dependencies {
56+ minecraft(" com.mojang:minecraft:$mcVersion " )
57+ mappings(loom.officialMojangMappings())
58+ modImplementation(" net.fabricmc:fabric-loader:${deps[" fabric_loader" ]} " )
59+ include(" io.github.spair:imgui-java-binding:1.90.9" )
60+ implementation(" io.github.spair:imgui-java-binding:1.90.9" ) {
61+ isTransitive = false
62+ }
63+ }
64+
65+ loom {
66+ decompilers {
67+ get(" vineflower" ).apply { // Adds names to lambdas - useful for mixins
68+ options.put(" mark-corresponding-synthetics" , " 1" )
69+ }
70+ }
71+
72+ runConfigs.all {
73+ ideConfigGenerated(true )
74+ vmArgs(" -Dmixin.debug.export=true" )
75+ runDir = " ../../run"
76+ }
77+ }
78+
79+ java {
80+ withSourcesJar()
81+ val java = if (stonecutter.eval(mcVersion, " >=1.20.6" )) JavaVersion .VERSION_21 else JavaVersion .VERSION_17
82+ targetCompatibility = java
83+ sourceCompatibility = java
84+ }
85+
86+ tasks.processResources {
87+ inputs.property(" id" , mod.id)
88+ inputs.property(" name" , mod.name)
89+ inputs.property(" version" , mod.version)
90+ inputs.property(" mcdep" , mcDep)
91+
92+ val map = mapOf (
93+ " id" to mod.id,
94+ " name" to mod.name,
95+ " version" to mod.version,
96+ " mcdep" to mcDep
97+ )
98+
99+ filesMatching(" fabric.mod.json" ) { expand(map) }
100+ }
101+
102+ tasks.register<Copy >(" buildAndCollect" ) {
103+ group = " build"
104+ from(tasks.remapJar.get().archiveFile)
105+ into(rootProject.layout.buildDirectory.file(" libs/${mod.version} " ))
106+ dependsOn(" build" )
107+ }
108+
109+ /*
110+ publishMods {
111+ file = tasks.remapJar.get().archiveFile
112+ additionalFiles.from(tasks.remapSourcesJar.get().archiveFile)
113+ displayName = "${mod.name} ${mod.version} for $mcVersion"
114+ version = mod.version
115+ changelog = rootProject.file("CHANGELOG.md").readText()
116+ type = STABLE
117+ modLoaders.add("fabric")
118+
119+ dryRun = providers.environmentVariable("MODRINTH_TOKEN")
120+ .getOrNull() == null || providers.environmentVariable("CURSEFORGE_TOKEN").getOrNull() == null
121+
122+ modrinth {
123+ projectId = property("publish.modrinth").toString()
124+ accessToken = providers.environmentVariable("MODRINTH_TOKEN")
125+ minecraftVersions.add(mcVersion)
126+ requires {
127+ slug = "fabric-api"
128+ }
129+ }
130+
131+ curseforge {
132+ projectId = property("publish.curseforge").toString()
133+ accessToken = providers.environmentVariable("CURSEFORGE_TOKEN")
134+ minecraftVersions.add(mcVersion)
135+ requires {
136+ slug = "fabric-api"
137+ }
138+ }
139+ }
140+ */
141+ /*
142+ publishing {
143+ repositories {
144+ maven("...") {
145+ name = "..."
146+ credentials(PasswordCredentials::class.java)
147+ authentication {
148+ create<BasicAuthentication>("basic")
149+ }
150+ }
151+ }
152+
153+ publications {
154+ create<MavenPublication>("mavenJava") {
155+ groupId = "${property("mod.group")}.${mod.id}"
156+ artifactId = mod.version
157+ version = mcVersion
158+
159+ from(components["java"])
160+ }
161+ }
162+ }
163+ */
0 commit comments