Files
distant-horizons-core-sharded/core/build.gradle
T
2024-04-26 07:33:14 -05:00

124 lines
4.6 KiB
Groovy

plugins {
id "java"
id "com.github.johnrengelman.shadow" version '7.1.2' apply false // Set this to true if you're using the standalone Core project
}
apply plugin: "application"
application {
mainClass.set("com.seibel.distanthorizons.core.jar.JarMain")
}
configurations {
shadowedArtifact // Used by DH to specify that we want to implement the shadowed core JAR file instead of the regular JAR file
shade
implementation.extendsFrom shade
}
OperatingSystem os = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
// Set the OS lwjgl is using to the current os
project.ext.lwjglNatives = "natives-" + os.toFamilyName()
dependencies { // All of these dependencies are in Vanilla Minecraft, but we need to depend on it as we arent importing Minecraft in the core
// Imports most of lwjgl's libraries (well, only the ones that we need)
implementation platform("org.lwjgl:lwjgl-bom:${rootProject.lwjgl_version}") // TODO: Use Minecraft's version for lwjgl_version (which changes in nearly every version) instead of a hard defined version for all versions
// REMEMBER: Dont shadow stuff here, these are just the libs that are included in Minecraft so that the core can use
implementation "org.lwjgl:lwjgl"
implementation "org.lwjgl:lwjgl-assimp"
implementation "org.lwjgl:lwjgl-glfw"
implementation "org.lwjgl:lwjgl-openal"
implementation "org.lwjgl:lwjgl-opengl"
implementation "org.lwjgl:lwjgl-stb"
implementation "org.lwjgl:lwjgl-tinyfd"
runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-assimp::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-openal::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-opengl::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-tinyfd::$lwjglNatives"
// fast util
shade("it.unimi.dsi:fastutil:${rootProject.fastutil_version}")
// Compression
// needs to be here and in core to prevent runtime/compiler errors
shade("org.lz4:lz4-java:${rootProject.lz4_version}") // LZ4
shade("com.github.luben:zstd-jni:${rootProject.zstd_version}") // Zstd
shade("org.tukaani:xz:${rootProject.xz_version}") // LZMA
// Sqlite Database
shade("org.xerial:sqlite-jdbc:${rootProject.sqlite_jdbc_version}")
// Netty
shade("io.netty:netty-all:${rootProject.netty_version}")
// NightConfig (includes Toml & Json)
// needs to be here and in core to prevent runtime/compiler errors
shade("com.electronwill.night-config:toml:${rootProject.nightconfig_version}")
shade("com.electronwill.night-config:json:${rootProject.nightconfig_version}")
// needed for the standalone jar
shade("org.apache.logging.log4j:log4j-core:2.23.1")
shade("org.apache.logging.log4j:log4j-api:2.23.1")
// SVG (not needed atm)
//shade("com.formdev:svgSalamander:${rootProject.svgSalamander_version}")
// Some other dependencies
implementation("org.jetbrains:annotations:16.0.2")
implementation("com.google.code.findbugs:jsr305:3.0.2")
implementation("com.google.common:google-collect:0.5")
implementation("com.google.guava:guava:31.1-jre")
}
artifacts {
shade shadowJar
shadowedArtifact shadowJar // Setup the configuration shadowedArtifact to be the shadowJar
}
shadowJar {
configurations = [project.configurations.shade]
def librariesLocation = "distanthorizons.libraries"
relocate "it.unimi.dsi.fastutil", "${librariesLocation}.unimi.dsi.fastutil"
// LWJGL
// Only ever shadow the dependencies we use otherwise some stuff would break when running on an external client
relocate "org.lwjgl.system.jawt", "${librariesLocation}.lwjgl.system.jawt"
// Compression
relocate "net.jpountz", "${librariesLocation}.jpountz"
relocate "com.github.luben", "${librariesLocation}.github.luben"
relocate "org.tukaani", "${librariesLocation}.tukaani"
// Sqlite Database
//At the moment, there is a bug in this library which doesnt allow it to be relocated
// relocate "org.sqlite", "${librariesLocation}.sqlite"
// JOML
if (project.hasProperty("embed_joml") && embed_joml == "true")
relocate "org.joml", "${librariesLocation}.joml"
// NightConfig (includes Toml & Json)
relocate "com.electronwill.nightconfig", "${librariesLocation}.electronwill.nightconfig"
// Netty
relocate "io.netty", "${librariesLocation}.netty"
relocate "org.apache.logging", "${librariesLocation}.apache.logging"
mergeServiceFiles()
}