diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java index 05a410dd3a6..14ffb4b12e9 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java @@ -254,7 +254,7 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ { } else if (stepFinished) { logger.debug("Step finished"); int testScore = GameStateEvaluator2.evaluate(playerId, game); - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { if (testScore < currentScore) { // if score at end of step is worse than original score don't check further //logger.debug("Add Action -- abandoning check, no immediate benefit"); diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java index a9d0f29657e..628472299c1 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java @@ -54,7 +54,7 @@ public class ComputerPlayer7 extends ComputerPlayer6 { pass(game); return false; case PRECOMBAT_MAIN: - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { printOutState(game); if (actions.isEmpty()) { logger.info("Sim Calculate pre combat actions ----------------------------------------------------- "); diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index e5dd0c6b0ea..8362963995a 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -987,7 +987,7 @@ public class ComputerPlayer extends PlayerImpl implements Player { private boolean priorityPlay(Game game) { UUID opponentId = game.getOpponents(playerId).iterator().next(); - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { if (game.isMainPhase() && game.getStack().isEmpty()) { playLand(game); } diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java index 53b6533a58f..257d3adb828 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/src/mage/player/ai/ComputerPlayerMCTS.java @@ -348,7 +348,7 @@ public class ComputerPlayerMCTS extends ComputerPlayer implements Player { thinkTime = maxThinkTime / 2; } } - else if (game.getActivePlayerId().equals(playerId) && (curStep == PhaseStep.PRECOMBAT_MAIN || curStep == PhaseStep.POSTCOMBAT_MAIN) && game.getStack().isEmpty()) { + else if (game.isActivePlayer(playerId) && (curStep == PhaseStep.PRECOMBAT_MAIN || curStep == PhaseStep.POSTCOMBAT_MAIN) && game.getStack().isEmpty()) { if (nodeSizeRatio < THINK_MIN_RATIO) { thinkTime = maxThinkTime; } diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java index 52ceb958dba..28e8f8e0125 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java @@ -50,7 +50,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { pass(game); return false; case PRECOMBAT_MAIN: - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { if (actions.isEmpty()) { calculatePreCombatActions(game); } @@ -64,7 +64,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { pass(game); return false; case DECLARE_ATTACKERS: - if (!game.getActivePlayerId().equals(playerId)) { + if (!game.isActivePlayer(playerId)) { if (actions.isEmpty()) { calculatePreCombatActions(game); } @@ -81,7 +81,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { pass(game); return false; case POSTCOMBAT_MAIN: - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { if (actions.isEmpty()) { calculatePostCombatActions(game); } @@ -184,7 +184,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { else if (stepFinished) { logger.debug(indent(node.depth) + "step finished"); int testScore = GameStateEvaluator.evaluate(playerId, game); - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { if (testScore < currentScore) { // if score at end of step is worse than original score don't check further logger.debug(indent(node.depth) + "simulating -- abandoning check, no immediate benefit"); diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index ab2848376dc..09cdb8e02a8 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -1943,7 +1943,7 @@ public class HumanPlayer extends PlayerImpl { if (userData.confirmEmptyManaPool() && game.getStack().isEmpty() && getManaPool().count() > 0) { String activePlayerText; - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { activePlayerText = "Your turn"; } else { activePlayerText = game.getPlayer(game.getActivePlayerId()).getName() + "'s turn"; diff --git a/Mage.Server/src/main/java/mage/server/tournament/TournamentFactory.java b/Mage.Server/src/main/java/mage/server/tournament/TournamentFactory.java index 135bcac1ee7..12bf551a7b2 100644 --- a/Mage.Server/src/main/java/mage/server/tournament/TournamentFactory.java +++ b/Mage.Server/src/main/java/mage/server/tournament/TournamentFactory.java @@ -40,7 +40,7 @@ public enum TournamentFactory { Map setInfo = new LinkedHashMap<>(); for (String setCode: options.getLimitedOptions().getSetCodes()) { tournament.getSets().add(Sets.findSet(setCode)); - int count = setInfo.containsKey(setCode) ? setInfo.get(setCode) : 0; + int count = setInfo.getOrDefault(setCode, 0); setInfo.put(setCode, count + 1); } tournament.getOptions().getLimitedOptions().setNumberBoosters(tournament.getTournamentType().getNumBoosters()); diff --git a/Mage.Sets/src/mage/cards/e/ElkinBottle.java b/Mage.Sets/src/mage/cards/e/ElkinBottle.java index 972c8ca29f5..48a6a10b1d0 100644 --- a/Mage.Sets/src/mage/cards/e/ElkinBottle.java +++ b/Mage.Sets/src/mage/cards/e/ElkinBottle.java @@ -97,7 +97,7 @@ class ElkinBottleCastFromExileEffect extends AsThoughEffectImpl { @Override public boolean isInactive(Ability source, Game game) { if (game.getPhase().getStep().getType() == PhaseStep.UPKEEP) { - if (!sameStep && game.getActivePlayerId().equals(source.getControllerId()) || game.getPlayer(source.getControllerId()).hasReachedNextTurnAfterLeaving()) { + if (!sameStep && game.isActivePlayer(source.getControllerId()) || game.getPlayer(source.getControllerId()).hasReachedNextTurnAfterLeaving()) { return true; } } else { diff --git a/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java b/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java index e0562104d32..96cd3c87fbe 100644 --- a/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java +++ b/Mage.Sets/src/mage/cards/w/WellOfKnowledge.java @@ -66,7 +66,7 @@ class WellOfKnowledgeConditionalActivatedAbility extends ActivatedAbilityImpl { public ActivationStatus canActivate(UUID playerId, Game game) { if (condition.apply(game, this) && costs.canPay(this, sourceId, playerId, game) - && game.getActivePlayerId().equals(playerId)) { + && game.isActivePlayer(playerId)) { this.activatorId = playerId; return ActivationStatus.getTrue(); } diff --git a/Mage/src/main/java/mage/abilities/PlayLandAbility.java b/Mage/src/main/java/mage/abilities/PlayLandAbility.java index 928882f8229..939f28e328e 100644 --- a/Mage/src/main/java/mage/abilities/PlayLandAbility.java +++ b/Mage/src/main/java/mage/abilities/PlayLandAbility.java @@ -31,7 +31,7 @@ public class PlayLandAbility extends ActivatedAbilityImpl { return ActivationStatus.getFalse(); } //20091005 - 114.2a - return new ActivationStatus(game.getActivePlayerId().equals(playerId) && game.getPlayer(playerId).canPlayLand() && game.canPlaySorcery(playerId), permittingObject); + return new ActivationStatus(game.isActivePlayer(playerId) && game.getPlayer(playerId).canPlayLand() && game.canPlaySorcery(playerId), permittingObject); } @Override diff --git a/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java b/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java index 9480384322f..377fbcb8ee0 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/HideawayPlayEffect.java @@ -51,7 +51,7 @@ public class HideawayPlayEffect extends OneShotEffect { */ if (card.isLand()) { UUID playerId = controller.getId(); - if (!game.getActivePlayerId().equals(playerId) || !game.getPlayer(playerId).canPlayLand()) { + if (!game.isActivePlayer(playerId) || !game.getPlayer(playerId).canPlayLand()) { return false; } } diff --git a/Mage/src/main/java/mage/abilities/mana/ManaOptions.java b/Mage/src/main/java/mage/abilities/mana/ManaOptions.java index 81792fc8c9a..bfd32e47478 100644 --- a/Mage/src/main/java/mage/abilities/mana/ManaOptions.java +++ b/Mage/src/main/java/mage/abilities/mana/ManaOptions.java @@ -154,7 +154,7 @@ public class ManaOptions extends ArrayList { } } } - } else if (abilities.size() > 1) { + } else { //perform a union of all existing options and the new options List copy = copy(); this.clear(); @@ -227,7 +227,7 @@ public class ManaOptions extends ArrayList { if (options.size() == 1) { //if there is only one mana option available add it to all the existing options addMana(options.get(0)); - } else if (options.size() > 1) { + } else { //perform a union of all existing options and the new options List copy = copy(); this.clear(); diff --git a/Mage/src/main/java/mage/game/Game.java b/Mage/src/main/java/mage/game/Game.java index 5ae398beeab..e499bf960b7 100644 --- a/Mage/src/main/java/mage/game/Game.java +++ b/Mage/src/main/java/mage/game/Game.java @@ -3,6 +3,8 @@ package mage.game; import java.io.Serializable; import java.util.*; +import java.util.stream.Collectors; + import mage.MageItem; import mage.MageObject; import mage.abilities.Ability; @@ -119,15 +121,17 @@ public interface Game extends MageItem, Serializable { * @param playerId * @return */ - default public Set getOpponents(UUID playerId) { - Set opponents = new HashSet<>(); + default Set getOpponents(UUID playerId) { Player player = getPlayer(playerId); - for (UUID opponentId : player.getInRange()) { - if (!opponentId.equals(playerId)) { - opponents.add(opponentId); - } - } - return opponents; + return player.getInRange().stream() + .filter(opponentId -> !opponentId.equals(playerId)) + .collect(Collectors.toSet()); + + } + + + default boolean isActivePlayer(UUID playerId){ + return getActivePlayerId().equals(playerId); } /** @@ -141,7 +145,7 @@ public interface Game extends MageItem, Serializable { * @param playerToCheckId * @return */ - default public boolean isOpponent(Player player, UUID playerToCheckId) { + default boolean isOpponent(Player player, UUID playerToCheckId) { return !player.getId().equals(playerToCheckId); } diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 2292c2737b3..51e85962e72 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -2450,7 +2450,7 @@ public abstract class GameImpl implements Game, Serializable { @Override public boolean canPlaySorcery(UUID playerId) { - return isMainPhase() && getActivePlayerId().equals(playerId) && getStack().isEmpty(); + return isMainPhase() && isActivePlayer(playerId) && getStack().isEmpty(); } /** @@ -2594,7 +2594,7 @@ public abstract class GameImpl implements Game, Serializable { // If the current monarch leaves the game. When that happens, the player whose turn it is becomes the monarch. // If the monarch leaves the game on their turn, the next player in turn order becomes the monarch. if (playerId.equals(getMonarchId())) { - if (!getActivePlayerId().equals(playerId)) { + if (!isActivePlayer(playerId)) { setMonarchId(null, getActivePlayerId()); } else { Player nextPlayer = getPlayerList().getNext(this); diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 1266ae494e8..111f48d01fb 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -2956,9 +2956,7 @@ public abstract class PlayerImpl implements Player, Serializable { // Other activated abilities LinkedHashMap useable = new LinkedHashMap<>(); getOtherUseableActivatedAbilities(card, Zone.GRAVEYARD, game, useable); - for (Ability ability : useable.values()) { - playable.add(ability); - } + playable.addAll(useable.values()); } for (ExileZone exile : game.getExile().getExileZones()) { for (Card card : exile.getCards(game)) { diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java index 04db06ff031..331602e3f1f 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java @@ -76,7 +76,7 @@ public class PermanentsEnteredBattlefieldYourLastTurnWatcher extends Watcher { } public List getPermanentsEnteringOnPlayersLastTurn(Game game, UUID playerId) { - if (game.getActivePlayerId().equals(playerId)) { + if (game.isActivePlayer(playerId)) { return enteringBattlefield.get(playerId); } return enteringBattlefieldLastTurn.get(playerId);