diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index 14e8edb8d..489d77999 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -195,7 +195,7 @@ public final class Launcher extends Application { || configPath.contains("\\INetCache\\") || configPath.contains("\\$Recycle.Bin\\") || configPath.contains("\\recycler\\"); - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + } else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD()) { return configPath.startsWith("/tmp/") || configPath.startsWith("/var/tmp/") || configPath.startsWith("/var/cache/") @@ -290,7 +290,7 @@ public final class Launcher extends Application { .findAny() .map(bean -> bean.getUsage().getUsed() / 1024 / 1024 + "MB") .orElse("Unknown")); - if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) + if (OperatingSystem.CURRENT_OS.isLinuxOrBSD()) LOG.info("XDG Session Type: " + System.getenv("XDG_SESSION_TYPE")); if (System.getProperty("hmcl.update_source.override") != null) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java b/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java index b84ef0b36..0a599934f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java @@ -55,7 +55,7 @@ public final class Metadata { static { String hmclHome = System.getProperty("hmcl.home"); if (hmclHome == null) { - if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + if (OperatingSystem.CURRENT_OS.isLinuxOrBSD()) { String xdgData = System.getenv("XDG_DATA_HOME"); if (StringUtils.isNotBlank(xdgData)) { HMCL_DIRECTORY = Paths.get(xdgData, "hmcl").toAbsolutePath(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index db475d464..84810e650 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -380,7 +380,7 @@ public final class FXUtils { openCommand = "explorer.exe"; else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) openCommand = "/usr/bin/open"; - else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX && new File("/usr/bin/xdg-open").exists()) + else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && new File("/usr/bin/xdg-open").exists()) openCommand = "/usr/bin/xdg-open"; else openCommand = null; @@ -471,7 +471,7 @@ public final class FXUtils { LOG.log(Level.WARNING, "An exception occurred while calling rundll32", e); } } - if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + if (OperatingSystem.CURRENT_OS.isLinuxOrBSD()) { for (String browser : linuxBrowsers) { try (final InputStream is = Runtime.getRuntime().exec(new String[]{"which", browser}).getInputStream()) { if (is.read() != -1) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/FractureiserDetector.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/FractureiserDetector.java index f5e5cfd70..01a437030 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/FractureiserDetector.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/FractureiserDetector.java @@ -33,7 +33,7 @@ public final class FractureiserDetector { check(falseEdgePath.resolve("run.bat")); } } - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + } else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD()) { Path dataDir = Paths.get(System.getProperty("user.home"), ".config", ".data"); if (Files.exists(dataDir)) { check(dataDir.resolve(".ref")); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java index d658aa68b..41c2e5bd6 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java @@ -65,8 +65,7 @@ public final class NativePatcher { final boolean useNativeGLFW = settings.isUseNativeGLFW(); final boolean useNativeOpenAL = settings.isUseNativeOpenAL(); - if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX - && (useNativeGLFW || useNativeOpenAL) + if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() && (useNativeGLFW || useNativeOpenAL) && VersionNumber.VERSION_COMPARATOR.compare(gameVersion, "1.19") >= 0) { version = version.setLibraries(version.getLibraries().stream() @@ -94,7 +93,7 @@ public final class NativePatcher { if (settings.isNotPatchNatives()) return version; - if (arch.isX86()) + if ((os == OperatingSystem.WINDOWS || os == OperatingSystem.LINUX || os == OperatingSystem.OSX) && arch.isX86()) return version; if ((os == OperatingSystem.OSX || os == OperatingSystem.WINDOWS) && arch == Architecture.ARM64 diff --git a/HMCL/src/main/resources/assets/HMCLauncher.sh b/HMCL/src/main/resources/assets/HMCLauncher.sh index 1d2f7b106..41d54d508 100644 --- a/HMCL/src/main/resources/assets/HMCLauncher.sh +++ b/HMCL/src/main/resources/assets/HMCLauncher.sh @@ -15,6 +15,8 @@ case "$OSTYPE" in _HMCL_OS="linux";; darwin*) _HMCL_OS="osx";; + freebsd*) + _HMCL_OS="freebsd";; msys*|cygwin*) _HMCL_OS="windows";; *) @@ -57,8 +59,7 @@ fi # First, find Java in HMCL_JAVA_HOME if [ -n "${HMCL_JAVA_HOME+x}" ]; then if [ -x "$HMCL_JAVA_HOME/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$HMCL_JAVA_HOME/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$HMCL_JAVA_HOME/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" else if [ "$_HMCL_USE_CHINESE" == true ]; then echo "环境变量 HMCL_JAVA_HOME 的值无效,请设置为合法的 Java 路径。" 1>&2 @@ -75,117 +76,75 @@ fi case "$_HMCL_ARCH" in x86_64) if [ -x "$_HMCL_DIR/jre-x64/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$_HMCL_DIR/jre-x64/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$_HMCL_DIR/jre-x64/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi if [ -x "$_HMCL_DIR/jre-x86/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$_HMCL_DIR/jre-x86/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$_HMCL_DIR/jre-x86/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi ;; x86) if [ -x "$_HMCL_DIR/jre-x86/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$_HMCL_DIR/jre-x86/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$_HMCL_DIR/jre-x86/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi ;; arm64) if [ -x "$_HMCL_DIR/jre-arm64/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$_HMCL_DIR/jre-arm64/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$_HMCL_DIR/jre-arm64/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi ;; arm32) if [ -x "$_HMCL_DIR/jre-arm32/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$_HMCL_DIR/jre-arm32/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$_HMCL_DIR/jre-arm32/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi ;; loongarch64) if [ -x "$_HMCL_DIR/jre-loongarch64/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$_HMCL_DIR/jre-loongarch64/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$_HMCL_DIR/jre-loongarch64/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi ;; esac # Find Java in JAVA_HOME if [ -f "$JAVA_HOME/bin/$_HMCL_JAVA_EXE_NAME" ]; then - "$JAVA_HOME/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec "$JAVA_HOME/bin/$_HMCL_JAVA_EXE_NAME" $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi # Find Java in PATH if [ -x "$(command -v $_HMCL_JAVA_EXE_NAME)" ]; then - $_HMCL_JAVA_EXE_NAME $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" - exit 0 + exec $_HMCL_JAVA_EXE_NAME $_HMCL_VM_OPTIONS -jar "$_HMCL_PATH" fi # Java not found -if [[ "$_HMCL_OS" == "unknown" || "$_HMCL_ARCH" == "unknown" ]]; then - if [ "$_HMCL_USE_CHINESE" == true ]; then - echo "运行 HMCL 需要 Java 运行时环境,请安装 Java 并设置环境变量后重试。" 1>&2 - echo "你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。" 1>&2 - else - echo "The Java runtime environment is required to run HMCL. " 1>&2 - echo "Please install Java and set the environment variables and try again." 1>&2 - echo "You can visit the https://docs.hmcl.net/help.html page for help." 1>&2 - fi - exit 1 -fi - -if [[ "$_HMCL_ARCH" == "loongarch64" ]]; then - if [ "$_HMCL_USE_CHINESE" == true ]; then - echo "运行 HMCL 需要 Java 运行时环境,请安装龙芯 JDK (https://docs.hmcl.net/downloads/loongnix.html) 并设置环境变量后重试。" 1>&2 - echo "你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。" 1>&2 - else - echo "The Java runtime environment is required to run HMCL." 1>&2 - echo "Please install Loongson JDK (https://docs.hmcl.net/downloads/loongnix.html) and set the environment variables, then try again." 1>&2 - echo "You can visit the https://docs.hmcl.net/help.html page for help." 1>&2 - fi - exit 1 -fi - - -case "$_HMCL_OS" in - linux) - _HMCL_DOWNLOAD_PAGE_OS="linux";; - osx) - _HMCL_DOWNLOAD_PAGE_OS="macos";; - windows) - _HMCL_DOWNLOAD_PAGE_OS="windows";; - *) - echo "Unknown os: $_HMCL_OS" 1>&2 - exit 1 - ;; -esac - -case "$_HMCL_ARCH" in - arm64) - _HMCL_DOWNLOAD_PAGE_ARCH="arm64";; - arm32) - _HMCL_DOWNLOAD_PAGE_ARCH="arm32";; - x86_64) - _HMCL_DOWNLOAD_PAGE_ARCH="x86_64";; - x86) - _HMCL_DOWNLOAD_PAGE_ARCH="x86";; - *) - echo "Unknown architecture: $_HMCL_ARCH" 1>&2 - exit 1 - ;; -esac - -_HMCL_DOWNLOAD_PAGE="https://docs.hmcl.net/downloads/$_HMCL_DOWNLOAD_PAGE_OS/$_HMCL_DOWNLOAD_PAGE_ARCH.html" - -if [ "$_HMCL_USE_CHINESE" == true ]; then - echo "运行 HMCL 需要 Java 运行时环境,请安装 Java 并设置环境变量后重试。" 1>&2 - echo "$_HMCL_DOWNLOAD_PAGE" 1>&2 - echo "你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。" 1>&2 +if [ "$_HMCL_OS" == "osx" ]; then + _HMCL_DOWNLOAD_PAGE_OS="macos" else - echo "The Java runtime environment is required to run HMCL. " 1>&2 - echo "Please install Java and set the environment variables and try again." 1>&2 - echo "$_HMCL_DOWNLOAD_PAGE" 1>&2 - echo "You can visit the https://docs.hmcl.net/help.html page for help." 1>&2 + _HMCL_DOWNLOAD_PAGE_OS="$_HMCL_OS" fi + +case "$_HMCL_DOWNLOAD_PAGE_OS-$_HMCL_ARCH" in + windows-x86|windows-x86_64|windows-arm64|linux-x86|linux-x86_64|linux-arm32|linux-arm64|linux-loongarch64|macos-x86_64|macos-arm64) + if [ "$_HMCL_USE_CHINESE" == true ]; then + echo "运行 HMCL 需要 Java 运行时环境,请安装 Java 并设置环境变量后重试。" 1>&2 + echo "https://docs.hmcl.net/downloads/$_HMCL_DOWNLOAD_PAGE_OS/$_HMCL_HMCL_ARCH.html" 1>&2 + echo "你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。" 1>&2 + else + echo "The Java runtime environment is required to run HMCL. " 1>&2 + echo "Please install Java and set the environment variables and try again." 1>&2 + echo "https://docs.hmcl.net/downloads/$_HMCL_DOWNLOAD_PAGE_OS/$_HMCL_HMCL_ARCH.html" 1>&2 + echo "You can visit the https://docs.hmcl.net/help.html page for help." 1>&2 + fi + ;; + *) + if [ "$_HMCL_USE_CHINESE" == true ]; then + echo "运行 HMCL 需要 Java 运行时环境,请安装 Java 并设置环境变量后重试。" 1>&2 + echo "你可以访问 https://docs.hmcl.net/help.html 页面寻求帮助。" 1>&2 + else + echo "The Java runtime environment is required to run HMCL. " 1>&2 + echo "Please install Java and set the environment variables and try again." 1>&2 + echo "You can visit the https://docs.hmcl.net/help.html page for help." 1>&2 + fi + ;; +esac + exit 1 diff --git a/HMCL/src/main/resources/assets/natives.json b/HMCL/src/main/resources/assets/natives.json index cf51447ee..87059afa7 100644 --- a/HMCL/src/main/resources/assets/natives.json +++ b/HMCL/src/main/resources/assets/natives.json @@ -3166,5 +3166,628 @@ "com.mojang:text2speech:1.10.3:natives": null, "com.mojang:text2speech:1.11.3:natives": null, "com.mojang:text2speech:1.12.4:natives": null + }, + "freebsd-x86_64": { + "org.lwjgl:lwjgl:3.1.6": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "sha1": "7202012cf0cadb9ffad4874494920fd8bbd93413", + "size": 792204 + } + } + }, + "org.lwjgl:lwjgl:3.1.6:natives": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "2d38355b453edfe2daee1a567bcdb82c0485edcf", + "size": 95872 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.1.6": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "sha1": "41256f2c098806304fd224613d3d01b02725470e", + "size": 46421 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "bdba1662b621228679c7aed87945d1f28c590d5b", + "size": 155867 + } + } + }, + "org.lwjgl:lwjgl-openal:3.1.6": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "sha1": "89d8868c2d688b55e3e923345e4a146c6d034229", + "size": 113094 + } + } + }, + "org.lwjgl:lwjgl-openal:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "0fc6495e6752727b629cf03a105c9d56087d4edd", + "size": 597512 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.1.6": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "sha1": "81d0a7fd96bf5eb6257fddf6b77e338d8918bf32", + "size": 931744 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "d3e8ec997cef8bc66819c7e0ad7a54182f7aff2a", + "size": 81034 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.1.6": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "sha1": "e6dba9ab8532cb6aac273adf26496ce689999943", + "size": 146829 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "4881a965c7679b4984c0d8a5890f07ea85c653c4", + "size": 101847 + } + } + }, + "org.lwjgl:lwjgl-stb:3.1.6": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "sha1": "033fe42d1b37e35afd8b6e2653abc77deadb0730", + "size": 143099 + } + } + }, + "org.lwjgl:lwjgl-stb:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "0aad82a857ebb9a3a212dc2c386761d57e11a8f2", + "size": 225735 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.1.6": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "sha1": "8b7c94a57f56a5b38b23c02c1cada77dccba9930", + "size": 15917 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.1.6:natives": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "124d0e48ae1584f09e5701588ae8ad139be26003", + "size": 39077 + } + } + }, + "org.lwjgl:lwjgl:3.2.2": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "sha1": "7202012cf0cadb9ffad4874494920fd8bbd93413", + "size": 792204 + } + } + }, + "org.lwjgl:lwjgl:3.2.2:natives": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "2d38355b453edfe2daee1a567bcdb82c0485edcf", + "size": 95872 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.2.2": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "sha1": "41256f2c098806304fd224613d3d01b02725470e", + "size": 46421 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.2.2:natives": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "bdba1662b621228679c7aed87945d1f28c590d5b", + "size": 155867 + } + } + }, + "org.lwjgl:lwjgl-openal:3.2.2": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "sha1": "89d8868c2d688b55e3e923345e4a146c6d034229", + "size": 113094 + } + } + }, + "org.lwjgl:lwjgl-openal:3.2.2:natives": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "0fc6495e6752727b629cf03a105c9d56087d4edd", + "size": 597512 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.2.2": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "sha1": "81d0a7fd96bf5eb6257fddf6b77e338d8918bf32", + "size": 931744 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.2.2:natives": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "d3e8ec997cef8bc66819c7e0ad7a54182f7aff2a", + "size": 81034 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.2.2": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "sha1": "e6dba9ab8532cb6aac273adf26496ce689999943", + "size": 146829 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.2.2:natives": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "4881a965c7679b4984c0d8a5890f07ea85c653c4", + "size": 101847 + } + } + }, + "org.lwjgl:lwjgl-stb:3.2.2": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "sha1": "033fe42d1b37e35afd8b6e2653abc77deadb0730", + "size": 143099 + } + } + }, + "org.lwjgl:lwjgl-stb:3.2.2:natives": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "0aad82a857ebb9a3a212dc2c386761d57e11a8f2", + "size": 225735 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.2.2": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "sha1": "8b7c94a57f56a5b38b23c02c1cada77dccba9930", + "size": 15917 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.2.2:natives": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "124d0e48ae1584f09e5701588ae8ad139be26003", + "size": 39077 + } + } + }, + "org.lwjgl:lwjgl:3.3.1": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "sha1": "7202012cf0cadb9ffad4874494920fd8bbd93413", + "size": 792204 + } + } + }, + "org.lwjgl:lwjgl:3.3.1:natives-linux": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "2d38355b453edfe2daee1a567bcdb82c0485edcf", + "size": 95872 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.3.1": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "sha1": "41256f2c098806304fd224613d3d01b02725470e", + "size": 46421 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.3.1:natives-linux": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "bdba1662b621228679c7aed87945d1f28c590d5b", + "size": 155867 + } + } + }, + "org.lwjgl:lwjgl-openal:3.3.1": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "sha1": "89d8868c2d688b55e3e923345e4a146c6d034229", + "size": 113094 + } + } + }, + "org.lwjgl:lwjgl-openal:3.3.1:natives-linux": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "0fc6495e6752727b629cf03a105c9d56087d4edd", + "size": 597512 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.3.1": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "sha1": "81d0a7fd96bf5eb6257fddf6b77e338d8918bf32", + "size": 931744 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.3.1:natives-linux": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "d3e8ec997cef8bc66819c7e0ad7a54182f7aff2a", + "size": 81034 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.3.1": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "sha1": "e6dba9ab8532cb6aac273adf26496ce689999943", + "size": 146829 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.3.1:natives-linux": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "4881a965c7679b4984c0d8a5890f07ea85c653c4", + "size": 101847 + } + } + }, + "org.lwjgl:lwjgl-stb:3.3.1": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "sha1": "033fe42d1b37e35afd8b6e2653abc77deadb0730", + "size": 143099 + } + } + }, + "org.lwjgl:lwjgl-stb:3.3.1:natives-linux": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "0aad82a857ebb9a3a212dc2c386761d57e11a8f2", + "size": 225735 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.3.1": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "sha1": "8b7c94a57f56a5b38b23c02c1cada77dccba9930", + "size": 15917 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.3.1:natives-linux": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "124d0e48ae1584f09e5701588ae8ad139be26003", + "size": 39077 + } + } + }, + "org.lwjgl:lwjgl:3.3.2": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4.jar", + "sha1": "7202012cf0cadb9ffad4874494920fd8bbd93413", + "size": 792204 + } + } + }, + "org.lwjgl:lwjgl:3.3.2:natives-linux": { + "name": "org.lwjgl:lwjgl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl/3.3.4-SNAPSHOT/lwjgl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "2d38355b453edfe2daee1a567bcdb82c0485edcf", + "size": 95872 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.3.2": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4.jar", + "sha1": "41256f2c098806304fd224613d3d01b02725470e", + "size": 46421 + } + } + }, + "org.lwjgl:lwjgl-jemalloc:3.3.2:natives-linux": { + "name": "org.lwjgl:lwjgl-jemalloc:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-jemalloc/3.3.4-SNAPSHOT/lwjgl-jemalloc-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "bdba1662b621228679c7aed87945d1f28c590d5b", + "size": 155867 + } + } + }, + "org.lwjgl:lwjgl-openal:3.3.2": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4.jar", + "sha1": "89d8868c2d688b55e3e923345e4a146c6d034229", + "size": 113094 + } + } + }, + "org.lwjgl:lwjgl-openal:3.3.2:natives-linux": { + "name": "org.lwjgl:lwjgl-openal:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-openal/3.3.4-SNAPSHOT/lwjgl-openal-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "0fc6495e6752727b629cf03a105c9d56087d4edd", + "size": 597512 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.3.2": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4.jar", + "sha1": "81d0a7fd96bf5eb6257fddf6b77e338d8918bf32", + "size": 931744 + } + } + }, + "org.lwjgl:lwjgl-opengl:3.3.2:natives-linux": { + "name": "org.lwjgl:lwjgl-opengl:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-opengl/3.3.4-SNAPSHOT/lwjgl-opengl-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "d3e8ec997cef8bc66819c7e0ad7a54182f7aff2a", + "size": 81034 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.3.2": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4.jar", + "sha1": "e6dba9ab8532cb6aac273adf26496ce689999943", + "size": 146829 + } + } + }, + "org.lwjgl:lwjgl-glfw:3.3.2:natives-linux": { + "name": "org.lwjgl:lwjgl-glfw:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-glfw/3.3.4-SNAPSHOT/lwjgl-glfw-3.3.4-20231218.151521-4-natives-freebsd.jar", + "sha1": "4881a965c7679b4984c0d8a5890f07ea85c653c4", + "size": 101847 + } + } + }, + "org.lwjgl:lwjgl-stb:3.3.2": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3.jar", + "sha1": "033fe42d1b37e35afd8b6e2653abc77deadb0730", + "size": 143099 + } + } + }, + "org.lwjgl:lwjgl-stb:3.3.2:natives-linux": { + "name": "org.lwjgl:lwjgl-stb:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-stb/3.3.4-SNAPSHOT/lwjgl-stb-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "0aad82a857ebb9a3a212dc2c386761d57e11a8f2", + "size": 225735 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.3.2": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3.jar", + "sha1": "8b7c94a57f56a5b38b23c02c1cada77dccba9930", + "size": 15917 + } + } + }, + "org.lwjgl:lwjgl-tinyfd:3.3.2:natives-linux": { + "name": "org.lwjgl:lwjgl-tinyfd:3.3.4-SNAPSHOT:natives-freebsd", + "downloads": { + "artifact": { + "path": "org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "url": "https://oss.sonatype.org/content/repositories/snapshots/org/lwjgl/lwjgl-tinyfd/3.3.4-SNAPSHOT/lwjgl-tinyfd-3.3.4-20231218.151521-3-natives-freebsd.jar", + "sha1": "124d0e48ae1584f09e5701588ae8ad139be26003", + "size": 39077 + } + } + }, + "net.java.jinput:jinput-platform:2.0.5:natives": null, + "com.mojang:text2speech:1.10.3:natives": null, + "com.mojang:text2speech:1.11.3:natives": null, + "com.mojang:text2speech:1.12.4:natives": null, + "com.mojang:text2speech:1.13.9:natives-linux": null } } \ No newline at end of file diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java index 0601fa09c..e121960f1 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java @@ -57,6 +57,7 @@ public final class JavaRepository { Optional.ofNullable(System.getenv("ProgramFiles(x86)")).orElse("C:\\Program Files (x86)"), "Minecraft Launcher\\runtime")); case LINUX: + case FREEBSD: return Stream.of(FileUtils.tryGetPath(System.getProperty("user.home", ".minecraft/runtime"))); case OSX: return Stream.of(FileUtils.tryGetPath(System.getProperty("user.home"), "Library/Application Support/minecraft/runtime")); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java index 2df91cb54..f2a5ae399 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/OSRestriction.java @@ -64,7 +64,8 @@ public final class OSRestriction { } public boolean allow() { - if (name != OperatingSystem.UNKNOWN && name != OperatingSystem.CURRENT_OS) + if (name != OperatingSystem.UNKNOWN && name != OperatingSystem.CURRENT_OS + && !(name == OperatingSystem.LINUX && OperatingSystem.CURRENT_OS.isLinuxOrBSD())) return false; if (version != null) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 0a618b77a..50756a321 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -70,14 +70,14 @@ public class DefaultLauncher extends Launcher { case HIGH: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // res.add("cmd", "/C", "start", "unused title", "/B", "/high"); - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + } else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { res.add("nice", "-n", "-5"); } break; case ABOVE_NORMAL: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // res.add("cmd", "/C", "start", "unused title", "/B", "/abovenormal"); - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + } else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { res.add("nice", "-n", "-1"); } break; @@ -87,14 +87,14 @@ public class DefaultLauncher extends Launcher { case BELOW_NORMAL: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // res.add("cmd", "/C", "start", "unused title", "/B", "/belownormal"); - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + } else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { res.add("nice", "-n", "1"); } break; case LOW: if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { // res.add("cmd", "/C", "start", "unused title", "/B", "/low"); - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + } else if (OperatingSystem.CURRENT_OS.isLinuxOrBSD() || OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { res.add("nice", "-n", "5"); } break; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/ExitWaiter.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/ExitWaiter.java index 2d355c4c0..1c0bade68 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/ExitWaiter.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/ExitWaiter.java @@ -72,7 +72,7 @@ final class ExitWaiter implements Runnable { } else if (exitCode != 0 || StringUtils.containsOne(errorLines, "Unable to launch")) { EventBus.EVENT_BUS.fireEvent(new ProcessExitedAbnormallyEvent(this, process)); - if (exitCode == 137 && OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + if (exitCode == 137 && OperatingSystem.CURRENT_OS.isLinuxOrBSD()) { exitType = ProcessListener.ExitType.SIGKILL; } else { exitType = ProcessListener.ExitType.APPLICATION_ERROR; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java index 503f491b5..eec4df7a3 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java @@ -326,6 +326,7 @@ public final class JavaVersion { break; case LINUX: + case FREEBSD: javaExecutables.add(listDirectory(Paths.get("/usr/java")).map(JavaVersion::getExecutable)); // Oracle RPMs javaExecutables.add(listDirectory(Paths.get("/usr/lib/jvm")).map(JavaVersion::getExecutable)); // General locations javaExecutables.add(listDirectory(Paths.get("/usr/lib32/jvm")).map(JavaVersion::getExecutable)); // General locations diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java index 29dcb038f..d2a3fd537 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/ManagedProcess.java @@ -100,7 +100,7 @@ public class ManagedProcess { // However, this method is supplied since Java 9. // So, there is no ways to get the pid. throw new UnsupportedOperationException("Cannot get the pid of a Process on Java 8 on Windows."); - } else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX || OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX || OperatingSystem.CURRENT_OS.isLinuxOrBSD()) { // On Linux or Mac, we can get field UnixProcess.pid field to get the pid. // All the Java version is accepted. // See https://github.com/openjdk/jdk/blob/jdk8-b120/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java index 8990840b1..271a0faf2 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java @@ -51,6 +51,10 @@ public enum OperatingSystem { * Mac OS X. */ OSX("osx"), + /** + * FreeBSD. + */ + FREEBSD("freebsd"), /** * Unknown operating system. */ @@ -66,6 +70,10 @@ public enum OperatingSystem { return checkedName; } + public boolean isLinuxOrBSD() { + return this == LINUX || this == FREEBSD; + } + /** * The current operating system. */ @@ -213,6 +221,8 @@ public enum OperatingSystem { return OSX; else if (name.contains("solaris") || name.contains("linux") || name.contains("unix") || name.contains("sunos")) return LINUX; + else if (name.equals("freebsd")) + return FREEBSD; else return UNKNOWN; } @@ -273,6 +283,7 @@ public enum OperatingSystem { String home = System.getProperty("user.home", "."); switch (OperatingSystem.CURRENT_OS) { case LINUX: + case FREEBSD: return Paths.get(home, "." + folder).toAbsolutePath(); case WINDOWS: String appdata = System.getenv("APPDATA"); diff --git a/PLATFORM.md b/PLATFORM.md index 157035d87..c54f557c1 100644 --- a/PLATFORM.md +++ b/PLATFORM.md @@ -2,17 +2,17 @@ English | [简体中文](PLATFORM_cn.md) -| | Windows | Linux | Mac OS | FreeBSD | -|----------------------------|:----------------------------------------------|:--------------------------|:------------------------------------------------------------------------|:--------| -| x86-64 | ✅️ | ✅️ | ✅️ | ❔ | -| x86 | ✅️ | ✅️ | / | / | -| ARM64 | 👌 (Minecraft 1.8+)
✅ (use x86 emulation) | 👌 | 👌 (Minecraft 1.6~1.18.2)
✅ (Minecraft 1.19+)
✅ (use Rosetta 2) | ❔ | -| ARM32 | /️ | 👌 | / | / | -| MIPS64el | / | 👌 | / | / | -| RISC-V 64 | / | 👌 (Minecraft 1.13+) | / | / | -| LoongArch64 | / | 👌 (both old and new ABI) | / | / | -| PowerPC-64 (Little-Endian) | / | ❔ | / | / | -| S390x | / | ❔ | / | / | +| | Windows | Linux | Mac OS | FreeBSD | +|----------------------------|:----------------------------------------------|:--------------------------|:------------------------------------------------------------------------|:--------------------| +| x86-64 | ✅️ | ✅️ | ✅️ | 👌(Minecraft 1.13+) | +| x86 | ✅️ | ✅️ | / | / | +| ARM64 | 👌 (Minecraft 1.8+)
✅ (use x86 emulation) | 👌 | 👌 (Minecraft 1.6~1.18.2)
✅ (Minecraft 1.19+)
✅ (use Rosetta 2) | ❔ | +| ARM32 | /️ | 👌 | / | / | +| MIPS64el | / | 👌 | / | / | +| RISC-V 64 | / | 👌 (Minecraft 1.13+) | / | / | +| LoongArch64 | / | 👌 (both old and new ABI) | / | / | +| PowerPC-64 (Little-Endian) | / | ❔ | / | / | +| S390x | / | ❔ | / | / | Legend: diff --git a/PLATFORM_cn.md b/PLATFORM_cn.md index ff0861f74..0385f0e25 100644 --- a/PLATFORM_cn.md +++ b/PLATFORM_cn.md @@ -2,17 +2,17 @@ [English](PLATFORM.md) | 简体中文 -| | Windows | Linux | Mac OS | FreeBSD | -|------------------|:--------------------------------------|:---------------------|:-----------------------------------------------------------------------|:--------| -| x86-64 | ✅️ | ✅️ | ✅️ | ❔ | -| x86 | ✅️ | ✅️ | / | / | -| ARM64 | 👌 (Minecraft 1.8+)
✅ (使用 x86 模拟) | 👌 | 👌 (Minecraft 1.6~1.18.2)
✅ (Minecraft 1.19+)
✅ (使用 Rosetta 2) | ❔ | -| ARM32 | /️ | 👌 | / | / | -| MIPS64el | / | 👌 | / | / | -| RISC-V 64 | / | 👌 (Minecraft 1.13+) | / | / | -| LoongArch64 | / | 👌 (包括新旧 ABI) | / | / | -| PowerPC-64 (小端序) | / | ❔ | / | / | -| S390x | / | ❔ | / | / | +| | Windows | Linux | Mac OS | FreeBSD | +|------------------|:--------------------------------------|:---------------------|:-----------------------------------------------------------------------|:--------------------| +| x86-64 | ✅️ | ✅️ | ✅️ | 👌(Minecraft 1.13+) | +| x86 | ✅️ | ✅️ | / | / | +| ARM64 | 👌 (Minecraft 1.8+)
✅ (使用 x86 模拟) | 👌 | 👌 (Minecraft 1.6~1.18.2)
✅ (Minecraft 1.19+)
✅ (使用 Rosetta 2) | ❔ | +| ARM32 | /️ | 👌 | / | / | +| MIPS64el | / | 👌 | / | / | +| RISC-V 64 | / | 👌 (Minecraft 1.13+) | / | / | +| LoongArch64 | / | 👌 (包括新旧 ABI) | / | / | +| PowerPC-64 (小端序) | / | ❔ | / | / | +| S390x | / | ❔ | / | / | 图例: diff --git a/javafx.gradle.kts b/javafx.gradle.kts index 64e748d9f..cf386562b 100644 --- a/javafx.gradle.kts +++ b/javafx.gradle.kts @@ -43,6 +43,7 @@ val jfxPlatforms = listOf( Platform("linux-loongarch64", "linux", groupId = "org.glavo.hmcl.openjfx", version = "17.0.8-loongarch64"), Platform("linux-loongarch64_ow", "linux", groupId = "org.glavo.hmcl.openjfx", version = "19-ea+10-loongson64", unsupportedModules = listOf("media", "web")), Platform("linux-riscv64", "linux", groupId = "org.glavo.hmcl.openjfx", version = "19.0.2.1-riscv64", unsupportedModules = listOf("media", "web")), + Platform("freebsd-x86_64", "freebsd", groupId = "org.glavo.hmcl.openjfx", version = "14.0.2.1-freebsd", unsupportedModules = listOf("media", "web")), ) val jfxInClasspath = @@ -59,6 +60,7 @@ if (!jfxInClasspath && JavaVersion.current() >= JavaVersion.VERSION_11) { osName.contains("win") -> "windows" osName.contains("mac") -> "osx" osName.contains("linux") || osName.contains("unix") -> "linux" + osName.contains("freebsd") -> "freebsd" else -> null } }