import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id("net.fabricmc.fabric-loom") kotlin("jvm") } group = property("maven_group") as String version = property("mod_version") as String val archivesBaseName = property("archives_base_name") as String val modVersion = property("mod_version") as String base { archivesName.set(archivesBaseName) } repositories { mavenCentral() } dependencies { minecraft("com.mojang:minecraft:${property("minecraft_version")}") implementation("net.fabricmc:fabric-loader:${property("loader_version")}") implementation("net.fabricmc:fabric-language-kotlin:${property("fabric_kotlin_version")}") implementation("net.fabricmc.fabric-api:fabric-api:${property("fabric_api_version")}") } loom { runConfigs.named("client") { isIdeConfigGenerated = true } runConfigs.named("server") { isIdeConfigGenerated = false } } tasks { processResources { val expandedProperties = getProperties() filesMatching("fabric.mod.json") { expand(expandedProperties) } } compileKotlin { compilerOptions { jvmTarget = JvmTarget.JVM_25 } } compileJava { sourceCompatibility = "25" targetCompatibility = "25" options.encoding = "UTF-8" } val copyJarToBin by registering(Copy::class) { description = "Copies the built mod jar into bin/." // No mappings in this build (Minecraft 26.x ships unobfuscated), so Loom // registers no remapJar and 'jar' itself is the final artifact. dependsOn("jar") from(layout.buildDirectory.dir("libs")) { include("$archivesBaseName-$modVersion.jar") } into(rootProject.file("bin")) } val syncDefaultConf by registering(Copy::class) { description = "Syncs the bundled default config template into conf/ for review." from("src/main/resources/assets/jeanaddons/default.conf") { rename { "jeanaddons.conf" } } into(rootProject.file("conf")) } named("build") { dependsOn(copyJarToBin, syncDefaultConf) } } java { toolchain { languageVersion.set(JavaLanguageVersion.of(25)) } }