From 6b94871b7823a549efed55647816a0af771cbffe Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Sat, 16 Oct 2021 18:29:18 +0300 Subject: [PATCH 1/4] - 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/4] - 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/4] - 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 From f0f6592a383495bb4e0b9f67723dc28790714031 Mon Sep 17 00:00:00 2001 From: TRT <> Date: Mon, 25 Oct 2021 13:56:35 +0200 Subject: [PATCH 4/4] Fix predictToughnessBonusOfAttacker logic --- forge-ai/src/main/java/forge/ai/AiAttackController.java | 2 +- forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index 23f5b9e7b31..94e600d655e 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -208,7 +208,7 @@ public class AiAttackController { */ public final boolean isEffectiveAttacker(final Player ai, final Card attacker, final Combat combat, final GameEntity defender) { // if the attacker will die when attacking don't attack - if ((attacker.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfAttacker(attacker, null, combat, true)) <= 0) { + if (attacker.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfAttacker(attacker, null, combat, true) <= 0) { return false; } diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index a841b338cd3..ab6f76c8477 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -1478,7 +1478,7 @@ public class ComputerUtilCombat { // DealDamage triggers if (ApiType.DealDamage.equals(sa.getApi())) { - if ("TriggeredAttacker".equals(sa.getParam("Defined"))) { + if (!sa.hasParam("Defined") || !sa.getParam("Defined").startsWith("TriggeredAttacker")) { continue; } int damage = AbilityUtils.calculateAmount(source, sa.getParam("NumDmg"), sa);