Incendium addon
1plugins {
2 id("dev.architectury.loom") version "1.7-SNAPSHOT" apply true
3 id("maven-publish")
4}
5
6
7class ModData {
8 val id = property("mod.id").toString()
9 val name = property("mod.name").toString()
10 val version = property("mod.version").toString()
11 val group = property("mod.group").toString()
12 val loader = property("loom.platform").toString()
13}
14
15class ModDeps {
16 operator fun get(name: String) = property("deps.$name").toString()
17}
18
19
20val mod = ModData()
21val deps = ModDeps()
22val mcVersion = stonecutter.current.version
23
24val isFabric = mod.loader == "fabric"
25val isForge = mod.loader == "forge"
26val isNeoforge = mod.loader == "neoforge"
27val isForgelike = isForge || isNeoforge
28
29version = "${mod.version}+$mcVersion"
30group = mod.group
31
32base { archivesName.set(mod.id) }
33
34loom {
35 runConfigs.all {
36 ideConfigGenerated(false)
37 runDir("../../run")
38 }
39}
40
41repositories {
42 mavenCentral()
43 maven("https://maven.parchmentmc.org")
44 maven("https://maven.neoforged.net/releases/")
45}
46
47dependencies {
48 mappings(loom.layered {
49 // breaks for some reason
50 // parchment("org.parchmentmc.data:parchment-${deps["parchment"]}@zip")
51 officialMojangMappings()
52 })
53
54 if (isFabric) {
55 modImplementation("net.fabricmc:fabric-loader:${deps["fabric_loader"]}")
56 fun fapi(vararg modules: String) {
57 modules.forEach { fabricApi.module(it, deps["fapi"]) }
58 }
59 modImplementation("net.fabricmc.fabric-api:fabric-api:${deps["fabric_api"]}")
60 }
61 if (isForge) {
62 "forge"("net.minecraftforge:forge:${deps["forge"]}")
63 }
64 if (isNeoforge) {
65 "neoForge"("net.neoforged:neoforge:${deps["neoforge"]}")
66 }
67 minecraft("com.mojang:minecraft:${deps["minecraft_run"]}")
68
69}
70
71java {
72 withSourcesJar()
73 val java = if (stonecutter.compare(mcVersion, "1.20.6") >= 0) JavaVersion.VERSION_21 else JavaVersion.VERSION_17
74 targetCompatibility = java
75 sourceCompatibility = java
76}
77
78tasks.processResources {
79 val props = buildMap {
80 put("id", mod.id)
81 put("name", mod.name)
82 put("version", mod.version)
83 put("minecraft", deps["minecraft"])
84 put("incendium", deps["incendium"])
85 if (isForgelike) {
86 put("forgeId", deps["forge_id"])
87 put("forgeConstraint", deps["forge_constraint"])
88 }
89 }
90
91 props.forEach(inputs::property)
92
93 if (isFabric) {
94 filesMatching("fabric.mod.json") { expand(props) }
95 exclude(listOf("META-INF/mods.toml", "META-INF/neoforge.mods.toml"))
96 }
97
98 if (isForgelike) {
99 filesMatching(listOf("META-INF/mods.toml", "META-INF/neoforge.mods.toml")) { expand(props) }
100 exclude("fabric.mod.json")
101 }
102}
103
104tasks.register<Copy>("buildAndCollect") {
105 group = "build"
106 from(tasks.remapJar.get().archiveFile)
107 into(rootProject.layout.buildDirectory.file("libs/${mod.version}"))
108 rename { "ibo-${mod.version}+${mod.loader}+$mcVersion.jar" }
109 dependsOn("build")
110}
111
112if (stonecutter.current.isActive) {
113 rootProject.tasks.register("buildActive") {
114 group = "project"
115 dependsOn(tasks.named("build"))
116 }
117}