From 6b94871b7823a549efed55647816a0af771cbffe Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Sat, 16 Oct 2021 18:29:18 +0300 Subject: [PATCH 1/3] - A Linux script that tries to detect the Java version and run the game in a way specific to the given version. Seems to work with OpenJDK. --- forge-gui-desktop/src/main/config/forge.sh | 52 +++++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/forge-gui-desktop/src/main/config/forge.sh b/forge-gui-desktop/src/main/config/forge.sh index 1e3165f2ed0..ee90b3109a8 100644 --- a/forge-gui-desktop/src/main/config/forge.sh +++ b/forge-gui-desktop/src/main/config/forge.sh @@ -1,3 +1,51 @@ -#!/bin/sh +#!/bin/bash + +# returns the JDK version. +# 8 for 1.8.0_nn, 9 for 9-ea etc, and "no_java" for undetected +# Based on the code from this source: https://eed3si9n.com/detecting-java-version-bash +jdk_version() { + local result + local java_cmd + if [[ -n $(type -p java) ]] + then + java_cmd=java + elif [[ (-n "$JAVA_HOME") && (-x "$JAVA_HOME/bin/java") ]] + then + java_cmd="$JAVA_HOME/bin/java" + fi + local IFS=$'\n' + # remove \r for Cygwin + local lines=$("$java_cmd" -Xms32M -Xmx32M -version 2>&1 | tr '\r' '\n') + if [[ -z $java_cmd ]] + then + result=no_java + else + for line in $lines; do + if [[ (-z $result) && ($line = *"version \""*) ]] + then + local ver=$(echo $line | sed -e 's/.*version "\(.*\)"\(.*\)/\1/; 1q') + # on macOS, sed doesn't support '?' + if [[ $ver = "1."* ]] + then + result=$(echo $ver | sed -e 's/1\.\([0-9]*\)\(.*\)/\1/; 1q') + else + result=$(echo $ver | sed -e 's/\([0-9]*\)\(.*\)/\1/; 1q') + fi + fi + done + fi + echo "$result" +} +v="$(jdk_version)" + cd $(dirname "${0}") -java -Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$ + +if [[ $v -ge 17 ]] +then + java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED -Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$ +elif [[ $v -ge 11 ]] +then + java --illegal-access=permit -Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$ +else + java -Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$ +fi From 445d655dd356fc3fbe046a4e308fbbe5f15805c2 Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Tue, 19 Oct 2021 19:35:35 +0300 Subject: [PATCH 2/3] - Consolidate shared parameters in a variable. --- forge-gui-desktop/src/main/config/forge.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-gui-desktop/src/main/config/forge.sh b/forge-gui-desktop/src/main/config/forge.sh index ee90b3109a8..f196096178e 100644 --- a/forge-gui-desktop/src/main/config/forge.sh +++ b/forge-gui-desktop/src/main/config/forge.sh @@ -38,14 +38,15 @@ jdk_version() { } v="$(jdk_version)" +SHAREDPARAMS='-Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$' cd $(dirname "${0}") if [[ $v -ge 17 ]] then - java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED -Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$ + java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED $SHAREDPARAMS elif [[ $v -ge 11 ]] then - java --illegal-access=permit -Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$ + java --illegal-access=permit -Xmx4096m -Dfile.encoding=UTF-8 -jar $SHAREDPARAMS else - java -Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$ + java -Xmx4096m -Dfile.encoding=UTF-8 -jar $SHAREDPARAMS fi From 48f894b1ae394afb1010bc16b366ec0a2eba81fc Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Wed, 20 Oct 2021 07:09:00 +0300 Subject: [PATCH 3/3] - Fix shared params lines. --- forge-gui-desktop/src/main/config/forge.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-gui-desktop/src/main/config/forge.sh b/forge-gui-desktop/src/main/config/forge.sh index f196096178e..3edf69ceec2 100644 --- a/forge-gui-desktop/src/main/config/forge.sh +++ b/forge-gui-desktop/src/main/config/forge.sh @@ -46,7 +46,7 @@ then java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED $SHAREDPARAMS elif [[ $v -ge 11 ]] then - java --illegal-access=permit -Xmx4096m -Dfile.encoding=UTF-8 -jar $SHAREDPARAMS + java --illegal-access=permit $SHAREDPARAMS else - java -Xmx4096m -Dfile.encoding=UTF-8 -jar $SHAREDPARAMS + java $SHAREDPARAMS fi