plugins { id 'fabric-loom' version "1.10.1" id 'maven-publish' } version = project.mod_version group = project.maven_group 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 { def stdout = new ByteArrayOutputStream() ExecResult result = exec () -> { commandLine 'git', 'rev-parse', '--short', 'HEAD' standardOutput = stdout ignoreExitValue = true } if (result.getExitValue() != 0) { return ""; } else { return stdout.toString().trim(); } } catch (Exception e) { e.printStackTrace() return ""; } } def buildtime = {System.currentTimeSeconds()} processResources { def time = buildtime() def hash = gitCommitHash() inputs.properties("version": project.version, "commit": hash, "buildtime": time) archivesBaseName = "voxy" filesMatching("fabric.mod.json") { expand "version": project.version, "commit": hash, "buildtime": time } } loom { accessWidenerPath = file("src/main/resources/voxy.accesswidener") } 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}" modImplementation(fabricApi.module("fabric-api-base", project.fabric_version)) modImplementation(fabricApi.module("fabric-rendering-fluids-v1", project.fabric_version)) modImplementation(fabricApi.module("fabric-resource-loader-v0", project.fabric_version)) modImplementation(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 modRuntimeOnly "maven.modrinth:sodium:mc1.21.5-0.6.13-fabric" modCompileOnly "maven.modrinth:sodium:mc1.21.5-0.6.13-fabric" modImplementation("maven.modrinth:lithium:mc1.21.5-0.16.0-fabric") //modRuntimeOnly "maven.modrinth:nvidium:0.2.6-beta" modCompileOnly "maven.modrinth:nvidium:0.2.8-beta" modCompileOnly("maven.modrinth:modmenu:14.0.0-rc.2") modRuntimeOnly("maven.modrinth:modmenu:14.0.0-rc.2") modCompileOnly("maven.modrinth:iris:1.8.5+1.21.4-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.27-fabric") //modRuntimeOnly("maven.modrinth:chunky:1.4.27-fabric") modRuntimeOnly("maven.modrinth:spark:1.10.121-fabric") modRuntimeOnly("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) } archivesBaseName = project.archives_base_name // 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.archivesBaseName}"} } } tasks.register('excludeUnused', Zip) { //outputs.upToDateWhen { false } archiveExtension.set("jar") entryCompression(ZipEntryCompression.STORED) destinationDirectory.set temporaryDir archiveFileName.set processIncludeJars.outputDirectory.asFileTree.filter { it.name.startsWith('rocksdb') }.first().name processIncludeJars.outputDirectory.asFileTree.each { if (it.name.startsWith('rocksdb')) { from zipTree(it) } } exclude { def file = it.name if (file.endsWith(".jnilib")) { return true } if (!file.endsWith(".so")) { return false } return ["osx", "linux32", "s390x", "riscv64", "ppc64le", "aarch64"].any(file::contains) } dependsOn processIncludeJars } if (!processIncludeJars.outputDirectory.asFileTree.filter { it.name.startsWith('rocksdb') }.isEmpty()) { println "Compressing rocksdb" remapJar { nestedJars = nestedJars.filter { !it.name.startsWith('rocksdb') } nestedJars.from excludeUnused } } remapJar { delete getDestinationDirectory().get() 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:8.10.0')) include(implementation 'org.apache.commons:commons-pool2:2.12.0') include(implementation 'org.lz4:lz4-java:1.8.0') compileOnly('org.tukaani:xz:1.10') if (true) { minecraftRuntimeLibraries('org.tukaani:xz:1.10') minecraftRuntimeLibraries('org.xerial:sqlite-jdbc:3.49.1.0') } else { include(implementation('org.tukaani:xz:1.10')) include(implementation('org.xerial:sqlite-jdbc:3.49.1.0')) } //implementation 'org.rocksdb:rocksdbjni:8.10.0' //implementation 'redis.clients:jedis:5.1.0' } 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' } }