This commit is contained in:
2026-01-07 13:29:10 -05:00
commit 686541e399
1629 changed files with 317473 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
plugins {
`kotlin-dsl`
kotlin("jvm") version "2.2.21"
}
repositories {
mavenCentral()
gradlePluginPortal()
maven("https://maven.kikugie.dev/snapshots")
}
dependencies {
implementation("dev.kikugie:stonecutter:0.7.11")
}
@@ -0,0 +1,39 @@
import dev.kikugie.stonecutter.build.StonecutterBuildExtension
import dev.kikugie.stonecutter.controller.StonecutterControllerExtension
import org.gradle.api.Project
import org.gradle.kotlin.dsl.*
val Project.mod: ModData get() = ModData(this)
fun Project.prop(key: String): String? = findProperty(key)?.toString()
val Project.stonecutterBuild get() = extensions.getByType<StonecutterBuildExtension>()
val Project.stonecutterController get() = extensions.getByType<StonecutterControllerExtension>()
val Project.common
get() = requireNotNull(stonecutterBuild.node.sibling("common")) {
"No common project for $project"
}
val Project.commonProject get() = rootProject.project(stonecutterBuild.current.project)
val Project.commonMod get() = commonProject.mod
val Project.loader: String? get() = prop("loader")
@JvmInline
value class ModData(private val project: Project) {
val id: String get() = modProp("id")
val name: String get() = modProp("name")
val version: String get() = modProp("version")
val group: String get() = modProp("group")
val author: String get() = modProp("author")
val description: String get() = modProp("description")
val license: String get() = modProp("license")
val credits: String get() = modProp("credits")
val minecraft_version: String get() = propOrNull("minecraft_version") ?: project.stonecutterBuild.current.version
fun propOrNull(key: String) = project.prop(key)
fun prop(key: String) = requireNotNull(propOrNull(key)) { "Missing '$key'" }
fun modPropOrNull(key: String) = project.prop("mod.$key")
fun modProp(key: String) = requireNotNull(modPropOrNull(key)) { "Missing 'mod.$key'" }
fun modrinth(name: String, version: String) = "maven.modrinth:$name:$version"
}
@@ -0,0 +1,101 @@
plugins {
id("java-library")
id("idea")
}
version = "${loader}-${commonMod.version}+mc${stonecutterBuild.current.version}"
base {
archivesName = commonMod.id
}
java {
toolchain.languageVersion = JavaLanguageVersion.of(commonProject.prop("java.version")!!)
// withSourcesJar()
// withJavadocJar()
}
repositories {
maven("https://libraries.minecraft.net") { name = "Mojang" }
mavenCentral()
exclusiveContent {
forRepository {
maven("https://repo.spongepowered.org/repository/maven-public") { name = "Sponge" }
}
filter { includeGroupAndSubgroups("org.spongepowered") }
}
exclusiveContent {
forRepositories(
maven("https://maven.parchmentmc.org") { name = "ParchmentMC" },
maven("https://maven.neoforged.net/releases") { name = "NeoForge" }
)
filter { includeGroup("org.parchmentmc.data") }
}
maven("https://maven.quiltmc.org/repository/release/") { name = "QuiltMC" }
maven("https://maven.fabricmc.net/") { name = "FabricMC" }
maven("https://maven.neoforged.net/releases") { name = "NeoForge" }
maven("https://maven.minecraftforge.net") { name = "MinecraftForge" }
}
tasks {
processResources {
val clothConfigVersion = when {
stonecutterBuild.current.version.startsWith("1.20") ->
commonMod.propOrNull("cloth_config_version_1_20_1")
stonecutterBuild.current.version.startsWith("1.21") ->
commonMod.propOrNull("cloth_config_version_1_21_1")
else -> null
}
val expandProps = mapOf(
"java_version" to commonMod.propOrNull("java.version"),
"version" to commonMod.version,
"group" to commonMod.group,
"mod_name" to commonMod.name,
"mod_author" to commonMod.author,
"mod_id" to commonMod.id,
"license" to commonMod.license,
"description" to commonMod.description,
"credits" to commonMod.credits,
"minecraft_version" to commonMod.propOrNull("minecraft_version"),
"minecraft_version_range" to commonMod.propOrNull("minecraft_version_range"),
"fabric_api_version" to commonMod.propOrNull("fabric_api_version"),
"fabric_loader_version" to commonMod.propOrNull("fabric_loader_version"),
"neoforge_version" to commonMod.propOrNull("neoforge_version"),
"neoforge_version_range" to commonMod.propOrNull("neoforge_version_range"),
"neoforge_loader_version_range" to commonMod.propOrNull("neoforge_loader_version_range"),
"minecraftforge_version" to commonMod.propOrNull("minecraftforge_version"),
"minecraftforge_version_range" to commonMod.propOrNull("minecraftforge_version_range"),
"minecraftforge_eventbus_validator_version" to
commonMod.propOrNull("minecraftforge_eventbus_validator_version"),
"quilted_fabric_api_version" to commonMod.propOrNull("quilted_fabric_api_version"),
"quilt_loader_version" to commonMod.propOrNull("quilt_loader_version"),
"architectury_version" to commonMod.propOrNull("architectury_version"),
"geckolib_version" to commonMod.propOrNull("geckolib_version"),
"modmenu_version" to commonMod.propOrNull("modmenu_version"),
"jei_version" to commonMod.propOrNull("jei_version"),
"cloth_config_version_1_20_1" to commonMod.propOrNull("cloth_config_version_1_20_1"),
"cloth_config_version_1_21_1" to commonMod.propOrNull("cloth_config_version_1_21_1"),
// add this:
"cloth_config_version" to clothConfigVersion,
).filterValues { it?.isNotEmpty() == true }.mapValues { (_, v) -> v!! }
val jsonExpandProps = expandProps.mapValues { (_, v) -> v.replace("\n", "\\\\n") }
filesMatching(listOf("META-INF/mods.toml", "META-INF/neoforge.mods.toml")) {
expand(expandProps)
}
filesMatching(listOf("pack.mcmeta", "fabric.mod.json", "quilt.mod.json", "*.mixins.json")) {
expand(jsonExpandProps)
}
inputs.properties(expandProps)
}
}
tasks.named("processResources") {
dependsOn(":common:${commonMod.propOrNull("minecraft_version")}:stonecutterGenerate")
}
@@ -0,0 +1,33 @@
plugins {
id("multiloader-common")
}
val commonJava: Configuration by configurations.creating {
isCanBeResolved = true
}
val commonResources: Configuration by configurations.creating {
isCanBeResolved = true
}
dependencies {
val commonPath = common.hierarchy.toString()
compileOnly(project(path = commonPath))
commonJava(project(path = commonPath, configuration = "commonJava"))
commonResources(project(path = commonPath, configuration = "commonResources"))
}
tasks {
compileJava {
dependsOn(commonJava)
source(commonJava)
}
processResources {
dependsOn(commonResources)
from(commonResources)
}
jar {
exclude("accesswideners/**")
}
}