first
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
plugins {
|
||||
id("multiloader-common")
|
||||
id("dev.architectury.loom")
|
||||
id("architectury-plugin") version "3.4.162"
|
||||
}
|
||||
|
||||
val is120 = project.path.contains("1.20")
|
||||
val targetBytecode = if (is120) 17 else 21
|
||||
|
||||
println("DEBUG: Project ${project.path} -> Compiler: JDK 21 (Fixed), Bytecode Target: $targetBytecode")
|
||||
|
||||
java {
|
||||
// TRICK: Always use the Java 21 Toolchain to run the build.
|
||||
// This stops Gradle from complaining about Architectury 13 requiring Java 21,
|
||||
// even when we are currently focused on 1.20.1.
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
||||
withSourcesJar()
|
||||
}
|
||||
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
// TRICK: Even though we are using JDK 21 to compile, we force the output
|
||||
// to be compatible with Java 17 when building for 1.20.1.
|
||||
options.release.set(targetBytecode)
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
loom {
|
||||
accessWidenerPath =
|
||||
common.project.file("../../src/main/resources/accesswideners/${commonMod.minecraft_version}-${mod.id}.accesswidener")
|
||||
}
|
||||
|
||||
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/")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:${commonMod.minecraft_version}")
|
||||
mappings(loom.layered {
|
||||
officialMojangMappings()
|
||||
commonMod.propOrNull("parchment_mappings")?.let { parchmentVersion ->
|
||||
if (parchmentVersion != "") parchment("org.parchmentmc.data:parchment-${commonMod.minecraft_version}:$parchmentVersion@zip")
|
||||
}
|
||||
})
|
||||
|
||||
compileOnly("org.spongepowered:mixin:0.8.5")
|
||||
"io.github.llamalad7:mixinextras-common:0.5.0".let {
|
||||
compileOnly(it)
|
||||
annotationProcessor(it)
|
||||
}
|
||||
|
||||
// Architectury & GeckoLib
|
||||
modImplementation("dev.architectury:architectury:${commonMod.prop("architectury_version")}")
|
||||
modImplementation("software.bernie.geckolib:geckolib-fabric-${commonMod.minecraft_version}:${commonMod.prop("geckolib_version")}")
|
||||
|
||||
// JEI (Common API)
|
||||
// We use "modCompileOnly" because we only need the API to write code, not the full mod
|
||||
modCompileOnly("mezz.jei:jei-${commonMod.minecraft_version}-common-api:${commonMod.prop("jei_version")}")
|
||||
}
|
||||
|
||||
val commonJava: Configuration by configurations.creating {
|
||||
isCanBeResolved = false
|
||||
isCanBeConsumed = true
|
||||
}
|
||||
|
||||
val commonResources: Configuration by configurations.creating {
|
||||
isCanBeResolved = false
|
||||
isCanBeConsumed = true
|
||||
}
|
||||
|
||||
artifacts {
|
||||
afterEvaluate {
|
||||
val mainSourceSet = sourceSets.main.get()
|
||||
mainSourceSet.java.sourceDirectories.files.forEach {
|
||||
add(commonJava.name, it)
|
||||
}
|
||||
mainSourceSet.resources.sourceDirectories.files.forEach {
|
||||
add(commonResources.name, it)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user