Files
voxy/build.gradle
2025-06-18 09:11:25 +10:00

251 lines
7.5 KiB
Groovy

plugins {
id 'fabric-loom' version "1.10.1"
id 'maven-publish'
}
def isInGHA = System.getenv("GITHUB_ACTIONS") == "true"
version = project.mod_version
group = project.maven_group
base {
archivesName = project.archives_base_name
}
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
filter {
includeGroup "maven.modrinth"
}
}
maven { url = "https://maven.shedaniel.me/" }
maven { url = "https://maven.terraformersmc.com/releases/" }
}
def gitCommitHash = { ->
try {
ExecOutput result = providers.exec {
commandLine = ['git', 'rev-parse', '--short', 'HEAD']
ignoreExitValue = true
}
if (result.getResult().get().getExitValue() != 0) {
return "<UnknownCommit>";
} else {
return result.standardOutput.asText.get().strip();
}
} catch (Exception e) {
e.printStackTrace()
return "<UnknownCommit>";
}
}
def buildtime = {System.currentTimeSeconds()}
processResources {
def time = buildtime()
def hash = gitCommitHash()
def version = project.version
inputs.properties("version": version, "commit": hash, "buildtime": time)
filesMatching("fabric.mod.json") {
expand "version": version, "commit": hash, "buildtime": time
}
}
loom {
accessWidenerPath = file("src/main/resources/voxy.accesswidener")
}
def modRuntimeOnlyMsk = {arg->}
if (!isInGHA) {
modRuntimeOnlyMsk = { arg ->
dependencies {
modRuntimeOnly(arg)
}
}
}
dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modRuntimeOnlyMsk(fabricApi.module("fabric-api-base", project.fabric_version))
modRuntimeOnlyMsk(fabricApi.module("fabric-rendering-fluids-v1", project.fabric_version))
modRuntimeOnlyMsk(fabricApi.module("fabric-resource-loader-v0", project.fabric_version))
modRuntimeOnlyMsk(fabricApi.module("fabric-command-api-v2", project.fabric_version))
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
//TODO: this is to eventually not need sodium installed as atm its just used for parsing shaders
modRuntimeOnlyMsk "maven.modrinth:sodium:mc1.21.6-0.6.13-fabric"
modCompileOnly "maven.modrinth:sodium:mc1.21.6-0.6.13-fabric"
modImplementation("maven.modrinth:lithium:mc1.21.6-0.17.0-fabric")
//modRuntimeOnly "maven.modrinth:nvidium:0.2.6-beta"
//modCompileOnly "maven.modrinth:nvidium:0.2.8-beta"
modCompileOnly("maven.modrinth:modmenu:15.0.0-beta.1")
modRuntimeOnlyMsk("maven.modrinth:modmenu:15.0.0-beta.1")
modCompileOnly("maven.modrinth:iris:1.9.0+1.21.6-fabric")
modRuntimeOnlyMsk("maven.modrinth:iris:1.9.0+1.21.6-fabric")
//modCompileOnly("maven.modrinth:starlight:1.1.3+1.20.4")
//modCompileOnly("maven.modrinth:immersiveportals:v5.1.7-mc1.20.4")
modCompileOnly("maven.modrinth:chunky:1.4.36-fabric")
modRuntimeOnlyMsk("maven.modrinth:chunky:1.4.36-fabric")
modRuntimeOnlyMsk("maven.modrinth:spark:1.10.138-fabric")
modRuntimeOnlyMsk("maven.modrinth:fabric-permissions-api:0.3.3")
//modRuntimeOnly("maven.modrinth:nsight-loader:1.2.0")
//modImplementation('io.github.douira:glsl-transformer:2.0.1')
modCompileOnly("maven.modrinth:vivecraft:1.21.1-1.1.14-b2-fabric")
}
def targetJavaVersion = 21
tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
// If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8"
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
it.options.release = targetJavaVersion
}
}
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
//withSourcesJar()
}
jar {
from("LICENSE") {
rename { "${it}_${project.archives_base_name}"}
}
}
tasks.register('makeExcludedRocksDB', Zip) {
archiveExtension.set("jar")
entryCompression = ZipEntryCompression.STORED
destinationDirectory.set temporaryDir
dependsOn configurations.includeInternal
def files = configurations.includeInternal.incoming.getArtifacts().getArtifactFiles().filter {
it.name.startsWith('rocksdb')
}
from {->zipTree(files.first())}
archiveFileName.set(providers.provider{files.first().name})
exclude {
def file = it.name
if (file.endsWith(".jnilib")) {
return true
}
if (!file.endsWith(".so")) {
return false
}
return ["osx", "linux32", "musl", "s390x", "riscv64", "ppc64le", "aarch64"].any(file::contains)
}
}
processIncludeJars {
outputs.cacheIf {true}
dependsOn makeExcludedRocksDB
jars = jars.filter {!it.name.startsWith('rocksdb')}
jars.from(makeExcludedRocksDB)
}
remapJar {
doFirst {
delete fileTree(getDestinationDirectory().get())
}
def hash = gitCommitHash();
if (!hash.equals("<UnknownCommit>")) {
archiveClassifier.set(hash);
}
}
project.ext.lwjglVersion = "3.3.3"
project.ext.lwjglNatives = "natives-windows"
repositories {
mavenCentral()
}
dependencies {
implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")
implementation "org.lwjgl:lwjgl"
include(implementation "org.lwjgl:lwjgl-lmdb")
include(implementation "org.lwjgl:lwjgl-zstd")
runtimeOnly "org.lwjgl:lwjgl:$lwjglVersion:natives-windows"
runtimeOnly "org.lwjgl:lwjgl:$lwjglVersion:natives-linux"
include(runtimeOnly "org.lwjgl:lwjgl-lmdb:$lwjglVersion:natives-windows")
include(runtimeOnly "org.lwjgl:lwjgl-zstd:$lwjglVersion:natives-windows")
include(runtimeOnly "org.lwjgl:lwjgl-lmdb:$lwjglVersion:natives-linux")
include(runtimeOnly "org.lwjgl:lwjgl-zstd:$lwjglVersion:natives-linux")
include(implementation 'redis.clients:jedis:5.1.0')
include(implementation('org.rocksdb:rocksdbjni:10.2.1'))
include(implementation 'org.apache.commons:commons-pool2:2.12.0')
include(implementation 'org.lz4:lz4-java:1.8.0')
include(implementation('org.tukaani:xz:1.10'))
if (true) {
if (!isInGHA) {
minecraftRuntimeLibraries('org.xerial:sqlite-jdbc:3.49.1.0')
}
} else {
include(implementation('org.xerial:sqlite-jdbc:3.49.1.0'))
}
//implementation 'org.rocksdb:rocksdbjni:8.10.0'
//implementation 'redis.clients:jedis:5.1.0'
}
if (!isInGHA) {
repositories {
maven {
url = "https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1"
}
}
dependencies {
modRuntimeOnly('me.djtheredstoner:DevAuth-fabric:1.1.0') {
exclude group: 'net.fabricmc', module: 'fabric-loader'
}
}
}