mirror of
https://github.com/GTNewHorizons/Angelica.git
synced 2026-10-25 20:22:22 +00:00
113 lines
3.3 KiB
Kotlin
113 lines
3.3 KiB
Kotlin
plugins {
|
|
`java-library`
|
|
`maven-publish`
|
|
}
|
|
|
|
version = rootProject.version
|
|
|
|
java {
|
|
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
|
}
|
|
|
|
tasks.withType<JavaCompile>().configureEach {
|
|
options.release.set(8)
|
|
}
|
|
|
|
val rfgObfAttr = Attribute.of("com.gtnewhorizons.retrofuturagradle.obfuscation", String::class.java)
|
|
val rfgTransformedAttr = Attribute.of("rfgDeobfuscatorTransformed", Boolean::class.javaObjectType)
|
|
|
|
configurations {
|
|
listOf("apiElements", "runtimeElements").forEach { name ->
|
|
named(name) {
|
|
attributes {
|
|
attribute(rfgObfAttr, "mcp")
|
|
attribute(rfgTransformedAttr, true)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
val moltenvkVersion = (findProperty("moltenvkVersion") as String?) ?: libs.versions.lwjgl3Release.get()
|
|
|
|
repositories {
|
|
maven {
|
|
name = "Forge"
|
|
url = uri("https://maven.minecraftforge.net/")
|
|
}
|
|
maven {
|
|
name = "Forge artifact-only"
|
|
url = uri("https://maven.minecraftforge.net/")
|
|
metadataSources { artifact() }
|
|
content { includeModule("net.minecraftforge", "forge") }
|
|
}
|
|
mavenCentral()
|
|
}
|
|
|
|
val moltenvkNatives by configurations.creating {
|
|
isCanBeConsumed = false
|
|
isCanBeResolved = true
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly("net.minecraftforge:forge:1.7.10-10.13.4.1614-1.7.10:universal") { isTransitive = false }
|
|
|
|
listOf("natives-macos", "natives-macos-arm64").forEach { nativesClassifier ->
|
|
moltenvkNatives(libs.lwjgl3.vulkan) {
|
|
artifact { classifier = nativesClassifier }
|
|
isTransitive = false
|
|
}
|
|
}
|
|
}
|
|
|
|
val extractMoltenVK = tasks.register<Sync>("extractMoltenVK") {
|
|
val outDir = layout.buildDirectory.dir("generated/resources/moltenvk")
|
|
from(provider { moltenvkNatives.files.map { zipTree(it) } }) {
|
|
include("macos/**/libMoltenVK.dylib")
|
|
}
|
|
includeEmptyDirs = false
|
|
into(outDir)
|
|
doLast {
|
|
listOf("macos/x64", "macos/arm64").forEach { dir ->
|
|
val rel = "$dir/org/lwjgl/vulkan/libMoltenVK.dylib"
|
|
if (!outDir.get().file(rel).asFile.isFile) {
|
|
throw GradleException("MoltenVK dylib missing after extraction: $rel")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
sourceSets["main"].resources.srcDir(extractMoltenVK)
|
|
|
|
val distJar = tasks.register<Jar>("distJar") {
|
|
archiveBaseName.set("angelica-moltenvk")
|
|
archiveVersion.set(moltenvkVersion)
|
|
from(sourceSets["main"].output)
|
|
manifest {
|
|
attributes(
|
|
"FMLCorePlugin" to "com.gtnewhorizons.angelica.moltenvk.loading.MoltenVKCorePlugin"
|
|
)
|
|
}
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
create<MavenPublication>("mavenJava") {
|
|
groupId = "com.gtnewhorizons.angelica"
|
|
artifactId = "angelica-moltenvk"
|
|
version = moltenvkVersion
|
|
artifact(distJar)
|
|
}
|
|
}
|
|
repositories {
|
|
if (hasProperty("publishMoltenVK") && System.getenv("MAVEN_USER") != null) {
|
|
maven {
|
|
name = "GTNHMaven"
|
|
url = uri(rootProject.findProperty("mavenPublishUrl")?.toString() ?: "https://nexus.gtnewhorizons.com/repository/releases/")
|
|
credentials {
|
|
username = System.getenv("MAVEN_USER")
|
|
password = System.getenv("MAVEN_PASSWORD")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|