at v2.1.0 3.2 kB view raw
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}