plugins { id 'fabric-loom' version "1.10-SNAPSHOT" 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/" } exclusiveContent { forRepository { ivy { name = "github" url = "https://github.com/" patternLayout { artifact '/[organisation]/[module]/releases/download/[revision]/[module]-[revision]-[classifier].[ext]' } metadataSources { artifact() } } } filter { includeModuleByRegex("[^\\.]+", "nvidium") } } } def gitCommitHash = { -> try { ExecOutput result = providers.exec { commandLine = ['git', 'rev-parse', '--short', 'HEAD'] ignoreExitValue = true } if (result.getResult().get().getExitValue() != 0) { return ""; } else { return result.standardOutput.asText.get().strip(); } } catch (Exception e) { e.printStackTrace() return ""; } } 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.7-0.18.0-fabric") //modRuntimeOnlyMsk "drouarb:nvidium:0.4.1-beta4:1.21.6@jar" modCompileOnly "drouarb:nvidium:0.4.1-beta4:1.21.6@jar" modCompileOnly("maven.modrinth:modmenu:15.0.0-beta.3") modRuntimeOnlyMsk("maven.modrinth:modmenu:15.0.0-beta.3") modCompileOnly("maven.modrinth:iris:1.9.1+1.21.7-fabric") //modRuntimeOnlyMsk("maven.modrinth:iris:1.9.1+1.21.7-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.40-fabric") modRuntimeOnlyMsk("maven.modrinth:chunky:1.4.40-fabric") modRuntimeOnlyMsk("maven.modrinth:spark:1.10.139-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()) } if (!isInGHA) { def hash = gitCommitHash(); if (!hash.equals("")) { 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' } } }