Switch the root build scripts to Kotlin and limit parallel remaps
Check / compile (pull_request) Successful in 7m47s
Check / compile (pull_request) Successful in 7m47s
- settings.gradle, stonecutter.gradle and the root build.gradle become .kts. Loom's version for the Stonecutter versions moves to the root gradle.properties (loom_version), read by pluginManagement, since the Kotlin plugins block can't read properties. The old mc-<v> projects keep their Groovy scripts until they're folded in. - buildAll ran all eight remapJar tasks at once. Each loads a Minecraft classpath and remaps a ~50 MB jar, which doesn't fit in the 3 GB daemon heap: a cold build stalled in garbage collection for 40+ minutes, and earlier runs failed. A shared build service now lets two remaps run together; a cold buildAll takes about 2 minutes. - port.sh and VERSION_GUIDE follow the .kts file names. The 1.21.11 jar is the same as with the Groovy scripts. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
// Builds one Minecraft version from the shared src/. Stonecutter runs this for each version in
|
||||
// stonecutterVersions (settings.gradle.kts), with that version's versions/<v>/gradle.properties.
|
||||
plugins {
|
||||
id("net.fabricmc.fabric-loom-remap")
|
||||
`maven-publish`
|
||||
}
|
||||
|
||||
val minecraftVersion = property("minecraft_version") as String
|
||||
val loaderVersion = property("loader_version") as String
|
||||
|
||||
version = "${property("mod_version")}+$minecraftVersion"
|
||||
group = property("maven_group") as String
|
||||
|
||||
base {
|
||||
archivesName = property("archives_base_name") as String
|
||||
}
|
||||
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:$minecraftVersion")
|
||||
mappings("net.fabricmc:yarn:${property("yarn_mappings")}:v2")
|
||||
modImplementation("net.fabricmc:fabric-loader:$loaderVersion")
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api:${property("fabric_api_version")}")
|
||||
|
||||
// Saturn's emote library (limb bending, Emotecraft emotes)
|
||||
include(modImplementation("org.saturnclient:emotes-fabric:${property("emotes_version")}+$minecraftVersion")!!)
|
||||
|
||||
implementation(project(":common"))
|
||||
|
||||
for (library in listOf(
|
||||
"dev.selimaj:session-java:0.2.0",
|
||||
"de.javagl:obj:0.4.0",
|
||||
"com.formdev:svgSalamander:1.1.4",
|
||||
"com.fasterxml.jackson.core:jackson-databind:2.17.0",
|
||||
"com.fasterxml.jackson.core:jackson-annotations:2.17.0",
|
||||
"com.fasterxml.jackson.core:jackson-core:2.17.0",
|
||||
)) {
|
||||
include(implementation(library)!!)
|
||||
}
|
||||
}
|
||||
|
||||
// Injects the version values into fabric.mod.json.
|
||||
tasks.processResources {
|
||||
val values = mapOf(
|
||||
"version" to project.version.toString(),
|
||||
"minecraft_version" to minecraftVersion,
|
||||
"loader_version" to loaderVersion,
|
||||
)
|
||||
inputs.properties(values)
|
||||
filteringCharset = "UTF-8"
|
||||
filesMatching("fabric.mod.json") { expand(values) }
|
||||
}
|
||||
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
options.release = 21
|
||||
}
|
||||
|
||||
java {
|
||||
// Loom attaches the sources jar to remapSourcesJar and build.
|
||||
withSourcesJar()
|
||||
sourceCompatibility = JavaVersion.VERSION_21
|
||||
targetCompatibility = JavaVersion.VERSION_21
|
||||
}
|
||||
|
||||
tasks.jar {
|
||||
val archivesName = base.archivesName
|
||||
inputs.property("archivesName", archivesName)
|
||||
from("LICENSE") {
|
||||
rename { "${it}_${archivesName.get()}" }
|
||||
}
|
||||
from(project(":common").extensions.getByType<SourceSetContainer>()["main"].output)
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
}
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
create<MavenPublication>("mavenJava") {
|
||||
artifactId = property("archives_base_name") as String
|
||||
from(components["java"])
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user