plugins { id 'fabric-loom' version "1.8.11" 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 { inputs.properties("version": project.version, "commit": gitCommitHash, "buildtime": buildtime) archivesBaseName = "voxy" filesMatching("fabric.mod.json") { expand "commit": gitCommitHash, "version": project.version, "buildtime": buildtime } } 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-rendering-data-attachment-v1:0.3.38+73761d2e9a") 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.3-0.6.0-fabric" modCompileOnly "maven.modrinth:sodium:mc1.21.3-0.6.0-fabric" //modRuntimeOnly "maven.modrinth:nvidium:0.2.6-beta" modCompileOnly "maven.modrinth:nvidium:0.2.8-beta" modImplementation("maven.modrinth:cloth-config:16.0.141+fabric") modImplementation("maven.modrinth:modmenu:12.0.0-beta.1") modCompileOnly("maven.modrinth:iris:1.8.0+1.21.3-fabric") //modCompileOnly("maven.modrinth:starlight:1.1.3+1.20.4") //modCompileOnly("maven.modrinth:immersiveportals:v5.1.7-mc1.20.4") modCompileOnly("maven.modrinth:vivecraft:1.21.1-1.1.14-b2-fabric") modCompileOnly("maven.modrinth:chunky:1.4.27-fabric") modRuntimeOnly("maven.modrinth:chunky:1.4.27-fabric") modRuntimeOnly("maven.modrinth:spark:1.10.115-fabric") modRuntimeOnly("maven.modrinth:fabric-permissions-api:0.3.1") //modRuntimeOnly("maven.modrinth:nsight-loader:1.2.0") modImplementation('io.github.douira:glsl-transformer:2.0.1') } 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 */ archiveFileName.set "rocksdb.jar" 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 } remapJar { nestedJars = nestedJars.filter { !it.name.startsWith('rocksdb') } nestedJars.from excludeUnused } 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') //implementation 'org.rocksdb:rocksdbjni:8.10.0' //implementation 'redis.clients:jedis:5.1.0' }