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); diff --git a/forge-gui-desktop/src/main/config/forge.sh b/forge-gui-desktop/src/main/config/forge.sh index 1e3165f2ed0..3edf69ceec2 100644 --- a/forge-gui-desktop/src/main/config/forge.sh +++ b/forge-gui-desktop/src/main/config/forge.sh @@ -1,3 +1,52 @@ -#!/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)" + +SHAREDPARAMS='-Xmx4096m -Dfile.encoding=UTF-8 -jar $project.build.finalName$' 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 $SHAREDPARAMS +elif [[ $v -ge 11 ]] +then + java --illegal-access=permit $SHAREDPARAMS +else + java $SHAREDPARAMS +fi