lattice/build.gradle
2026-07-10 17:36:51 -04:00

83 lines
2.6 KiB
Groovy

plugins {
id 'net.fabricmc.fabric-loom' version "${loom_version}"
id 'maven-publish'
id 'org.jetbrains.kotlin.jvm' version "${kotlin_version}"
}
version = "${mod_version}"
group = project.maven_group
base {
archivesName = "lattice-${project.minecraft_version}-fabric"
}
repositories {
mavenCentral()
}
// 26.1.2 is non-obfuscated: fabric-loom without remapping, no mappings dependency.
dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
implementation "org.jetbrains.kotlin:kotlin-stdlib"
implementation "net.fabricmc:fabric-language-kotlin:${project.fabric_kotlin_version}"
implementation "com.mojang:brigadier:1.2.9"
// NanoVG is not part of Minecraft's LWJGL modules, so bundle it (and its
// natives) into the mod jar via include so it is present at runtime.
implementation "org.lwjgl:lwjgl-nanovg:${project.nanovg_version}"
include "org.lwjgl:lwjgl-nanovg:${project.nanovg_version}"
['linux', 'linux-arm64', 'windows', 'macos', 'macos-arm64'].each { platform ->
runtimeOnly "org.lwjgl:lwjgl-nanovg:${project.nanovg_version}:natives-${platform}"
include "org.lwjgl:lwjgl-nanovg:${project.nanovg_version}:natives-${platform}"
}
}
processResources {
inputs.property "version", project.version
filesMatching("fabric.mod.json") {
expand "version": inputs.properties.version
}
}
tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"
it.options.release = 25
}
java {
withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
}
kotlin {
jvmToolchain(25)
}
publishing {
publications {
create("mavenJava", MavenPublication) {
artifactId = "lattice-${project.minecraft_version}-fabric"
from components.java
}
}
repositories {
mavenLocal()
}
}
// Copies the built lattice and example mod jars into a Minecraft mods folder.
// Override the target with -PmodsDir=/path/to/mods (defaults to the Prism instance).
def defaultModsDir = "${System.getProperty('user.home')}/.local/share/PrismLauncher/instances/Lattice testing/minecraft/mods"
tasks.register('deployMods', Copy) {
group = 'lattice'
description = 'Copies the lattice and example mod jars into a Minecraft mods folder.'
dependsOn tasks.named('jar'), project(':example').tasks.named('jar')
from tasks.named('jar').flatMap { it.archiveFile }
from project(':example').tasks.named('jar').flatMap { it.archiveFile }
into providers.gradleProperty('modsDir').orElse(defaultModsDir)
}