diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java index d428ad1f658..4d69a16ce86 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java @@ -6,12 +6,7 @@ import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.image.BufferedImage; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; +import java.util.*; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -400,10 +395,10 @@ public class MageActionCallback implements ActionCallback { private void handlePopup(TransferData transferData) { MageCard mageCard = (MageCard) transferData.component; if (!popupTextWindowOpen - || mageCard.getOriginal().getId() != bigCard.getCardId()) { + || !Objects.equals(mageCard.getOriginal().getId(), bigCard.getCardId())) { if (bigCard.getWidth() > 0) { synchronized (MageActionCallback.class) { - if (!popupTextWindowOpen || mageCard.getOriginal().getId() != bigCard.getCardId()) { + if (!popupTextWindowOpen || !Objects.equals(mageCard.getOriginal().getId(), bigCard.getCardId())) { if (!popupTextWindowOpen) { bigCard.resetCardId(); } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java index f78417a845a..5016db5b61c 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java @@ -84,7 +84,7 @@ public class CardDownloadData { if (obj == null) { return false; } - if (getClass() != obj.getClass()) { + if (!getClass().equals(obj.getClass())) { return false; } final CardDownloadData other = (CardDownloadData) obj; diff --git a/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java b/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java index b784adc6cbe..15f8a25737b 100644 --- a/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java +++ b/Mage.Server.Console/src/main/java/mage/server/console/ConnectDialog.java @@ -37,10 +37,8 @@ import java.awt.*; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; +import java.util.*; import java.util.List; -import java.util.Locale; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import javax.swing.*; @@ -84,15 +82,15 @@ public class ConnectDialog extends JDialog { } private void showProxySettings() { - if (cbProxyType.getSelectedItem() == Connection.ProxyType.SOCKS) { + if (Objects.equals(cbProxyType.getSelectedItem(), ProxyType.SOCKS)) { this.pnlProxy.setVisible(true); this.pnlProxyAuth.setVisible(false); this.pnlProxySettings.setVisible(true); - } else if (cbProxyType.getSelectedItem() == Connection.ProxyType.HTTP) { + } else if (Objects.equals(cbProxyType.getSelectedItem(), ProxyType.HTTP)) { this.pnlProxy.setVisible(true); this.pnlProxyAuth.setVisible(true); this.pnlProxySettings.setVisible(true); - } else if (cbProxyType.getSelectedItem() == Connection.ProxyType.NONE) { + } else if (Objects.equals(cbProxyType.getSelectedItem(), ProxyType.NONE)) { this.pnlProxy.setVisible(false); this.pnlProxyAuth.setVisible(false); this.pnlProxySettings.setVisible(false); 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 d3785cfa65a..5d599003ab1 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 @@ -28,17 +28,7 @@ package mage.player.ai; import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Scanner; -import java.util.Set; -import java.util.UUID; +import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -528,7 +518,7 @@ public class ComputerPlayer6 extends ComputerPlayer /*implements Player*/ { do { sim.getPlayer(nextPlayerId).pass(game); nextPlayerId = sim.getPlayerList().getNext(); - } while (nextPlayerId != this.getId()); + } while (!Objects.equals(nextPlayerId, this.getId())); } SimulationNode2 newNode = new SimulationNode2(node, sim, action, depth, currentPlayer.getId()); sim.checkStateAndTriggered(); 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 63f207e8960..fd18966864e 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 @@ -2482,4 +2482,22 @@ public class ComputerPlayer extends PlayerImpl implements Player { } return randomOpponentId; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + Player obj = (Player) o; + if (this.getId() == null || obj.getId() == null) { + return false; + } + + return this.getId().equals(obj.getId()); + } } 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 de2363ce9ce..bd09c81fa1a 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 @@ -823,7 +823,7 @@ public class HumanPlayer extends PlayerImpl { } } } else if (passedUntilStackResolved) { - if (dateLastAddedToStack == game.getStack().getDateLastAdded()) { + if (Objects.equals(dateLastAddedToStack, game.getStack().getDateLastAdded())) { dateLastAddedToStack = game.getStack().getDateLastAdded(); if (passWithManaPoolCheck(game)) { return false; diff --git a/Mage.Sets/src/mage/cards/b/BatheInLight.java b/Mage.Sets/src/mage/cards/b/BatheInLight.java index 15ee51eb881..7317708635e 100644 --- a/Mage.Sets/src/mage/cards/b/BatheInLight.java +++ b/Mage.Sets/src/mage/cards/b/BatheInLight.java @@ -112,7 +112,7 @@ class BatheInLightEffect extends OneShotEffect { game.addEffect(effect, source); ObjectColor color = target.getColor(game); for (Permanent permanent : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getControllerId(), source.getSourceId(), game)) { - if (permanent != target && permanent.getColor(game).shares(color)) { + if (!permanent.getId().equals(target.getId()) && permanent.getColor(game).shares(color)) { game.getState().setValue(permanent.getId() + "_color", colorChoice.getColor()); effect.setTargetPointer(new FixedTarget(permanent, game)); game.addEffect(effect, source); diff --git a/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java b/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java index ff50756639b..0b66aafdaa1 100644 --- a/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java +++ b/Mage.Sets/src/mage/cards/b/BrandOfIllOmen.java @@ -44,6 +44,7 @@ import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.Objects; import java.util.UUID; /** @@ -122,7 +123,7 @@ class BrandOfIllOmenEffect extends ContinuousRuleModifyingEffectImpl { Permanent brand = game.getPermanent(source.getSourceId()); if (brand != null && brand.getAttachedTo() != null) { UUID enchantedController = game.getPermanent(brand.getAttachedTo()).getControllerId(); - if(enchantedController == event.getPlayerId() && game.getObject(event.getSourceId()).isCreature()) { + if(Objects.equals(enchantedController, event.getPlayerId()) && game.getObject(event.getSourceId()).isCreature()) { return true; } } diff --git a/Mage.Sets/src/mage/cards/d/DesperateGambit.java b/Mage.Sets/src/mage/cards/d/DesperateGambit.java index 3dde02e293d..bee7635cb44 100644 --- a/Mage.Sets/src/mage/cards/d/DesperateGambit.java +++ b/Mage.Sets/src/mage/cards/d/DesperateGambit.java @@ -28,6 +28,7 @@ package mage.cards.d; import java.util.HashSet; +import java.util.Objects; import java.util.Set; import java.util.UUID; import mage.MageObject; @@ -158,7 +159,7 @@ class TargetControlledSource extends TargetSource { int count = 0; for (StackObject stackObject: game.getStack()) { if (game.getState().getPlayersInRange(sourceControllerId, game).contains(stackObject.getControllerId()) - && stackObject.getControllerId() == sourceControllerId) { + && Objects.equals(stackObject.getControllerId(), sourceControllerId)) { count++; if (count >= this.minNumberOfTargets) { return true; @@ -166,7 +167,7 @@ class TargetControlledSource extends TargetSource { } } for (Permanent permanent: game.getBattlefield().getActivePermanents(sourceControllerId, game)) { - if (permanent.getControllerId() == sourceControllerId) { + if (Objects.equals(permanent.getControllerId(), sourceControllerId)) { count++; if (count >= this.minNumberOfTargets) { return true; @@ -174,7 +175,7 @@ class TargetControlledSource extends TargetSource { } } for (Player player : game.getPlayers().values()) { - if (player == game.getPlayer(sourceControllerId)) { + if (Objects.equals(player, game.getPlayer(sourceControllerId))) { for (Card card : player.getGraveyard().getCards(game)) { count++; if (count >= this.minNumberOfTargets) { @@ -183,7 +184,7 @@ class TargetControlledSource extends TargetSource { } // 108.4a If anything asks for the controller of a card that doesn’t have one (because it’s not a permanent or spell), use its owner instead. for (Card card : game.getExile().getAllCards(game)) { - if (card.getOwnerId() == sourceControllerId) { + if (Objects.equals(card.getOwnerId(), sourceControllerId)) { count++; if (count >= this.minNumberOfTargets) { return true; @@ -200,23 +201,23 @@ class TargetControlledSource extends TargetSource { Set possibleTargets = new HashSet<>(); for (StackObject stackObject: game.getStack()) { if (game.getState().getPlayersInRange(sourceControllerId, game).contains(stackObject.getControllerId()) - && stackObject.getControllerId() == sourceControllerId) { + && Objects.equals(stackObject.getControllerId(), sourceControllerId)) { possibleTargets.add(stackObject.getId()); } } for (Permanent permanent: game.getBattlefield().getActivePermanents(sourceControllerId, game)) { - if (permanent.getControllerId() == sourceControllerId) { + if (Objects.equals(permanent.getControllerId(), sourceControllerId)) { possibleTargets.add(permanent.getId()); } } for (Player player : game.getPlayers().values()) { - if (player == game.getPlayer(sourceControllerId)) { + if (Objects.equals(player, game.getPlayer(sourceControllerId))) { for (Card card : player.getGraveyard().getCards(game)) { possibleTargets.add(card.getId()); } // 108.4a If anything asks for the controller of a card that doesn’t have one (because it’s not a permanent or spell), use its owner instead. for (Card card : game.getExile().getAllCards(game)) { - if (card.getOwnerId() == sourceControllerId) { + if (Objects.equals(card.getOwnerId(), sourceControllerId)) { possibleTargets.add(card.getId()); } } diff --git a/Mage.Sets/src/mage/cards/e/EyeForAnEye.java b/Mage.Sets/src/mage/cards/e/EyeForAnEye.java index 9c62933fbf9..697dff7b4f0 100644 --- a/Mage.Sets/src/mage/cards/e/EyeForAnEye.java +++ b/Mage.Sets/src/mage/cards/e/EyeForAnEye.java @@ -123,7 +123,7 @@ class EyeForAnEyeEffect extends ReplacementEffectImpl { Player controller = game.getPlayer(source.getControllerId()); DamageEvent damageEvent = (DamageEvent) event; if (controller != null) { - if (controller.getId() == damageEvent.getTargetId() && damageEvent.getSourceId().equals(damageSource.getFirstTarget())) { + if (controller.getId().equals(damageEvent.getTargetId()) && damageEvent.getSourceId().equals(damageSource.getFirstTarget())) { this.discard(); return true; } diff --git a/Mage.Sets/src/mage/cards/g/GreenerPastures.java b/Mage.Sets/src/mage/cards/g/GreenerPastures.java index 83af2758f68..2ae29036f2a 100644 --- a/Mage.Sets/src/mage/cards/g/GreenerPastures.java +++ b/Mage.Sets/src/mage/cards/g/GreenerPastures.java @@ -92,7 +92,7 @@ enum ActivePlayerMostLandsCondition implements Condition { return false; } for (UUID playerId : game.getPlayerList()) { - if (playerId != activePlayer.getId()) { + if (!playerId.equals(activePlayer.getId())) { if (game.getBattlefield().getAllActivePermanents(filter, playerId, game).size() >= landCount) { return false; } diff --git a/Mage.Sets/src/mage/cards/h/HiredGiant.java b/Mage.Sets/src/mage/cards/h/HiredGiant.java index be57e3f3bd9..baefbbb01e6 100644 --- a/Mage.Sets/src/mage/cards/h/HiredGiant.java +++ b/Mage.Sets/src/mage/cards/h/HiredGiant.java @@ -94,7 +94,7 @@ class HiredGiantEffect extends OneShotEffect { if (controller != null) { Set playersThatSearched = new HashSet<>(1); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { - if (playerId != controller.getId()) { + if (!playerId.equals(controller.getId())) { Player player = game.getPlayer(playerId); if (player != null && player.chooseUse(Outcome.PutCreatureInPlay, "Search your library for a land card and put it onto the battlefield?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard()); diff --git a/Mage.Sets/src/mage/cards/i/IceCave.java b/Mage.Sets/src/mage/cards/i/IceCave.java index bcdf7f4d6f5..42594825f93 100644 --- a/Mage.Sets/src/mage/cards/i/IceCave.java +++ b/Mage.Sets/src/mage/cards/i/IceCave.java @@ -95,7 +95,7 @@ class IceCaveEffect extends OneShotEffect { if (spellController != null) { for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) { Player player = game.getPlayer(playerId); - if (player != null && player != spellController) { + if (player != null && !player.equals(spellController)) { cost.clearPaid(); if (cost.canPay(source, source.getSourceId(), player.getId(), game) && player.chooseUse(outcome, "Pay " + cost.getText() + " to counter " + spell.getIdName() + '?', source, game)) { diff --git a/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java b/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java index 9213c61956d..ad9497028f2 100644 --- a/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java +++ b/Mage.Sets/src/mage/cards/k/KazarovSengirPureblood.java @@ -113,7 +113,7 @@ class KazarovSengirPurebloodTriggeredAbility extends TriggeredAbilityImpl { if (permanent == null) { return false; } - if (permanent.getControllerId() == this.getControllerId()) { + if (permanent.getControllerId().equals(this.getControllerId())) { return false; } return true; diff --git a/Mage.Sets/src/mage/cards/m/MairsilThePretender.java b/Mage.Sets/src/mage/cards/m/MairsilThePretender.java index 5d59ec71636..f0e955abb11 100644 --- a/Mage.Sets/src/mage/cards/m/MairsilThePretender.java +++ b/Mage.Sets/src/mage/cards/m/MairsilThePretender.java @@ -27,6 +27,7 @@ */ package mage.cards.m; +import java.util.Objects; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; @@ -165,7 +166,7 @@ class MairsilThePretenderGainAbilitiesEffect extends ContinuousEffectImpl { return false; } for (Card card : game.getExile().getAllCards(game)) { - if (filter.match(card, game) && card.getOwnerId() == perm.getControllerId()) { + if (filter.match(card, game) && Objects.equals(card.getOwnerId(), perm.getControllerId())) { for (Ability ability : card.getAbilities()) { if (ability instanceof ActivatedAbility) { ActivatedAbilityImpl copyAbility = (ActivatedAbilityImpl) ability.copy(); diff --git a/Mage.Sets/src/mage/cards/m/MirrorStrike.java b/Mage.Sets/src/mage/cards/m/MirrorStrike.java index 5d9e5191041..9292fbd1827 100644 --- a/Mage.Sets/src/mage/cards/m/MirrorStrike.java +++ b/Mage.Sets/src/mage/cards/m/MirrorStrike.java @@ -27,6 +27,7 @@ */ package mage.cards.m; +import java.util.Objects; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.ReplacementEffectImpl; @@ -124,7 +125,9 @@ class MirrorStrikeEffect extends ReplacementEffectImpl { DamageEvent damageEvent = (DamageEvent) event; Permanent targetPermanent = game.getPermanent(source.getFirstTarget()); if (controller != null && targetPermanent != null) { - return (damageEvent.isCombatDamage() && controller.getId() == damageEvent.getTargetId() && targetPermanent.getId() == damageEvent.getSourceId()); + return (damageEvent.isCombatDamage() + && Objects.equals(controller.getId(), damageEvent.getTargetId()) + && Objects.equals(targetPermanent.getId(), damageEvent.getSourceId())); } return false; } diff --git a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java index 2edd62e9a1a..cade2aa34f9 100644 --- a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java +++ b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java @@ -112,7 +112,7 @@ class MyrBattlesphereTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { Permanent source = game.getPermanent(event.getSourceId()); - if (source != null && source.getId() == this.getSourceId()) { + if (source != null && source.getId().equals(this.getSourceId())) { UUID defenderId = game.getCombat().getDefenderId(event.getSourceId()); this.getEffects().get(0).setTargetPointer(new FixedTarget(defenderId)); return true; diff --git a/Mage.Sets/src/mage/cards/r/RagingRiver.java b/Mage.Sets/src/mage/cards/r/RagingRiver.java index f578960b3ae..0357c35e028 100644 --- a/Mage.Sets/src/mage/cards/r/RagingRiver.java +++ b/Mage.Sets/src/mage/cards/r/RagingRiver.java @@ -54,6 +54,7 @@ import mage.target.targetpointer.FixedTarget; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; @@ -141,7 +142,7 @@ class RagingRiverEffect extends OneShotEffect { for (UUID attackers : game.getCombat().getAttackers()) { Permanent attacker = game.getPermanent(attackers); - if (attacker != null && attacker.getControllerId() == controller.getId()) { + if (attacker != null && Objects.equals(attacker.getControllerId(), controller.getId())) { CombatGroup combatGroup = game.getCombat().findGroup(attacker.getId()); if (combatGroup != null) { FilterCreaturePermanent filter = new FilterCreaturePermanent(); diff --git a/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java b/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java index 09c803e2250..187b5212f63 100644 --- a/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java +++ b/Mage.Sets/src/mage/cards/s/ScarwoodBandits.java @@ -143,7 +143,7 @@ class DoUnlessAnyOpponentPaysEffect extends OneShotEffect { // check if any opponent is willing to pay for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); - if (player != null && player != controller && cost.canPay(source, source.getSourceId(), player.getId(), game) && player.chooseUse(Outcome.Detriment, message, source, game)) { + if (player != null && !player.equals(controller) && cost.canPay(source, source.getSourceId(), player.getId(), game) && player.chooseUse(Outcome.Detriment, message, source, game)) { cost.clearPaid(); if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) { if (!game.isSimulation()) { diff --git a/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java b/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java index e2bc1e7c4f6..b65c850553b 100644 --- a/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java +++ b/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java @@ -153,7 +153,7 @@ class CouldAttackThisTurnWatcher extends Watcher { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(activePlayer.getId())) { if (permanent.isCreature()) { for (UUID defender : game.getCombat().getDefenders()) { - if (defender != activePlayer.getId()) { + if (!defender.equals(activePlayer.getId())) { if (permanent.canAttack(defender, game)) { // exclude Propaganda style effects if (!game.getContinuousEffects().checkIfThereArePayCostToAttackBlockEffects( diff --git a/Mage.Sets/src/mage/cards/s/SivvisValor.java b/Mage.Sets/src/mage/cards/s/SivvisValor.java index c63a2b21f14..11f98de471f 100644 --- a/Mage.Sets/src/mage/cards/s/SivvisValor.java +++ b/Mage.Sets/src/mage/cards/s/SivvisValor.java @@ -133,7 +133,7 @@ class SivvisValorEffect extends ReplacementEffectImpl { DamageEvent damageEvent = (DamageEvent) event; Permanent targetPermanent = game.getPermanent(source.getFirstTarget()); if (controller != null && targetPermanent != null) { - return targetPermanent.getId() == damageEvent.getTargetId(); + return targetPermanent.getId().equals(damageEvent.getTargetId()); } return false; } diff --git a/Mage.Sets/src/mage/cards/s/SkySwallower.java b/Mage.Sets/src/mage/cards/s/SkySwallower.java index 0044c72585d..43c5758a8c7 100644 --- a/Mage.Sets/src/mage/cards/s/SkySwallower.java +++ b/Mage.Sets/src/mage/cards/s/SkySwallower.java @@ -96,7 +96,7 @@ class GainControlAllPermanentsEffect extends ContinuousEffectImpl { Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null && targetPlayer.isInGame()) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) { - if (permanent != null && permanent.getId() != source.getSourceId()) { + if (permanent != null && !permanent.getId().equals(source.getSourceId())) { permanent.changeControllerId(targetPlayer.getId(), game); } } diff --git a/Mage.Sets/src/mage/cards/s/SpiritualFocus.java b/Mage.Sets/src/mage/cards/s/SpiritualFocus.java index 5e14d68ba20..33ec0a0d01f 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritualFocus.java +++ b/Mage.Sets/src/mage/cards/s/SpiritualFocus.java @@ -27,6 +27,7 @@ */ package mage.cards.s; +import java.util.Objects; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; @@ -95,7 +96,7 @@ class SpiritualFocusTriggeredAbility extends TriggeredAbilityImpl { if (game.getOpponents(this.getControllerId()).contains(stackObject.getControllerId())) { Permanent permanent = game.getPermanent(getSourceId()); if (permanent != null) { - if (permanent.getControllerId() == event.getPlayerId()) { + if (Objects.equals(permanent.getControllerId(), event.getPlayerId())) { return true; } } diff --git a/Mage.Sets/src/mage/cards/t/TalonOfPain.java b/Mage.Sets/src/mage/cards/t/TalonOfPain.java index b4c1df248e1..ddba456b3a4 100644 --- a/Mage.Sets/src/mage/cards/t/TalonOfPain.java +++ b/Mage.Sets/src/mage/cards/t/TalonOfPain.java @@ -117,7 +117,7 @@ public class TalonOfPain extends CardImpl { UUID sourceControllerId = game.getControllerId(event.getSourceId()); if (sourceControllerId != null && sourceControllerId.equals(this.getControllerId()) - && this.getSourceId() != event.getSourceId()) { + && !this.getSourceId().equals(event.getSourceId())) { // return true so the effect will fire and a charge counter will be added return true; } diff --git a/Mage.Sets/src/mage/cards/t/TidalFlats.java b/Mage.Sets/src/mage/cards/t/TidalFlats.java index d33db8fa398..60d0f3cc779 100644 --- a/Mage.Sets/src/mage/cards/t/TidalFlats.java +++ b/Mage.Sets/src/mage/cards/t/TidalFlats.java @@ -29,6 +29,7 @@ package mage.cards.t; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -128,7 +129,7 @@ class TidalFlatsEffect extends OneShotEffect { if (group != null) { for (UUID blockerId : group.getBlockers()) { Permanent blocker = game.getPermanent(blockerId); - if (blocker != null && blocker.getControllerId() == controller.getId()) { + if (blocker != null && Objects.equals(blocker.getControllerId(), controller.getId())) { ContinuousEffect effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); effect.setTargetPointer(new FixedTarget(blocker.getId())); game.addEffect(effect, source); diff --git a/Mage.Sets/src/mage/cards/t/TreacherousLink.java b/Mage.Sets/src/mage/cards/t/TreacherousLink.java index f5b7ed121f4..db60b79c508 100644 --- a/Mage.Sets/src/mage/cards/t/TreacherousLink.java +++ b/Mage.Sets/src/mage/cards/t/TreacherousLink.java @@ -125,7 +125,7 @@ class TreacherousLinkEffect extends ReplacementEffectImpl { if (controller != null && enchantment != null) { Permanent enchantedCreature = game.getPermanentOrLKIBattlefield(enchantment.getAttachedTo()); if (enchantedCreature != null) { - return enchantedCreature.getId() == damageEvent.getTargetId(); + return enchantedCreature.getId().equals(damageEvent.getTargetId()); } } return false; diff --git a/Mage.Sets/src/mage/cards/t/Typhoon.java b/Mage.Sets/src/mage/cards/t/Typhoon.java index 2d17c5fc5ba..4dea13bd3ff 100644 --- a/Mage.Sets/src/mage/cards/t/Typhoon.java +++ b/Mage.Sets/src/mage/cards/t/Typhoon.java @@ -83,7 +83,7 @@ class TyphoonEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) { - if (playerId != source.getControllerId()) { + if (!playerId.equals(source.getControllerId())) { Player player = game.getPlayer(playerId); if (player != null) { int amount = 0; diff --git a/Mage.Sets/src/mage/cards/v/VoidMaw.java b/Mage.Sets/src/mage/cards/v/VoidMaw.java index a2e4aa88922..e6ac6ce0806 100644 --- a/Mage.Sets/src/mage/cards/v/VoidMaw.java +++ b/Mage.Sets/src/mage/cards/v/VoidMaw.java @@ -132,7 +132,7 @@ class VoidMawEffect extends ReplacementEffectImpl { ZoneChangeEvent zEvent = (ZoneChangeEvent) event; if (zEvent.getToZone() == Zone.GRAVEYARD) { Permanent permanent = ((ZoneChangeEvent) event).getTarget(); - if (permanent != null && permanent.getId() != source.getSourceId()) { + if (permanent != null && !permanent.getId().equals(source.getSourceId())) { if (zEvent.getTarget() != null) { // if it comes from permanent, check if it was a creature on the battlefield if (zEvent.getTarget().isCreature()) { return true; diff --git a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java index 0e82384d38a..0bd0af1137e 100644 --- a/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java +++ b/Mage.Sets/src/mage/cards/w/WatchersOfTheDead.java @@ -97,7 +97,7 @@ class WatchersOfTheDeadEffect extends OneShotEffect { for (UUID opponentId : game.getState().getPlayersInRange(controller.getId(), game)) { Player opponent = game.getPlayer(opponentId); if (opponent != null - && opponent != controller) { + && !opponent.equals(controller)) { TargetCard target = new TargetCardInYourGraveyard(2, 2, new FilterCard()); target.setNotTarget(true); Cards cardsInGraveyard = opponent.getGraveyard(); diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index e0eadcb549b..79cf55db7f8 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -329,7 +329,7 @@ public class TestPlayer implements Player { } UUID modeId = ability.getModes().getModeId(modeNr); selectedMode = ability.getModes().get(modeId); - if (modeId != ability.getModes().getMode().getId()) { + if (!Objects.equals(modeId, ability.getModes().getMode().getId())) { ability.getModes().setActiveMode(modeId); index = 0; // reset target index if mode changes } @@ -2416,4 +2416,21 @@ public class TestPlayer implements Player { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + Player obj = (Player) o; + if (this.getId() == null || obj.getId() == null) { + return false; + } + + return this.getId().equals(obj.getId()); + } } diff --git a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java index 354b9a88ac6..7eebfc498a8 100644 --- a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java +++ b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java @@ -1293,4 +1293,22 @@ public class PlayerStub implements Player { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + Player obj = (Player) o; + if (this.getId() == null || obj.getId() == null) { + return false; + } + + return this.getId().equals(obj.getId()); + } + } diff --git a/Mage/src/main/java/mage/game/GameState.java b/Mage/src/main/java/mage/game/GameState.java index 384d07ab199..d10618d2de3 100644 --- a/Mage/src/main/java/mage/game/GameState.java +++ b/Mage/src/main/java/mage/game/GameState.java @@ -757,8 +757,8 @@ public class GameState implements Serializable, Copyable { ZoneChangeData data = (ZoneChangeData) obj; return this.fromZone == data.fromZone && this.toZone == data.toZone - && this.sourceId == data.sourceId - && this.playerId == data.playerId; + && Objects.equals(this.sourceId, data.sourceId) + && Objects.equals(this.playerId, data.playerId); } return false; } diff --git a/Mage/src/main/java/mage/game/combat/CombatGroup.java b/Mage/src/main/java/mage/game/combat/CombatGroup.java index c66dcd0c06d..e1f003e1d87 100644 --- a/Mage/src/main/java/mage/game/combat/CombatGroup.java +++ b/Mage/src/main/java/mage/game/combat/CombatGroup.java @@ -28,11 +28,8 @@ package mage.game.combat; import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; + import mage.abilities.common.ControllerAssignCombatDamageToBlockersAbility; import mage.abilities.common.ControllerDivideCombatDamageAbility; import mage.abilities.common.DamageAsThoughNotBlockedAbility; @@ -286,7 +283,7 @@ public class CombatGroup implements Serializable, Copyable { if (attacker == null) { return; } - boolean oldRuleDamage = (player.getId() == defendingPlayerId); + boolean oldRuleDamage = (Objects.equals(player.getId(), defendingPlayerId)); int damage = getDamageValueFromPermanent(attacker, game); if (canDamage(attacker, first)) { // must be set before attacker damage marking because of effects like Test of Faith diff --git a/Mage/src/main/java/mage/game/command/planes/EdgeOfMalacolPlane.java b/Mage/src/main/java/mage/game/command/planes/EdgeOfMalacolPlane.java index 9caa2b5677e..23146f69957 100644 --- a/Mage/src/main/java/mage/game/command/planes/EdgeOfMalacolPlane.java +++ b/Mage/src/main/java/mage/game/command/planes/EdgeOfMalacolPlane.java @@ -29,6 +29,7 @@ package mage.game.command.planes; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; @@ -132,7 +133,7 @@ class EdgeOfMalacolEffect extends ContinuousRuleModifyingEffectImpl { } } Permanent permanent = game.getPermanent(event.getTargetId()); - if (permanent != null && filter.match(permanent, game) && permanent.getControllerId() == game.getActivePlayerId()) { + if (permanent != null && filter.match(permanent, game) && Objects.equals(permanent.getControllerId(), game.getActivePlayerId())) { UUID oldController = source.getControllerId(); source.setControllerId(game.getActivePlayerId()); Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)); diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index c850a67fcba..87a78ad1bbb 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -3866,7 +3866,7 @@ public abstract class PlayerImpl implements Player, Serializable { return false; } - PlayerImpl obj = (PlayerImpl) o; + Player obj = (Player) o; if (this.getId() == null || obj.getId() == null) { return false; } diff --git a/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java index 3e91f1f0b0a..945a50e2458 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java @@ -27,11 +27,8 @@ */ package mage.watchers.common; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; + import mage.constants.WatcherScope; import mage.game.Game; import mage.game.combat.CombatGroup; @@ -67,7 +64,7 @@ public class BlockedByOnlyOneCreatureThisCombatWatcher extends Watcher { if (!blockedByOneCreature.containsKey(combatGroup)) { blockedByOneCreature.put(combatGroup, event.getSourceId()); } - else if (blockedByOneCreature.get(combatGroup) != event.getSourceId()) { + else if (!Objects.equals(blockedByOneCreature.get(combatGroup), event.getSourceId())) { blockedByOneCreature.put(combatGroup, null); } }