From dfd46a9b5629e778cda18e715991604bddf9cb89 Mon Sep 17 00:00:00 2001 From: limepotato Date: Sat, 9 Mar 2024 20:25:03 -0700 Subject: [PATCH] Kotlin Init --- build.gradle.kts | 142 +++++++++++++++++++++++++++++++ build.gradle => build.gradle.old | 0 gradle.properties | 2 +- gradle/libs.versions.toml | 28 +++--- settings.gradle | 14 --- settings.gradle.kts | 16 ++++ 6 files changed, 174 insertions(+), 28 deletions(-) create mode 100644 build.gradle.kts rename build.gradle => build.gradle.old (100%) delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..c148052 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,142 @@ +// This is to suppress false warnings generated by a bug in IntelliJ +@file:Suppress("DSL_SCOPE_VIOLATION", "MISSING_DEPENDENCY_CLASS", "FUNCTION_CALL_EXPECTED", "PropertyName") + +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + java + `maven-publish` + + alias(libs.plugins.kotlin) + alias(libs.plugins.quilt.loom) +} + +val archives_base_name: String by project +base.archivesName.set(archives_base_name) + +val javaVersion = 17 + +repositories { + // Add repositories to retrieve artifacts from in here. + // You should only use this when depending on other mods because + // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html + // for more information about repositories. + +} + +// All the dependencies are declared at gradle/libs.version.toml and referenced with "libs." +// See https://docs.gradle.org/current/userguide/platforms.html for information on how version catalogs work. +dependencies { + minecraft(libs.minecraft) + mappings( + variantOf(libs.quilt.mappings) { + classifier("intermediary-v2") + } + ) + + // Replace the above line with the block below if you want to use Mojang mappings as your primary mappings, falling back on QM for parameters and Javadocs + /* + mappings( + loom.layered { + mappings(variantOf(libs.quilt.mappings) { classifier("intermediary-v2") }) + officialMojangMappings() + } + ) + */ + + modImplementation(libs.quilt.loader) + + + // QSL is not a complete API; You will need Quilted Fabric API to fill in the gaps. + // Quilted Fabric API will automatically pull in the correct QSL version. + modImplementation(libs.qfapi) + // modImplementation(libs.bundles.qfapi) // If you wish to use the deprecated Fabric API modules + + modImplementation(libs.qkl) +} + +tasks { + withType { + kotlinOptions { + jvmTarget = javaVersion.toString() + // languageVersion: A.B of the kotlin plugin version A.B.C + languageVersion = libs.plugins.kotlin.get().version.requiredVersion.substringBeforeLast('.') + } + } + + withType.configureEach { + options.encoding = "UTF-8" + options.isDeprecation = true + options.release.set(javaVersion) + } + + processResources { + filteringCharset = "UTF-8" + inputs.property("version", project.version) + + filesMatching("quilt.mod.json") { + expand( + mapOf( + "version" to project.version + ) + ) + } + } + + javadoc { + options.encoding = "UTF-8" + } + + // Run `./gradlew wrapper --gradle-version ` or `gradle wrapper --gradle-version ` to update gradle scripts + // BIN distribution should be sufficient for the majority of mods + wrapper { + distributionType = Wrapper.DistributionType.BIN + } + + jar { + from("LICENSE") { + rename { "LICENSE_${archives_base_name}" } + } + } +} + +val targetJavaVersion = JavaVersion.toVersion(javaVersion) +if (JavaVersion.current() < targetJavaVersion) { + kotlin.jvmToolchain(javaVersion) + + java.toolchain { + languageVersion.set(JavaLanguageVersion.of(javaVersion)) + } +} + +java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() + + // If this mod is going to be a library, then it should also generate Javadocs in order to aid with development. + // Uncomment this line to generate them. + // withJavadocJar() + + // Still required by IDEs such as Eclipse and VSC + sourceCompatibility = targetJavaVersion + targetCompatibility = targetJavaVersion +} + +// Configure the maven publication +publishing { + publications { + register("Maven") { + from(components.getByName("java")) + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } +} diff --git a/build.gradle b/build.gradle.old similarity index 100% rename from build.gradle rename to build.gradle.old diff --git a/gradle.properties b/gradle.properties index 89fc04e..5ca2733 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.parallel = true modid=sine-termino # Mod Properties -version = 0.0.10 +version = 0.1.0 maven_group = xyz.limepot archives_base_name = stellarworks projchangelog = Changelog! diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ffbe989..ded54dd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,24 +1,26 @@ [versions] -# The latest versions are available at https://lambdaurora.dev/tools/import_quilt.html -minecraft = "1.20.1" -quilt_mappings = "1.20.1+build.1" -quilt_loader = "0.19.1" +kotlin = "1.8.22" -quilted_fabric_api = "7.0.3+0.83.1-1.20.1" +minecraft = "1.20.1" +qfapi = "7.5.0+0.91.0-1.20.1" +qkl = "2.1.0+kt.1.8.22+flk.1.9.4" +loader = "0.23.1" +mappings = "1.20.1+build.23" +loom = "1.2.3" [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } -quilt_mappings = { module = "org.quiltmc:quilt-mappings", version.ref = "quilt_mappings" } -quilt_loader = { module = "org.quiltmc:quilt-loader", version.ref = "quilt_loader" } - -quilted_fabric_api = { module = "org.quiltmc.quilted-fabric-api:quilted-fabric-api", version.ref = "quilted_fabric_api" } -quilted_fabric_api_deprecated = { module = "org.quiltmc.quilted-fabric-api:quilted-fabric-api-deprecated", version.ref = "quilted_fabric_api" } +qfapi = { module = "org.quiltmc.quilted-fabric-api:quilted-fabric-api", version.ref = "qfapi" } +qfapi_deprecated = { module = "org.quiltmc.quilted-fabric-api:quilted-fabric-api-deprecated", version.ref = "qfapi" } +qkl = { module = "org.quiltmc.quilt-kotlin-libraries:quilt-kotlin-libraries", version.ref = "qkl" } +quilt_loader = { module = "org.quiltmc:quilt-loader", version.ref = "loader" } +quilt_mappings = { module = "org.quiltmc:quilt-mappings", version.ref = "mappings" } -# If you have multiple similar dependencies, you can declare a dependency bundle and reference it on the build script with "libs.bundles.example". [bundles] -quilted_fabric_api = ["quilted_fabric_api", "quilted_fabric_api_deprecated"] +quilted_fabric_api = ["qfapi", "qfapi_deprecated"] [plugins] -quilt_loom = { id = "org.quiltmc.loom", version = "1.2.+" } +kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +quilt_loom = { id = "org.quiltmc.loom", version.ref = "loom" } diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index f6ff667..0000000 --- a/settings.gradle +++ /dev/null @@ -1,14 +0,0 @@ - pluginManagement { - repositories { - maven { - name = 'Quilt' - url = 'https://maven.quiltmc.org/repository/release' - } - // Currently needed for Intermediary and other temporary dependencies - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - gradlePluginPortal() - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..f3a695b --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,16 @@ +pluginManagement { + repositories { + maven { + name = "Quilt" + url = uri("https://maven.quiltmc.org/repository/release") + } + // Currently needed for Intermediary and other temporary dependencies + maven { + name = "Fabric" + url = uri("https://maven.fabricmc.net/") + } + + gradlePluginPortal() + mavenCentral() + } +}