plugins { `multiloader-loader` id("dev.architectury.loom") } val is120 = commonMod.minecraft_version.startsWith("1.20") val targetBytecode = if (is120) 17 else 21 val clothConfigVersion = if (is120) { commonMod.prop("cloth_config_version_1_20_1") } else { commonMod.prop("cloth_config_version_1_21_1") } println("DEBUG: Fabric ${project.path} -> Minecraft Version: ${commonMod.minecraft_version}") println("DEBUG: Fabric ${project.path} -> Overwriting java_version to: $targetBytecode") // Force overwrite properties for resource expansion project.extensions.extraProperties["java_version"] = targetBytecode project.extensions.extraProperties["cloth_config_version"] = clothConfigVersion java { toolchain.languageVersion.set(JavaLanguageVersion.of(21)) // run/tooling on 21 withSourcesJar() } java.sourceCompatibility = JavaVersion.toVersion(targetBytecode) java.targetCompatibility = JavaVersion.toVersion(targetBytecode) afterEvaluate { tasks.withType().configureEach { val launcher = javaToolchains.launcherFor { languageVersion.set(JavaLanguageVersion.of(targetBytecode)) } javaLauncher.set(null as org.gradle.jvm.toolchain.JavaLauncher?) setExecutable(launcher.get().executablePath.asFile.absolutePath) } } tasks.withType().configureEach { options.release.set(targetBytecode) options.encoding = "UTF-8" } repositories { mavenCentral() maven("https://maven.architectury.dev/") maven("https://maven.terraformersmc.com/releases/") maven("https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/") maven("https://maven.blamejared.com/") maven("https://maven.shedaniel.me/") } dependencies { minecraft("com.mojang:minecraft:${commonMod.minecraft_version}") mappings(loom.layered { officialMojangMappings() commonMod.propOrNull("parchment")?.let { parchmentVersion -> if (parchmentVersion != "") parchment("org.parchmentmc.data:parchment-${commonMod.minecraft_version}:$parchmentVersion@zip") } }) modImplementation("net.fabricmc:fabric-loader:${commonMod.prop("fabric_loader_version")}") modApi("net.fabricmc.fabric-api:fabric-api:${commonMod.prop("fabric_api_version")}") // Required deps modImplementation("dev.architectury:architectury-fabric:${commonMod.prop("architectury_version")}") modImplementation("software.bernie.geckolib:geckolib-fabric-${commonMod.minecraft_version}:${commonMod.prop("geckolib_version")}") modImplementation("me.shedaniel.cloth:cloth-config-fabric:$clothConfigVersion") // Mod Menu (REQUIRED if you want the config button always present) modImplementation("com.terraformersmc:modmenu:${commonMod.prop("modmenu_version")}") // JEI (optional) modCompileOnly("mezz.jei:jei-${commonMod.minecraft_version}-common-api:${commonMod.prop("jei_version")}") modCompileOnly("mezz.jei:jei-${commonMod.minecraft_version}-fabric-api:${commonMod.prop("jei_version")}") modLocalRuntime("mezz.jei:jei-${commonMod.minecraft_version}-fabric:${commonMod.prop("jei_version")}") } loom { accessWidenerPath = common.project.file("../../src/main/resources/accesswideners/${commonMod.minecraft_version}-${mod.id}.accesswidener") runs { getByName("client") { client() configName = "Fabric Client" ideConfigGenerated(true) } getByName("server") { server() configName = "Fabric Server" ideConfigGenerated(true) } } } tasks.named("processResources") { inputs.property("targetBytecode", targetBytecode) filesMatching("fabric.mod.json") { expand(mapOf( "java_version" to targetBytecode, "cloth_config_version" to clothConfigVersion, "architectury_version" to commonMod.prop("architectury_version"), "geckolib_version" to commonMod.prop("geckolib_version"), "modmenu_version" to commonMod.prop("modmenu_version"), "fabric_loader_version" to commonMod.prop("fabric_loader_version"), "fabric_api_version" to commonMod.prop("fabric_api_version"), "minecraft_version" to commonMod.minecraft_version, "mod_id" to commonMod.id, "mod_name" to commonMod.name, "mod_license" to commonMod.license, "mod_version" to commonMod.version, "mod_authors" to commonMod.author, "mod_description" to commonMod.description )) filter { line -> if (targetBytecode == 21) { line.replace(">=17", ">=21") } else { line.replace(">=21", ">=17") } } } }