first
This commit is contained in:
@@ -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/**")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user