@@ -22,11 +22,9 @@ class ModData {
2222 val modrinth = property(" mod.modrinth" )
2323 val curseforge = property(" mod.curseforge" )
2424 val discord = property(" mod.discord" )
25-
26- val stable = parseBoolean(property(" mod.stable" ).toString())
27-
28- val mcVersion = property(" mod.mc_version" )
29- val mcVersionRange = property(" mod.mc_version_range" ).toString()
25+ val obfuscated = parseBoolean(property(" mod.obfuscated" ).toString())
26+ val minecraftVersion = property(" mod.minecraft_version" ) as String
27+ val minecraftVersionRange = property(" mod.minecraft_version_range" ) as String
3028}
3129
3230class Dependencies {
@@ -35,7 +33,8 @@ class Dependencies {
3533 val fabricApiVersion = property(" deps.fabric_api_version" ).toString()
3634 val mixinconstraintsVersion = property(" deps.mixinconstraints_version" )
3735 val mixinsquaredVersion = property(" deps.mixinsquared_version" )
38- val lightConfigVersion = property(" deps.lightconfig" )
36+ val lombokVersion = property(" deps.lombok_version" )
37+ val lightConfigVersion = property(" deps.lightconfig_version" )
3938}
4039
4140class LoaderData {
@@ -48,13 +47,11 @@ val mod = ModData()
4847val deps = Dependencies ()
4948val loader = LoaderData ()
5049
51- version = " ${mod.version} +${mod.mcVersion } -${loader.loader} "
50+ version = " ${mod.version} +${mod.minecraftVersion } -${loader.loader} "
5251group = mod.group
5352base { archivesName.set(mod.id) }
5453
5554stonecutter {
56- constants[" fabric" ] = loader.isFabric
57- constants[" neoforge" ] = loader.isNeoforge
5855 replacements.string {
5956 direction = eval(current.version, " >=1.21.11" )
6057 replace(" ResourceLocation" , " Identifier" )
@@ -63,6 +60,7 @@ stonecutter {
6360
6461blossom {
6562 replaceToken(" @MODID@" , mod.id)
63+ replaceToken(" @VERSION@" , mod.version)
6664}
6765
6866loom {
@@ -112,19 +110,21 @@ repositories {
112110}
113111
114112dependencies {
115- minecraft(" com.mojang:minecraft:${mod.mcVersion } " )
113+ minecraft(" com.mojang:minecraft:${mod.minecraftVersion } " )
116114
117115 @Suppress(" UnstableApiUsage" )
118116 mappings(loom.layered {
119117 // Mojmap mappings
120118 officialMojangMappings()
121119 // Parchment mappings (it adds parameter mappings & javadoc)
122120 optionalProp(" deps.parchment_version" ) {
123- var snapshot = ! mod.mcVersion.toString().contains(" ." )
124- parchment(" org.parchmentmc.data:parchment-${if (snapshot) " 1.21.10" else mod.mcVersion} :$it @zip" )
121+ parchment(" org.parchmentmc.data:parchment-${mod.minecraftVersion} :$it @zip" )
125122 }
126123 })
127124
125+ compileOnly(" org.projectlombok:lombok:${deps.lombokVersion} " )
126+ annotationProcessor(" org.projectlombok:lombok:${deps.lombokVersion} " )
127+
128128 // LightConfig
129129 include(modImplementation(" com.github.Legacy-Visuals-Project:LightConfig:${deps.lightConfigVersion} " )!! )
130130
@@ -153,16 +153,12 @@ val curseforgeId = findProperty("publish.curseforge")?.toString()?.takeIf { it.i
153153// modrinth.token=
154154// curseforge.token=
155155publishMods {
156- if (! mod.stable) {
157- return @publishMods
158- }
159-
160156 file = project.tasks.remapJar.get().archiveFile
161- val niceVersionRangeTitle = if (mod.stable && mod.mcVersionRange .contains(' ' )) {
162- val parts = mod.mcVersionRange .trim().split(' ' )
157+ val niceVersionRangeTitle = if (mod.minecraftVersionRange .contains(' ' )) {
158+ val parts = mod.minecraftVersionRange .trim().split(' ' )
163159 parts.first() + ' -' + parts.last()
164160 } else {
165- mod.mcVersionRange
161+ mod.minecraftVersionRange
166162 }
167163
168164 displayName = " Release ${mod.version} for $niceVersionRangeTitle "
@@ -176,7 +172,7 @@ publishMods {
176172 modrinth {
177173 projectId = property(" publish.modrinth" ).toString()
178174 accessToken = findProperty(" modrinth.token" ).toString()
179- minecraftVersions.addAll(mod.mcVersionRange .split(' ' ))
175+ minecraftVersions.addAll(mod.minecraftVersionRange .split(' ' ))
180176 if (loader.isFabric) {
181177 requires(" fabric-api" )
182178 optional(" modmenu" )
@@ -188,7 +184,7 @@ publishMods {
188184 curseforge {
189185 projectId = property(" publish.curseforge" ).toString()
190186 accessToken = findProperty(" curseforge.token" ).toString()
191- minecraftVersions.addAll(mod.mcVersionRange .split(' ' ))
187+ minecraftVersions.addAll(mod.minecraftVersionRange .split(' ' ))
192188 if (loader.isFabric) {
193189 requires(" fabric-api" )
194190 optional(" modmenu" )
@@ -202,50 +198,59 @@ java {
202198 targetCompatibility = JavaVersion .VERSION_21
203199}
204200
205- tasks.processResources {
206- val props = buildMap {
207- put(" id" , mod.id)
208- put(" name" , mod.name)
209- put(" version" , mod.version)
210- put(" description" , mod.description)
211- put(" source" , mod.source)
212- put(" issues" , mod.issues)
213- put(" license" , mod.license)
214- put(" modrinth" , mod.modrinth)
215- put(" curseforge" , mod.curseforge)
216- put(" discord" , mod.discord)
217- if (loader.isFabric) {
218- put(" fabric_loader_version" , deps.fabricLoaderVersion)
219- }
201+ tasks {
202+ processResources {
203+ val props = buildMap {
204+ put(" id" , mod.id)
205+ put(" name" , mod.name)
206+ put(" version" , mod.version)
207+ put(" description" , mod.description)
208+ put(" source" , mod.source)
209+ put(" issues" , mod.issues)
210+ put(" license" , mod.license)
211+ put(" modrinth" , mod.modrinth)
212+ put(" curseforge" , mod.curseforge)
213+ put(" discord" , mod.discord)
214+ if (loader.isFabric) {
215+ put(" fabric_loader_version" , deps.fabricLoaderVersion)
216+ }
220217
221- if (loader.isNeoforge) {
222- put(" forge_version" , deps.neoForgeVersion)
223- }
218+ if (loader.isNeoforge) {
219+ put(" neoforge_version" , deps.neoForgeVersion)
220+ }
221+
222+ val minecraftVersionRange = if (mod.minecraftVersionRange.contains(' ' )) {
223+ val parts = mod.minecraftVersionRange.trim().split(' ' )
224+ " >=" + parts.first() + ' ' + " <=" + parts.last()
225+ } else {
226+ mod.minecraftVersionRange
227+ }
224228
225- val mcVersionRange = if (mod.stable && mod.mcVersionRange.contains(' ' )) {
226- val parts = mod.mcVersionRange.trim().split(' ' )
227- " >=" + parts.first() + ' ' + " <=" + parts.last()
228- } else {
229- mod.mcVersionRange
229+ put(" minecraft_version_range" , minecraftVersionRange)
230230 }
231231
232- put(" minecraft_version_range" , mcVersionRange)
233- }
232+ props.forEach(inputs::property)
233+ filesMatching(" **/lang/en_us.json" ) { // Defaults description to English translation
234+ expand(props)
235+ filteringCharset = " UTF-8"
236+ }
234237
235- props.forEach(inputs::property)
236- filesMatching(" **/lang/en_us.json" ) { // Defaults description to English translation
237- expand(props)
238- filteringCharset = " UTF-8"
239- }
238+ if (loader.isFabric) {
239+ filesMatching(" fabric.mod.json" ) { expand(props) }
240+ exclude(listOf (" META-INF/neoforge.mods.toml" ))
241+ }
240242
241- if (loader.isFabric) {
242- filesMatching(" fabric.mod.json" ) { expand(props) }
243- exclude(listOf (" META-INF/neoforge.mods.toml" ))
243+ if (loader.isNeoforge) {
244+ filesMatching(" META-INF/neoforge.mods.toml" ) { expand(props) }
245+ exclude(" fabric.mod.json" )
246+ }
244247 }
245248
246- if (loader.isNeoforge) {
247- filesMatching(" META-INF/neoforge.mods.toml" ) { expand(props) }
248- exclude(" fabric.mod.json" )
249+ register<Copy >(" buildAndCollect" ) {
250+ group = " build"
251+ from(remapJar.map { it.archiveFile }, remapSourcesJar.map { it.archiveFile })
252+ into(rootProject.layout.buildDirectory.file(" libs/${project.property(" mod.version" )} " ))
253+ dependsOn(" build" )
249254 }
250255}
251256
0 commit comments