diff --git a/conventions/build.gradle.kts b/conventions/build.gradle.kts index 694bf68..e6fd7a4 100644 --- a/conventions/build.gradle.kts +++ b/conventions/build.gradle.kts @@ -1,7 +1,13 @@ +import dev.panuszewski.gradle.pluginMarker + plugins { `kotlin-dsl` } +group = "de.siphalor.tweed5" + dependencies { implementation(project(":helpers")) + implementation(pluginMarker(libs.plugins.lombok)) + implementation(pluginMarker(libs.plugins.shadow)) } diff --git a/conventions/settings.gradle.kts b/conventions/settings.gradle.kts index 9e71be4..463bc98 100644 --- a/conventions/settings.gradle.kts +++ b/conventions/settings.gradle.kts @@ -2,6 +2,10 @@ plugins { id("dev.panuszewski.typesafe-conventions") version "0.9.0" } +typesafeConventions { + autoPluginDependencies = false +} + dependencyResolutionManagement { repositories { gradlePluginPortal() diff --git a/conventions/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts b/conventions/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts index 7a0a1c0..fb8b9eb 100644 --- a/conventions/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts +++ b/conventions/src/main/kotlin/de.siphalor.tweed5.base-module.gradle.kts @@ -2,7 +2,7 @@ plugins { java `java-library` jacoco - alias(libs.plugins.lombok) + id("io.freefair.lombok") id("de.siphalor.tweed5.publishing") id("de.siphalor.tweed5.local-runtime-only") id("de.siphalor.tweed5.expanded-sources-jar") diff --git a/conventions/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts b/conventions/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts index 1a715d1..ea2439d 100644 --- a/conventions/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts +++ b/conventions/src/main/kotlin/de.siphalor.tweed5.expanded-sources-jar.gradle.kts @@ -3,7 +3,7 @@ import io.freefair.gradle.plugins.lombok.tasks.Delombok plugins { java `java-library` - alias(libs.plugins.lombok) + id("io.freefair.lombok") } val expandedSourcesElements = configurations.consumable("expandedSourcesElements") { diff --git a/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts b/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts index e4392d6..8592bdf 100644 --- a/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts +++ b/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.base.gradle.kts @@ -1,8 +1,8 @@ plugins { - `maven-publish` - alias(libs.plugins.shadow) + id("com.gradleup.shadow") java `java-library` + id("de.siphalor.tweed5.publishing") id("de.siphalor.tweed5.minecraft.mod.component") } @@ -32,16 +32,3 @@ val minecraftModSourcesJar = tasks.register("minecraftModSourcesJar") { artifacts.add("minecraftModElements", minecraftModJar) artifacts.add("minecraftModSourcesElements", minecraftModSourcesJar) - -publishing { - publications { - create("minecraftMod") { - groupId = "${project.group}.minecraft" - artifactId = project.name - version = project.version.toString() - - from(components["minecraftMod"]) - } - } -} - diff --git a/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts b/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts index 429e5da..593f8bf 100644 --- a/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts +++ b/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.dummy.gradle.kts @@ -1,4 +1,6 @@ plugins { + `maven-publish` + id("de.siphalor.tweed5.publishing") id("de.siphalor.tweed5.minecraft.mod.base") } @@ -27,3 +29,16 @@ tasks.named("minecraftModSourcesJar") { from(project.layout.buildDirectory.dir("minecraftModResources")) dependsOn(processMinecraftModResources) } + +publishing { + publications { + create("minecraftMod") { + groupId = "${project.group}.minecraft" + artifactId = project.name + version = project.version.toString() + + from(components["minecraftMod"]) + } + } +} + diff --git a/conventions/src/main/kotlin/de.siphalor.tweed5.shadow.explicit.gradle.kts b/conventions/src/main/kotlin/de.siphalor.tweed5.shadow.explicit.gradle.kts index c4c3576..be489e6 100644 --- a/conventions/src/main/kotlin/de.siphalor.tweed5.shadow.explicit.gradle.kts +++ b/conventions/src/main/kotlin/de.siphalor.tweed5.shadow.explicit.gradle.kts @@ -1,7 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - alias(libs.plugins.shadow) + id("com.gradleup.shadow") } val shadowOnlyConfiguration = configurations.dependencyScope("shadowOnly") diff --git a/conventions/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts b/conventions/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts index 1b0c6a5..dfc37c9 100644 --- a/conventions/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts +++ b/conventions/src/main/kotlin/de.siphalor.tweed5.test-utils.gradle.kts @@ -1,6 +1,6 @@ plugins { java - alias(libs.plugins.lombok) + id("io.freefair.lombok") } dependencies { diff --git a/tweed5-minecraft/bundle/build.gradle.kts b/tweed5-minecraft/bundle/build.gradle.kts index 1051e28..4f5cb3b 100644 --- a/tweed5-minecraft/bundle/build.gradle.kts +++ b/tweed5-minecraft/bundle/build.gradle.kts @@ -1,5 +1,4 @@ plugins { - id("de.siphalor.tweed5.publishing") id("de.siphalor.tweed5.minecraft.mod.dummy") } diff --git a/tweed5-minecraft/coat-bridge/build.gradle.kts b/tweed5-minecraft/coat-bridge/build.gradle.kts new file mode 100644 index 0000000..bda8516 --- /dev/null +++ b/tweed5-minecraft/coat-bridge/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id("de.siphalor.tweed5.expanded-sources-jar") + id("de.siphalor.tweed5.minecraft.mod.cross-version") +} + +dependencies { + modImplementation(mcLibs.coat) +} diff --git a/tweed5-minecraft/conventions/build.gradle.kts b/tweed5-minecraft/conventions/build.gradle.kts new file mode 100644 index 0000000..be6dd54 --- /dev/null +++ b/tweed5-minecraft/conventions/build.gradle.kts @@ -0,0 +1,11 @@ +import dev.panuszewski.gradle.pluginMarker + +plugins { + `kotlin-dsl` +} + +dependencies { + implementation("de.siphalor.tweed5:tweed5-conventions") + implementation(pluginMarker(mcCommonLibs.plugins.fabric.loom)) + implementation(pluginMarker(mcCommonLibs.plugins.jcyo)) +} diff --git a/tweed5-minecraft/conventions/settings.gradle.kts b/tweed5-minecraft/conventions/settings.gradle.kts new file mode 100644 index 0000000..1694407 --- /dev/null +++ b/tweed5-minecraft/conventions/settings.gradle.kts @@ -0,0 +1,37 @@ +plugins { + id("dev.panuszewski.typesafe-conventions") version "0.9.0" +} + +typesafeConventions { + autoPluginDependencies = false +} + +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + maven { + name = "Siphalor" + url = uri("https://maven.siphalor.de") + mavenContent { + includeGroupAndSubgroups("de.siphalor") + } + } + maven { + name = "FabricMC" + url = uri("https://maven.fabricmc.net") + mavenContent { + includeGroupAndSubgroups("net.fabricmc") + includeGroup("fabric-loom") + } + } + } + versionCatalogs { + create("libs") { + from(files("../../gradle/libs.versions.toml")) + } + } +} + +includeBuild("../../conventions") + +rootProject.name = "tweed5-minecraft-conventions" diff --git a/tweed5-minecraft/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.cross-version.gradle.kts b/tweed5-minecraft/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.cross-version.gradle.kts new file mode 100644 index 0000000..7a005e9 --- /dev/null +++ b/tweed5-minecraft/conventions/src/main/kotlin/de.siphalor.tweed5.minecraft.mod.cross-version.gradle.kts @@ -0,0 +1,63 @@ +import java.util.Properties + +plugins { + id("fabric-loom") + id("de.siphalor.jcyo") + id("de.siphalor.tweed5.minecraft.mod.base") +} + +val minecraftVersionDescriptor = project.property("minecraft.version.descriptor") as String +val mcProps = Properties().apply { + val propFile = project.layout.settingsDirectory.file("gradle/mc-$minecraftVersionDescriptor/gradle.properties").asFile + propFile.inputStream().use { load(it) } +} + +val mcCatalog = versionCatalogs.named("mcLibs") + +group = "de.siphalor.tweed5.minecraft.${project.name}" +val archivesBaseName = "${project.name}-mc$minecraftVersionDescriptor" +base { + archivesName.set(archivesBaseName) +} +val shortVersion = project.property("tweed5.version").toString() +val minecraftVersion = getMcCatalogVersion("minecraft") +version = "$shortVersion+mc$minecraftVersion" + +sourceSets { + create("testmod") { + compileClasspath += sourceSets.main.get().compileClasspath + runtimeClasspath += sourceSets.main.get().runtimeClasspath + } +} + +// For some reason dependencyResolutionManagement from the settings.gradle doesn't seem to be passed through correctly, +// so we're defining the repositories right here +repositories { + maven { + name = "Parchment" + url = uri("https://maven.parchmentmc.org") + mavenContent { + includeGroupAndSubgroups("org.parchmentmc") + } + } + maven { + name = "Siphalor" + url = uri("https://maven.siphalor.de") + mavenContent { + includeGroupAndSubgroups("de.siphalor") + } + } +} + +dependencies { + minecraft(mcCatalog.findLibrary("minecraft").get()) + mappings(loom.layered { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-$minecraftVersion:${getMcCatalogVersion("parchment")}@zip") + }) + modImplementation(mcCommonLibs.fabric.loader) +} + +fun getMcCatalogVersion(name: String): String { + return mcCatalog.findVersion(name).get().requiredVersion +} diff --git a/tweed5-minecraft/gradle.properties b/tweed5-minecraft/gradle.properties new file mode 100644 index 0000000..1724247 --- /dev/null +++ b/tweed5-minecraft/gradle.properties @@ -0,0 +1 @@ +minecraft.version.descriptor = 1.21.10 diff --git a/tweed5-minecraft/gradle/mc-1.21.10/gradle.properties b/tweed5-minecraft/gradle/mc-1.21.10/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/tweed5-minecraft/gradle/mc-1.21.10/mcLibs.versions.toml b/tweed5-minecraft/gradle/mc-1.21.10/mcLibs.versions.toml new file mode 100644 index 0000000..cdc69eb --- /dev/null +++ b/tweed5-minecraft/gradle/mc-1.21.10/mcLibs.versions.toml @@ -0,0 +1,8 @@ +[versions] +coat = "1.0.0-beta.23" +minecraft = "1.21.10" +parchment = "2025.10.12" + +[libraries] +coat = { group = "de.siphalor.coat", name = "coat-mc1.21.10", version.ref = "coat" } +minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" } diff --git a/tweed5-minecraft/gradle/mcCommonLibs.versions.toml b/tweed5-minecraft/gradle/mcCommonLibs.versions.toml new file mode 100644 index 0000000..2593a37 --- /dev/null +++ b/tweed5-minecraft/gradle/mcCommonLibs.versions.toml @@ -0,0 +1,11 @@ +[versions] +fabric-loader = "0.17.2" +fabric-loom = "1.11-SNAPSHOT" +jcyo = "0.4.2" + +[plugins] +jcyo = { id = "de.siphalor.jcyo", version.ref = "jcyo" } +fabric-loom = { id = "fabric-loom", version.ref = "fabric-loom" } + +[libraries] +fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" } diff --git a/tweed5-minecraft/settings.gradle.kts b/tweed5-minecraft/settings.gradle.kts index 3135c26..3216841 100644 --- a/tweed5-minecraft/settings.gradle.kts +++ b/tweed5-minecraft/settings.gradle.kts @@ -2,25 +2,54 @@ rootProject.name = "tweed5-minecraft" pluginManagement { includeBuild("../conventions") + includeBuild("conventions") + + repositories { + gradlePluginPortal() + maven { + name = "Siphalor" + url = uri("https://maven.siphalor.de") + mavenContent { + includeGroupAndSubgroups("de.siphalor") + } + } + maven { + name = "FabricMC" + url = uri("https://maven.fabricmc.net") + mavenContent { + includeGroupAndSubgroups("net.fabricmc") + includeGroup("fabric-loom") + } + } + } } dependencyResolutionManagement { repositories { mavenCentral() } + versionCatalogs { create("libs") { from(files("../gradle/libs.versions.toml")) } + create("mcCommonLibs") { + from(files("gradle/mcCommonLibs.versions.toml")) + } + create("mcLibs") { + val mcVersionDescriptor = providers.gradleProperty("minecraft.version.descriptor").get() + from(files("gradle/mc-$mcVersionDescriptor/mcLibs.versions.toml")) + } } } includeBuild("../tweed5") includeNormalModule("bundle") +includeNormalModule("coat-bridge") fun includeNormalModule(name: String) { - includeAs("tweed5-$name", "$name") + includeAs("tweed5-$name", name) } fun includeAs(name: String, path: String) {