diff --git a/Common/build.gradle b/Common/build.gradle deleted file mode 100644 index 060464f6..00000000 --- a/Common/build.gradle +++ /dev/null @@ -1,110 +0,0 @@ -plugins { - id 'idea' - id 'java' - id 'maven-publish' - alias libs.plugins.mdg - alias libs.plugins.archloom -} - -base { - archivesName = "${mod_id}-common-${libs.versions.minecraft.release.get()}" -} - -configurations { - commonJava { - canBeResolved = false - canBeConsumed = true - } - commonResources { - canBeResolved = false - canBeConsumed = true - } - testCompileOnly.extendsFrom(compileOnly) -} - -loom { - accessWidenerPath = file("src/main/resources/trimmed.accesswidener") - - mixin { - defaultRefmapName = "trimmed.refmap.json" - } - - runConfigs.configureEach { - ideConfigGenerated = false - } -} - -modsDotGroovy { - multiplatform { - gather { - projectProperty("mod_id") - projectProperty("mod_name") - projectProperty("mod_author") - } - expose() - } -} - -dependencies { - minecraft libs.minecraft - mappings loom.layered() { - officialMojangMappings() - parchment("org.parchmentmc.data:parchment-${libs.versions.parchment.mc.get()}:${libs.versions.parchment.release.get()}@zip") - } - - modCompileOnly libs.fabric.loader - - implementation(annotationProcessor(libs.mixinextras.common.get())) -} - -artifacts { - commonJava sourceSets.main.java.sourceDirectories.singleFile - commonResources sourceSets.main.resources.sourceDirectories.singleFile -} - -sourceSets.main.resources.srcDir 'src/generated/resources' - -idea { - module { - inheritOutputDirs = false - } -} - -//import net.fabricmc.loom.task.AbstractRemapJarTask -//tasks.withType(AbstractRemapJarTask).each { -// it.targetNamespace = "named" -//} - -processResources { - def buildProps = project.properties.clone() - exclude("mods.groovy") - - filesMatching(['pack.mcmeta']) { - expand buildProps - } -} - -java { - withSourcesJar() - withJavadocJar() -} - -sourcesJar { - from(rootProject.file("LICENSE")) { - rename { "${it}_${mod_name}" } - } -} - -publishing { - publications { - mavenJava(MavenPublication) { - groupId project.maven_group - artifactId project.archivesBaseName - version project.mod_version - from components.java - pom.withXml { - asNode().remove(asNode().dependencies) - } - } - } -} \ No newline at end of file diff --git a/Common/build.gradle.kts b/Common/build.gradle.kts new file mode 100644 index 00000000..3c18bd30 --- /dev/null +++ b/Common/build.gradle.kts @@ -0,0 +1,106 @@ +plugins { + idea + java + `maven-publish` + alias(libs.plugins.mdg) + alias(libs.plugins.archloom) + id("shared.conventions") +} + +base { + archivesName = "${properties["mod_id"]}-common-${libs.versions.minecraft.release.get()}" +} + +val commonJava: Configuration by configurations.creating { + isCanBeResolved = false + isCanBeConsumed = true +} + +val commonResources: Configuration by configurations.creating { + isCanBeResolved = false + isCanBeConsumed = true +} + +val testCompileOnly by configurations.named("testCompileOnly") { + extendsFrom(configurations["compileOnly"]) +} + +loom { + accessWidenerPath = file("src/main/resources/trimmed.accesswidener") + + mixin { + defaultRefmapName = "trimmed.refmap.json" + } + + runConfigs.configureEach { + isIdeConfigGenerated = false + } +} + +modsDotGroovy { + multiplatform { + gather { + projectProperty("mod_id") + projectProperty("mod_name") + projectProperty("mod_author") + } + expose() + } +} + +dependencies { + minecraft(libs.minecraft) + mappings(loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${libs.versions.parchment.mc.get()}:${libs.versions.parchment.release.get()}@zip") + }) + + modCompileOnly(libs.fabric.loader) + + annotationProcessor(libs.mixinextras.common.get()) + implementation(libs.mixinextras.common.get()) +} + +artifacts { + add(commonJava.name, sourceSets.main.get().java.sourceDirectories.singleFile) + add(commonResources.name, sourceSets.main.get().resources.sourceDirectories.singleFile) +} + +sourceSets.main { + resources { + srcDir("src/generated/resources") + } +} + +idea { + module { + inheritOutputDirs = false + } +} + +//import net.fabricmc.loom.task.AbstractRemapJarTask +//tasks.withType(AbstractRemapJarTask).each { +// it.targetNamespace = "named" +//} + +tasks.processResources { + val buildProps = properties.toMap() + + filesMatching("pack.mcmeta") { + expand(buildProps) + } +} + +publishing { + publications { + create("mavenJava") { + groupId = properties["maven_group"] as String + artifactId = base.archivesName.get() + version = properties["mod_version"] as String + from(components["java"]) +// pom.withXml { +// asNode().remove(asNode().dependencies) +// } + } + } +} \ No newline at end of file diff --git a/Fabric/build.gradle b/Fabric/build.gradle deleted file mode 100644 index 27982b50..00000000 --- a/Fabric/build.gradle +++ /dev/null @@ -1,162 +0,0 @@ -import org.groovymc.modsdotgroovy.core.Platform -import org.groovymc.modsdotgroovy.gradle.tasks.AbstractGatherPlatformDetailsTask - -plugins { - id 'idea' - id 'java' - id 'maven-publish' - alias libs.plugins.mdg - alias libs.plugins.archloom - alias libs.plugins.curseforgegradle - alias libs.plugins.minotaur -} - -base { - archivesName = "${mod_id}-fabric-${libs.versions.minecraft.release.get()}" -} - -loom { - accessWidenerPath = project(":Common").file("src/main/resources/trimmed.accesswidener") - - runs { - client { - client() - setConfigName("Fabric Client") - ideConfigGenerated(true) - runDir("run") - } - server { - server() - setConfigName("Fabric Server") - ideConfigGenerated(true) - runDir("run") - } - } - - mixin { - defaultRefmapName = "${mod_id}.refmap.json" - } - - mods { - trimmed { - sourceSet sourceSets.main - sourceSet project(":Common").sourceSets.main - } - } -} - -modsDotGroovy { - platform = Platform.FABRIC - inferGather.set false - multiplatform { - from ':Common' - } - apply() -} - -tasks.named('gatherFabricPlatformDetails', AbstractGatherPlatformDetailsTask).configure { - minecraftVersion = libs.versions.minecraft.release - platformVersion = libs.versions.fabric.loader -} - -dependencies { - minecraft libs.minecraft - mappings loom.layered() { - officialMojangMappings() - parchment("org.parchmentmc.data:parchment-${libs.versions.parchment.mc.get()}:${libs.versions.parchment.release.get()}@zip") - } - - modImplementation libs.fabric.loader - modImplementation(libs.fabric.api) { - exclude module: "fabric-models-v0" - } - - implementation project(path: ":Common", configuration: "namedElements") -} - -idea { - module { - inheritOutputDirs = false - } -} - -tasks.withType(JavaCompile) { - source(project(":Common").sourceSets.main.allSource) -} - -processResources { - from project(":Common").sourceSets.main.resources - exclude("mods.groovy") -} - -java { - withSourcesJar() - withJavadocJar() -} - -sourcesJar { - from(rootProject.file("LICENSE")) { - rename { "${it}_${mod_name}" } - } -} - -sourcesJar { - from(project(":Common").sourceSets.main.allSource) - exclude("mods.groovy") -} - -publishing { - publications { - register("mavenJava", MavenPublication) { - groupId project.maven_group - artifactId project.archivesBaseName - version project.mod_version - from components.java - pom.withXml { - asNode().remove(asNode().dependencies) - } - } - } -} - -if (findProperty("modrinth_write_version_pat")) { - modrinth { - token = findProperty("modrinth_write_version_pat") - projectId = modrinth_project_id - versionName = "Fabric-${libs.versions.minecraft.release.get()}-${mod_version}" - versionNumber = "${libs.versions.minecraft.release.get()}-${mod_version}+fabric" - versionType = publish_type - uploadFile = remapJar - gameVersions = List.of(libs.versions.publish.range.get().split(",")) - loaders = ["fabric"] - changelog = rootProject.file("changelog.md").newReader().text - additionalFiles = [sourcesJar, javadocJar] - detectLoaders = false - debugMode = publish_debug == "true" - } -} - -import net.darkhax.curseforgegradle.TaskPublishCurseForge - -if (findProperty("curseforge_publishing_token")) { - tasks.register("curseforge", TaskPublishCurseForge) { - group = "publishing" - - disableVersionDetection() - apiToken = findProperty('curseforge_publishing_token') - def projectId = curseforge_project_id - def mainFile = upload(projectId, remapJar) - mainFile.displayName = "Fabric-${libs.versions.minecraft.release.get()}-${mod_version}" - mainFile.releaseType = publish_type - mainFile.changelog = rootProject.file("changelog.md").newReader().text - mainFile.changelogType = 'markdown' - mainFile.addModLoader("Fabric") - mainFile.addJavaVersion("Java ${java.toolchain.languageVersion.get()}") - mainFile.addGameVersion(libs.versions.minecraft.release.get()) - debugMode = publish_debug == "true" - } - - afterEvaluate { - tasks.curseforge.dependsOn tasks.remapJar - } -} \ No newline at end of file diff --git a/Fabric/build.gradle.kts b/Fabric/build.gradle.kts new file mode 100644 index 00000000..4643e343 --- /dev/null +++ b/Fabric/build.gradle.kts @@ -0,0 +1,137 @@ +import org.groovymc.modsdotgroovy.core.Platform +import org.groovymc.modsdotgroovy.gradle.tasks.AbstractGatherPlatformDetailsTask +import net.darkhax.curseforgegradle.TaskPublishCurseForge + +plugins { + idea + java + `maven-publish` + alias(libs.plugins.mdg) + alias(libs.plugins.archloom) + alias(libs.plugins.curseforgegradle) + alias(libs.plugins.minotaur) + id("consumer.conventions") +} + +base { + archivesName = "${extra["mod_id"]}-fabric-${libs.versions.minecraft.release.get()}" +} + +val commonJava by configurations +val commonResources by configurations + +loom { + accessWidenerPath = project(":Common").file("src/main/resources/trimmed.accesswidener") + + runs { + named("client"){ + client() + configName = "Fabric Client" + ideConfigGenerated(true) + runDir("run") + } + named("server") { + server() + configName = "Fabric Server" + ideConfigGenerated(true) + runDir("run") + } + } + + mixin { + defaultRefmapName = "${properties["mod_id"]}.refmap.json" + } + + mods { + create("trimmed") { + sourceSet(sourceSets.main.get()) + configuration(commonJava) + configuration(commonResources) + } + } +} + +dependencies { + minecraft(libs.minecraft) + mappings(loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${libs.versions.parchment.mc.get()}:${libs.versions.parchment.release.get()}@zip") + }) + + modImplementation(libs.fabric.loader) + modImplementation(libs.fabric.api) { + exclude(module = "fabric-models-v0") + } +} + +idea { + module { + inheritOutputDirs = false + } +} + +modsDotGroovy { + platform(Platform.FABRIC) + inferGather.set(false) + multiplatform { + from(":Common") + } + apply() +} + +tasks.named("gatherFabricPlatformDetails").configure { + minecraftVersion = libs.versions.minecraft.release + platformVersion = libs.versions.fabric.loader +} + +publishing { + publications { + create("mavenJava") { + groupId = properties["maven_group"] as String + artifactId = base.archivesName.get() + version = properties["mod_version"] as String + from(components["java"]) +// pom.withXml { +// asNode().remove(asNode().dependencies) +// } + } + } +} + +if (hasProperty("modrinth_write_version_pat")) { + modrinth { + token.set(findProperty("modrinth_write_version_pat") as String) + projectId.set(properties["modrinth_project_id"] as String) + versionName.set("Fabric-${libs.versions.minecraft.release.get()}-${properties["mod_version"]}") + versionNumber.set("${libs.versions.minecraft.release.get()}-${properties["mod_version"]}+fabric") + versionType.set(properties["publish_type"] as String) + uploadFile.set(tasks.remapJar) + gameVersions.set(libs.versions.publish.range.get().split(",")) + loaders.set(listOf("fabric")) + changelog = rootProject.file("changelog.md").reader().use { it.readText() } + additionalFiles.set(listOf(tasks.named("sourcesJar"), tasks.named("javadocJar"))) + detectLoaders.set(false) + debugMode = properties["publish_debug"].toString().toBoolean() + } +} + +if (hasProperty("curseforge_publishing_token")) { + tasks.register("curseforge") { + group = "publishing" + + disableVersionDetection() + apiToken = findProperty("curseforge_publishing_token") + val projectId = properties["curseforge_project_id"] + val mainFile = upload(projectId, tasks.remapJar) + mainFile.displayName = "Fabric-${libs.versions.minecraft.release.get()}-${properties["mod_version"]}" + mainFile.releaseType = properties["publish_type"] + mainFile.changelog = rootProject.file("changelog.md").reader().use { it.readText() } + mainFile.changelogType = "markdown" + mainFile.addModLoader("Fabric") + mainFile.addJavaVersion("Java ${java.toolchain.languageVersion.get()}") + mainFile.addGameVersion(libs.versions.minecraft.release.get()) + debugMode = properties["publish_debug"].toString().toBoolean() + + dependsOn(tasks.remapJar) + } +} \ No newline at end of file diff --git a/Neo/build.gradle b/Neo/build.gradle deleted file mode 100644 index 411429b3..00000000 --- a/Neo/build.gradle +++ /dev/null @@ -1,165 +0,0 @@ -import org.groovymc.modsdotgroovy.core.Platform -import org.groovymc.modsdotgroovy.gradle.tasks.AbstractGatherPlatformDetailsTask - -plugins { - id 'idea' - id 'java' - id 'maven-publish' - alias libs.plugins.mdg - alias libs.plugins.curseforgegradle - alias libs.plugins.minotaur - alias libs.plugins.archloom -} - -base { - archivesName = "${mod_name}-neo-${libs.versions.minecraft.release.get()}" -} - -loom { - neoForge { - accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) - } - - runs { - client { - client() - setConfigName("Neo Client") - ideConfigGenerated(true) - runDir("run") - } - server { - server() - setConfigName("Neo Server") - ideConfigGenerated(true) - runDir("run") - } - data { - data() - setConfigName("Neo Data") - ideConfigGenerated(true) - runDir("run") - - programArgs("'--mod', ${mod_id}, '--all', '--output', ${project(":Common").file('src/generated/resources/')}, '--existing', ${file('src/main/resources/')}") - } - } -} - -modsDotGroovy { - platform = Platform.NEOFORGE - inferGather.set false - multiplatform { - from ':Common' - } - apply() -} - -tasks.named('gatherNeoForgePlatformDetails', AbstractGatherPlatformDetailsTask).configure { - minecraftVersion = '1.20.6' - platformVersion = '20.6.62-beta' -} - -//remapJar { -// atAccessWideners.add('src/main/resources/trimmed.accesswidener') -//} - -repositories { - maven { - name = 'Neo' - url = 'https://maven.neoforged.net/releases' - } - maven { - name 'Maven for PR #794' // https://github.com/neoforged/NeoForge/pull/794 - url 'https://prmaven.neoforged.net/NeoForge/pr794' - content { - includeModule('net.neoforged', 'neoforge') - includeModule('net.neoforged', 'testframework') - } - } -} - -dependencies { - minecraft libs.minecraft - neoForge libs.neoforge - mappings loom.layered() { - officialMojangMappings() - parchment("org.parchmentmc.data:parchment-${libs.versions.parchment.mc.get()}:${libs.versions.parchment.release.get()}@zip") - } - - compileOnly(project(":Common")) -} - -tasks.withType(JavaCompile).configureEach { - source(project(":Common").sourceSets.main.allSource) -} - -processResources { - from project(":Common").sourceSets.main.resources - exclude("mods.groovy", "trimmed.accesswidener") -} - -java { - withSourcesJar() - withJavadocJar() -} - -sourcesJar { - from(rootProject.file("LICENSE")) { - rename { "${it}_${mod_name}" } - } -} - -publishing { - publications { - register('mavenJava', MavenPublication) { - groupId project.maven_group - artifactId project.archivesBaseName - version project.mod_version - from components.java - pom.withXml { - asNode().remove(asNode().dependencies) - } - } - } -} - -if (findProperty("modrinth_write_version_pat")) { - modrinth { - token = findProperty("modrinth_write_version_pat") - projectId = modrinth_project_id - versionName = "NeoForge-${libs.versions.minecraft.release.get()}-${mod_version}" - versionNumber = "${libs.versions.minecraft.release.get()}-${mod_version}+neoforge" - versionType = publish_type - uploadFile = remapJar - gameVersions = List.of(libs.versions.publish.range.get().split(",")) - loaders = ["neoforge"] - changelog = rootProject.file("changelog.md").newReader().text - additionalFiles = [sourcesJar, javadocJar] - detectLoaders = false - debugMode = publish_debug == "true" - } -} - -import net.darkhax.curseforgegradle.TaskPublishCurseForge - -if (findProperty("curseforge_publishing_token")) { - tasks.register("curseforge", TaskPublishCurseForge) { - group = "publishing" - - disableVersionDetection() - apiToken = findProperty('curseforge_publishing_token') - def projectId = curseforge_project_id - def mainFile = upload(projectId, remapJar) - mainFile.displayName = "NeoForge-${libs.versions.minecraft.release.get()}-${mod_version}" - mainFile.releaseType = publish_type - mainFile.changelog = rootProject.file("changelog.md").newReader().text - mainFile.changelogType = 'markdown' - mainFile.addModLoader("NeoForge") - mainFile.addJavaVersion("Java ${java.toolchain.languageVersion.get()}") - mainFile.addGameVersion(libs.versions.minecraft.release.get()) - debugMode = publish_debug == "true" - } - - afterEvaluate { - tasks.curseforge.dependsOn tasks.remapJar - } -} \ No newline at end of file diff --git a/Neo/build.gradle.kts b/Neo/build.gradle.kts new file mode 100644 index 00000000..800daabe --- /dev/null +++ b/Neo/build.gradle.kts @@ -0,0 +1,138 @@ +import org.groovymc.modsdotgroovy.core.Platform +import org.groovymc.modsdotgroovy.gradle.tasks.AbstractGatherPlatformDetailsTask +import net.darkhax.curseforgegradle.TaskPublishCurseForge + +plugins { + idea + java + `maven-publish` + alias(libs.plugins.mdg) + alias(libs.plugins.curseforgegradle) + alias(libs.plugins.minotaur) + alias(libs.plugins.archloom) + id("consumer.conventions") +} + +base { + archivesName = "${properties["mod_name"]}-neo-${libs.versions.minecraft.release.get()}" +} + +loom { + neoForge { + accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) + } + + runs { + named("client") { + client() + configName = "Neo Client" + ideConfigGenerated(true) + runDir("run") + } + named("server") { + server() + configName = "Neo Server" + ideConfigGenerated(true) + runDir("run") + } + create("data") { + data() + configName = "Neo Data" + ideConfigGenerated(true) + runDir("run") + + programArgs("--mod", properties["mod_id"] as String, "--all", "--output", project(":Common").file("src/generated/resources/").path, "--existing", file("src/main/resources/").path) + } + } +} + +//remapJar { +// atAccessWideners.add('src/main/resources/trimmed.accesswidener') +//} + +repositories { + maven { + name = "Neo" + url = uri("https://maven.neoforged.net/releases") + } +} + +dependencies { + minecraft(libs.minecraft) + neoForge(libs.neoforge) + mappings(loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${libs.versions.parchment.mc.get()}:${libs.versions.parchment.release.get()}@zip") + }) +} + + +tasks.processResources { + exclude("trimmed.accesswidener") +} + +modsDotGroovy { + platform(Platform.NEOFORGE) + inferGather.set(false) + multiplatform { + from(":Common") + } + apply() +} + +tasks.named("gatherNeoForgePlatformDetails").configure { + minecraftVersion = "1.20.6" + platformVersion = "20.6.62-beta" +} + +publishing { + publications { + create("mavenJava") { + groupId = properties["maven_group"] as String + artifactId = base.archivesName.get() + version = properties["mod_version"] as String + from(components["java"]) +// pom.withXml { +// asNode().remove(asNode().dependencies) +// } + } + } +} + +if (hasProperty("modrinth_write_version_pat")) { + modrinth { + token.set(findProperty("modrinth_write_version_pat") as String) + projectId.set(properties["modrinth_project_id"] as String) + versionName.set("NeoForge-${libs.versions.minecraft.release.get()}-${properties["mod_version"]}") + versionNumber.set("${libs.versions.minecraft.release.get()}-${properties["mod_version"]}+neoforge") + versionType.set(properties["publish_type"] as String) + uploadFile.set(tasks.remapJar) + gameVersions.set(libs.versions.publish.range.get().split(",")) + loaders.set(listOf("neoforge")) + changelog = rootProject.file("changelog.md").reader().use { it.readText() } + additionalFiles.set(listOf(tasks.named("sourcesJar"), tasks.named("javadocJar"))) + detectLoaders.set(false) + debugMode = properties["publish_debug"].toString().toBoolean() + } +} + +if (hasProperty("curseforge_publishing_token")) { + tasks.register("curseforge") { + group = "publishing" + + disableVersionDetection() + apiToken = findProperty("curseforge_publishing_token") + val projectId = properties["curseforge_project_id"] + val mainFile = upload(projectId, tasks.remapJar) + mainFile.displayName = "NeoForge-${libs.versions.minecraft.release.get()}-${properties["mod_version"]}" + mainFile.releaseType = properties["publish_type"] + mainFile.changelog = rootProject.file("changelog.md").reader().use { it.readText() } + mainFile.changelogType = "markdown" + mainFile.addModLoader("NeoForge") + mainFile.addJavaVersion("Java ${java.toolchain.languageVersion.get()}") + mainFile.addGameVersion(libs.versions.minecraft.release.get()) + debugMode = properties["publish_debug"].toString().toBoolean() + + dependsOn(tasks.remapJar) + } +} \ No newline at end of file diff --git a/Neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java b/Neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java index af8981bd..99bfd29c 100644 --- a/Neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java +++ b/Neo/src/main/java/dev/dhyces/trimmed/NeoTrimmed.java @@ -5,9 +5,6 @@ import net.neoforged.fml.ModContainer; import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.registries.datamaps.DataMapFile; - -import java.util.function.Supplier; @Mod(Trimmed.MODID) public class NeoTrimmed { diff --git a/build-conventions/src/main/kotlin/trimmed.java-conventions.gradle.kts b/build-conventions/src/main/kotlin/trimmed.java-conventions.gradle.kts deleted file mode 100644 index 20ddc0e2..00000000 --- a/build-conventions/src/main/kotlin/trimmed.java-conventions.gradle.kts +++ /dev/null @@ -1,104 +0,0 @@ -plugins { - `java-library` - `maven-publish` - `version-catalog` -} - -configure { - toolchain { - languageVersion = JavaLanguageVersion.of(21) - } -} - -ext { - val parchmentVersion: String; - if (!libs.versions.parchment.mc.get().equals(libs.versions.minecraft.release.get())) { - parchmentVersion = "${libs.versions.parchment.mc.get()}-${libs.versions.parchment.release.get()}-${libs.versions.minecraft.release.get()}" - } else { - parchmentVersion = "${libs.versions.parchment.release.get()}-${libs.versions.minecraft.release.get()}" - } -} - -version = extra["mod_version"] - -tasks.jar { - from(rootProject.file("LICENSE")) { - rename { "${it}_${extra["mod_name"]}" } - } - manifest { - attributes( - "Specification-Title" to extra["mod_name"], - "Specification-Vendor" to extra["mod_author"], - "Specification-Version" to archiveVersion, - "Implementation-Title" to project.name, - "Implementation-Version" to archiveVersion, - "Implementation-Vendor" to extra["mod_author"], -// "Implementation-Timestamp" to new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - "Timestamp" to System.currentTimeMillis(), - "Built-On-Java" to "${System.getProperty("java.vm.version")} (${System.getProperty("java.vm.vendor")})", - "Built-On-Minecraft" to libs.versions.minecraft.release.get() - ) - } -} - -repositories { - mavenCentral() - mavenLocal() - - maven { - name = "Sponge / Mixin" - url = uri("https://repo.spongepowered.org/repository/maven-public/") - } - - maven { - name = "BlameJared Maven (CrT / Bookshelf)" - url = uri("https://maven.blamejared.com") - } - - maven { - url = uri("https://jm.gserv.me/repository/maven-public/") - } - - maven { url = uri("https://jitpack.io/") } -} - -dependencies { - "compileOnly"(libs.jetbrains.annotations) -} - -tasks.withType().configureEach { - options.encoding = "UTF-8" - options.release = 21 -} - -// Disables Gradle"s custom module metadata from being published to maven. The -// metadata includes mapped dependencies which are not reasonably consumable by -// other mod developers. -//tasks.withType().configureEach { -// enabled = false -//} - -// publishing { -// repositories { -// maven { -// name = "Local" -// url = uri("file://" + findProperty("local_maven")) -// } -// maven { -// name = "Maven" -// url = uri(findProperty("mavenUrl")) -//// credentials(PasswordCredentials) { -//// username = findProperty("mavenUsername") -//// password = findProperty("mavenPassword") -//// } -// } -// maven { -// name = "GitHubPackages" -// url = uri("https://maven.pkg.github.com/dhyces/trimmed") -//// credentials { -//// username = project.findProperty("gpr.user") ?: System.getenv("USERNAME") -//// password = project.findProperty("gpr.key") ?: System.getenv("TOKEN") -//// } -// } -// } -// } \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 6aef3a51..00000000 --- a/build.gradle +++ /dev/null @@ -1,109 +0,0 @@ -plugins { - alias libs.plugins.mdg apply(false) - alias libs.plugins.archloom apply(false) - alias libs.plugins.forgegradle apply(false) - alias libs.plugins.mixingradle apply(false) -} - -allprojects { - ext { - if (!libs.versions.parchment.mc.get().equals(libs.versions.minecraft.release.get())) { - parchmentVersion = "${libs.versions.parchment.mc.get()}-${libs.versions.parchment.release.get()}-${libs.versions.minecraft.release.get()}" - } else { - parchmentVersion = "${libs.versions.parchment.release.get()}-${libs.versions.minecraft.release.get()}" - } - } -} - -subprojects { - apply plugin: 'java' - apply plugin: 'maven-publish' - - java { - toolchain.languageVersion = JavaLanguageVersion.of(21) - } - - version = mod_version - - jar { - from(rootProject.file("LICENSE")) { - rename { "${it}_${mod_name}" } - } - manifest { - attributes([ - 'Specification-Title' : mod_name, - 'Specification-Vendor' : mod_author, - 'Specification-Version' : project.jar.archiveVersion, - 'Implementation-Title' : project.name, - 'Implementation-Version' : project.jar.archiveVersion, - 'Implementation-Vendor' : mod_author, - 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - 'Timestamp' : System.currentTimeMillis(), - 'Built-On-Java' : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})", - 'Built-On-Minecraft' : libs.versions.minecraft.release.get() - ]) - } - } - - repositories { - mavenCentral() - mavenLocal() - - maven { - name = 'Sponge / Mixin' - url = 'https://repo.spongepowered.org/repository/maven-public/' - } - - maven { - name = 'BlameJared Maven (CrT / Bookshelf)' - url = 'https://maven.blamejared.com' - } - - maven { - url = "https://jm.gserv.me/repository/maven-public/" - } - - maven { url = "https://jitpack.io/" } - } - - dependencies { - compileOnly libs.jetbrains.annotations - } - - tasks.withType(JavaCompile).configureEach { - it.options.encoding = 'UTF-8' - it.options.release = 21 - } - - // Disables Gradle's custom module metadata from being published to maven. The - // metadata includes mapped dependencies which are not reasonably consumable by - // other mod developers. - tasks.withType(GenerateModuleMetadata).configureEach { - enabled = false - } - - publishing { - repositories { - maven { - name "Local" - url "file://" + findProperty("local_maven") - } - maven { - name "Maven" - url findProperty("mavenUrl") - credentials(PasswordCredentials) { - username = findProperty("mavenUsername") - password = findProperty("mavenPassword") - } - } - maven { - name = "GitHubPackages" - url = uri("https://maven.pkg.github.com/dhyces/trimmed") - credentials { - username = project.findProperty("gpr.user") ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") ?: System.getenv("TOKEN") - } - } - } - } -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..effb9e31 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,6 @@ +plugins { + alias(libs.plugins.mdg) apply(false) + alias(libs.plugins.archloom) apply(false) + alias(libs.plugins.forgegradle) apply(false) + alias(libs.plugins.mixingradle) apply(false) +} diff --git a/build-conventions/build.gradle.kts b/buildSrc/build.gradle.kts similarity index 97% rename from build-conventions/build.gradle.kts rename to buildSrc/build.gradle.kts index cc02e636..8156a89b 100644 --- a/build-conventions/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -4,4 +4,4 @@ plugins { repositories { gradlePluginPortal() -} +} \ No newline at end of file diff --git a/build-conventions/settings.gradle.kts b/buildSrc/settings.gradle.kts similarity index 78% rename from build-conventions/settings.gradle.kts rename to buildSrc/settings.gradle.kts index 2a30c4c9..fa8bc749 100644 --- a/build-conventions/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -4,6 +4,4 @@ dependencyResolutionManagement { from(files("../gradle/libs.versions.toml")) } } -} - -rootProject.name = "build-conventions" \ No newline at end of file +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/consumer.conventions.gradle.kts b/buildSrc/src/main/kotlin/consumer.conventions.gradle.kts new file mode 100644 index 00000000..decbcf14 --- /dev/null +++ b/buildSrc/src/main/kotlin/consumer.conventions.gradle.kts @@ -0,0 +1,39 @@ +plugins { + id("shared.conventions") +} + +val commonJava: Configuration by configurations.creating { + isCanBeResolved = true +} +val commonResources by configurations.creating { + isCanBeResolved = true +} + +dependencies { + compileOnly(project(":Common")) + commonJava(project(path = ":Common", configuration = "commonJava")) + commonResources(project(path = ":Common", configuration = "commonResources")) +} + +tasks.named("compileJava") { + dependsOn(commonJava) + source(commonJava) +} + +tasks.processResources { + dependsOn(commonResources) + from(commonResources) + exclude("mods.groovy") +} + +tasks.named("javadoc") { + dependsOn(commonJava) + source(commonJava) +} + +tasks.named("sourcesJar") { + dependsOn(commonJava) + dependsOn(commonResources) + from(commonJava) + from(commonResources) +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/shared.conventions.gradle.kts b/buildSrc/src/main/kotlin/shared.conventions.gradle.kts new file mode 100644 index 00000000..d231f3c7 --- /dev/null +++ b/buildSrc/src/main/kotlin/shared.conventions.gradle.kts @@ -0,0 +1,103 @@ +import org.gradle.kotlin.dsl.* +import java.time.OffsetDateTime +import java.time.format.DateTimeFormatter + +plugins { + `java-library` + `maven-publish` + `version-catalog` +} + +internal fun Project.versionCatalog(): VersionCatalog = extensions.getByType().named("libs") + +configure { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + withSourcesJar() + withJavadocJar() +} + +version = properties["mod_version"] as String + +tasks.jar { + from(rootProject.file("LICENSE")) { + rename { "${it}_${properties["mod_name"]}" } + } + manifest { + attributes( + "Specification-Title" to properties["mod_name"], + "Specification-Vendor" to properties["mod_author"], + "Specification-Version" to archiveVersion, + "Implementation-Title" to project.name, + "Implementation-Version" to archiveVersion, + "Implementation-Vendor" to properties["mod_author"], + "Implementation-Timestamp" to OffsetDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")), + "Timestamp" to System.currentTimeMillis(), + "Built-On-Java" to "${System.getProperty("java.vm.version")} (${System.getProperty("java.vm.vendor")})", + "Built-On-Minecraft" to versionCatalog().findVersion("minecraft.release").get() + ) + } +} + +repositories { + mavenCentral() + mavenLocal() + + maven { + name = "Sponge / Mixin" + url = uri("https://repo.spongepowered.org/repository/maven-public/") + } + + maven { + name = "BlameJared Maven (CrT / Bookshelf)" + url = uri("https://maven.blamejared.com") + } + + maven { + url = uri("https://jm.gserv.me/repository/maven-public/") + } + + maven { url = uri("https://jitpack.io/") } +} + +dependencies { + compileOnly(versionCatalog().findLibrary("jetbrains.annotations").get()) +} + +tasks.withType().configureEach { + options.encoding = "UTF-8" + options.release = 21 +} + +// Disables Gradle's custom module metadata from being published to maven. The +// metadata includes mapped dependencies which are not reasonably consumable by +// other mod developers. +//tasks.withType().configureEach { +// enabled = false +//} + +publishing { + repositories { + maven { + name = "Local" + url = uri("file://" + findProperty("local_maven")) + } + maven { + name = "Maven" + url = findProperty("mavenUrl")?.let { uri(it) }!! + credentials(PasswordCredentials::class) { + username = findProperty("mavenUsername")?.toString() + password = findProperty("mavenPassword")?.toString() + } + } + maven { + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/dhyces/trimmed") + credentials { + username = (project.findProperty("gpr.user") ?: System.getenv("USERNAME")) as String + password = (project.findProperty("gpr.key") ?: System.getenv("TOKEN")) as String + } + } + } +} \ No newline at end of file diff --git a/build-conventions/gradle.properties b/gradle.properties similarity index 100% rename from build-conventions/gradle.properties rename to gradle.properties diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 429f7f56..5125da0c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -24,7 +24,7 @@ mixinextras = "0.3.5" jetbrains_annotations = "24.0.0" mdg_release = "2.0.0-beta.22" -archloom = "1.6.396" +archloom = "1.6.397" forgegradle = "[6.0.16,6.2)" librarian = "1.+" diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index a8e4bf8b..00000000 --- a/settings.gradle +++ /dev/null @@ -1,39 +0,0 @@ -pluginManagement { - repositories { - mavenCentral() - gradlePluginPortal() - maven { - name = 'Neo' - url = 'https://maven.neoforged.net/releases' - } - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - maven { - name = 'Forge' - url = 'https://maven.minecraftforge.net/' - } - maven { - name 'Quilt (Release)' - url 'https://maven.quiltmc.org/repository/release/' - } - maven { - name = 'Sponge Snapshots' - url = 'https://repo.spongepowered.org/repository/maven-public/' - } - maven { - url = 'https://maven.parchmentmc.org' - } - maven { - name = 'Architectury' - url = "https://maven.architectury.dev/" - } - } -} - -plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' -} - -include("Common", "Neo", /*"Forge", "Forge:TestMod",*/ "Fabric", /*"Quilt"*/) \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 00000000..5e75ad22 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,40 @@ +pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + maven { + name = "Neo" + url = uri("https://maven.neoforged.net/releases") + } + maven { + name = "Fabric" + url = uri("https://maven.fabricmc.net/") + } + maven { + name = "Forge" + url = uri("https://maven.minecraftforge.net/") + } + maven { + name = "Quilt (Release)" + url = uri("https://maven.quiltmc.org/repository/release/") + } + maven { + name = "Sponge Snapshots" + url = uri("https://repo.spongepowered.org/repository/maven-public/") + } + maven { + url = uri("https://maven.parchmentmc.org") + } + maven { + name = "Architectury" + url = uri("https://maven.architectury.dev/") + } + } +} + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version ("0.8.0") +} + +rootProject.name = "trimmed" +include("Common", "Neo", /*"Forge", "Forge:TestMod",*/ "Fabric") // "Quilt" \ No newline at end of file