From 26ae7b72812922da2ba6efc710d02749bf5d3c8a Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 3 Apr 2022 11:11:07 -0400 Subject: [PATCH] replaced various instances of instanceof lambda functions with --- .../client/deckeditor/DeckEditorPanel.java | 2 +- .../src/main/java/mage/view/CardView.java | 2 +- .../src/mage/deck/Brawl.java | 4 +-- .../src/mage/player/human/HumanPlayer.java | 2 +- .../src/mage/cards/k/KadenasSilencer.java | 2 +- .../src/mage/cards/m/MandateOfPeace.java | 4 +-- Mage.Sets/src/mage/cards/w/Warbringer.java | 35 +++++++------------ .../abilities/keywords/FlashbackTest.java | 2 +- .../abilities/other/GainAbilitiesTest.java | 4 +-- .../GainMenaceAbilityAsSingletonTest.java | 2 +- .../mage/test/sets/BoosterGenerationTest.java | 2 +- .../condition/common/BuybackCondition.java | 2 +- .../condition/common/DashedCondition.java | 2 +- .../condition/common/EvokedCondition.java | 2 +- .../costs/AlternativeCostSourceAbility.java | 2 +- .../effects/ContinuousEffectImpl.java | 2 +- .../effects/common/CipherEffect.java | 2 +- .../CastAsThoughItHadFlashAllEffect.java | 2 +- .../abilities/keyword/FlankingAbility.java | 2 +- .../src/main/java/mage/filter/FilterCard.java | 2 +- .../main/java/mage/players/PlayerImpl.java | 4 +-- 21 files changed, 37 insertions(+), 46 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java index d5e8afa1a7e..4414f5960aa 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java @@ -110,7 +110,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { // deck legality cards selection Arrays.stream(deckLegalityDisplay.getComponents()) - .filter(c -> c instanceof LegalityLabel) + .filter(LegalityLabel.class::isInstance) .forEach(c -> { c.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { diff --git a/Mage.Common/src/main/java/mage/view/CardView.java b/Mage.Common/src/main/java/mage/view/CardView.java index 66858d24f46..9653a79bb76 100644 --- a/Mage.Common/src/main/java/mage/view/CardView.java +++ b/Mage.Common/src/main/java/mage/view/CardView.java @@ -542,7 +542,7 @@ public class CardView extends SimpleCardView { } else if (spell.getCard() != null) { SplitCard wholeCard = ((SplitCardHalf) spell.getCard()).getParentCard(); Abilities aftermathHalfAbilities = wholeCard.getRightHalfCard().getAbilities(game); - if (aftermathHalfAbilities.stream().anyMatch(halfAbility -> halfAbility instanceof AftermathAbility)) { + if (aftermathHalfAbilities.stream().anyMatch(AftermathAbility.class::isInstance)) { if (ty == SpellAbilityType.SPLIT_RIGHT) { artRect = ArtRect.AFTERMATH_BOTTOM; } else { diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java index e4c3fb249fe..b02e602b805 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/Brawl.java @@ -57,10 +57,10 @@ public class Brawl extends Constructed { Iterator iter = deck.getSideboard().iterator(); Card card1 = iter.next(); Card card2 = iter.next(); - if (card1.getAbilities().stream().anyMatch(ability -> ability instanceof CompanionAbility)) { + if (card1.getAbilities().stream().anyMatch(CompanionAbility.class::isInstance)) { companion = card1; brawler = card2; - } else if (card2.getAbilities().stream().anyMatch(ability -> ability instanceof CompanionAbility)) { + } else if (card2.getAbilities().stream().anyMatch(CompanionAbility.class::isInstance)) { companion = card2; brawler = card1; } else { 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 e87e4aa3a0c..89f4d072ddf 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 @@ -1482,7 +1482,7 @@ public class HumanPlayer extends PlayerImpl { // can't see lands as playable and must know the reason (if they click on land then they get that message) if (abilityToCast.getAbilityType() == AbilityType.SPELL) { Spell spell = game.getStack().getSpell(abilityToCast.getSourceId()); - boolean haveManaAbilities = object.getAbilities().stream().anyMatch(a -> a instanceof ManaAbility); + boolean haveManaAbilities = object.getAbilities().stream().anyMatch(ManaAbility.class::isInstance); if (spell != null && !spell.isResolving() && haveManaAbilities) { switch (spell.getCurrentActivatingManaAbilitiesStep()) { // if you used special mana ability like convoke then normal mana abilities will be restricted to use, see Convoke for details diff --git a/Mage.Sets/src/mage/cards/k/KadenasSilencer.java b/Mage.Sets/src/mage/cards/k/KadenasSilencer.java index 662044dfb61..2e4793ace10 100644 --- a/Mage.Sets/src/mage/cards/k/KadenasSilencer.java +++ b/Mage.Sets/src/mage/cards/k/KadenasSilencer.java @@ -67,7 +67,7 @@ class KadenasSilencerEffect extends OneShotEffect { Set opps = game.getOpponents(source.getControllerId()); game.getStack() .stream() - .filter(stackObject -> stackObject instanceof Ability) + .filter(Ability.class::isInstance) .filter(stackObject -> opps.contains(stackObject.getControllerId())) .forEach(stackObject -> game.getStack().counter(stackObject.getId(), source, game)); return true; diff --git a/Mage.Sets/src/mage/cards/m/MandateOfPeace.java b/Mage.Sets/src/mage/cards/m/MandateOfPeace.java index 1c707ce2882..8b99ab9412e 100644 --- a/Mage.Sets/src/mage/cards/m/MandateOfPeace.java +++ b/Mage.Sets/src/mage/cards/m/MandateOfPeace.java @@ -117,11 +117,11 @@ class MandateOfPeaceEndCombatEffect extends OneShotEffect { combat.endCombat(game); if (!game.getStack().isEmpty()) { game.getStack().stream() - .filter(stackObject -> stackObject instanceof Spell) + .filter(Spell.class::isInstance) .forEach(stackObject -> ((Spell) stackObject).moveToExile(null, "", null, game)); game.getStack().stream() - .filter(stackObject -> stackObject instanceof Ability) + .filter(Ability.class::isInstance) .forEach(stackObject -> game.getStack().remove(stackObject, game)); } return true; diff --git a/Mage.Sets/src/mage/cards/w/Warbringer.java b/Mage.Sets/src/mage/cards/w/Warbringer.java index 71916da2c80..432e679a2fb 100644 --- a/Mage.Sets/src/mage/cards/w/Warbringer.java +++ b/Mage.Sets/src/mage/cards/w/Warbringer.java @@ -1,7 +1,5 @@ - package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.SpellAbility; @@ -12,30 +10,26 @@ import mage.abilities.keyword.DashAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.CostModificationType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.util.CardUtil; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class Warbringer extends CardImpl { public Warbringer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); this.subtype.add(SubType.ORC); this.subtype.add(SubType.BERSERKER); this.power = new MageInt(3); this.toughness = new MageInt(3); // Dash costs you pay cost {2} less (as long as this creature is on the battlefield). - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new WarbringerSpellsCostReductionEffect())); + this.addAbility(new SimpleStaticAbility(new WarbringerSpellsCostReductionEffect())); // Dash {2}{R} this.addAbility(new DashAbility(this, "{2}{R}")); @@ -70,18 +64,15 @@ class WarbringerSpellsCostReductionEffect extends CostModificationEffectImpl { @Override public boolean applies(Ability abilityToModify, Ability source, Game game) { - if (abilityToModify instanceof SpellAbility - && abilityToModify.isControlledBy(source.getControllerId())) { - if (game != null && game.inCheckPlayableState()) { - Card card = game.getCard(source.getSourceId()); - if (card != null) { - return card.getAbilities(game).stream().anyMatch(a -> a instanceof DashAbility); - } - } else { - return DashedCondition.instance.apply(game, abilityToModify); - } + if (!(abilityToModify instanceof SpellAbility) + || !abilityToModify.isControlledBy(source.getControllerId())) { + return false; } - return false; + if (game == null || !game.inCheckPlayableState()) { + return DashedCondition.instance.apply(game, abilityToModify); + } + Card card = game.getCard(source.getSourceId()); + return card != null && card.getAbilities(game).stream().anyMatch(DashAbility.class::isInstance); } @Override diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/FlashbackTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/FlashbackTest.java index 4f94a859d00..f0ccc1ce210 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/FlashbackTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/FlashbackTest.java @@ -617,7 +617,7 @@ public class FlashbackTest extends CardTestPlayerBase { checkPlayableAbility("after", 1, PhaseStep.PRECOMBAT_MAIN, playerA, "Flashback {1}{U}", true); runCode("test", 1, PhaseStep.PRECOMBAT_MAIN, playerA, (info, player, game) -> { long flashbackCount = player.getPlayable(game, true).stream() - .filter(ability -> ability instanceof FlashbackAbility) + .filter(FlashbackAbility.class::isInstance) .count(); Assert.assertEquals("must have only two playable abilities without duplicates", 2, flashbackCount); }); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainAbilitiesTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainAbilitiesTest.java index 03a690f6965..43a088ca4fd 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainAbilitiesTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainAbilitiesTest.java @@ -37,7 +37,7 @@ public class GainAbilitiesTest extends CardTestPlayerBase { Permanent permanent = getPermanent("Balduvian Bears"); Assert.assertEquals("must have only 1 singleton ability instance from two attachments", - 1, permanent.getAbilities(currentGame).stream().filter(a -> a instanceof VigilanceAbility).count()); + 1, permanent.getAbilities(currentGame).stream().filter(VigilanceAbility.class::isInstance).count()); } @Test @@ -63,7 +63,7 @@ public class GainAbilitiesTest extends CardTestPlayerBase { Permanent permanent = getPermanent("Balduvian Bears"); Assert.assertEquals("must have 2 dynamic ability instances from two attachments", 2, permanent.getAbilities(currentGame).stream().filter( - a -> a.getEffects().stream().anyMatch(e -> e instanceof DrawCardSourceControllerEffect) + a -> a.getEffects().stream().anyMatch(DrawCardSourceControllerEffect.class::isInstance) ).count()); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainMenaceAbilityAsSingletonTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainMenaceAbilityAsSingletonTest.java index 473f9327a3e..13279c767da 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainMenaceAbilityAsSingletonTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/GainMenaceAbilityAsSingletonTest.java @@ -53,7 +53,7 @@ public class GainMenaceAbilityAsSingletonTest extends CardTestPlayerBase { Permanent permanent = getPermanent("Minotaur", playerA); Assert.assertEquals("must have only 1 Menace instance", 1, permanent.getAbilities(currentGame).stream() - .filter(a -> a instanceof MenaceAbility).count()); + .filter(MenaceAbility.class::isInstance).count()); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java b/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java index af5d88d41ff..69fcd7755b0 100644 --- a/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/sets/BoosterGenerationTest.java @@ -353,7 +353,7 @@ public class BoosterGenerationTest extends MageTestBase { fail("Booster can't have more than three snow lands"); } - long mdfcCount = booster.stream().filter(card -> card instanceof ModalDoubleFacesCard).count(); + long mdfcCount = booster.stream().filter(ModalDoubleFacesCard.class::isInstance).count(); assertTrue("Booster can't have more than one MDFC", mdfcCount < 2); foundMDFC |= mdfcCount > 0; diff --git a/Mage/src/main/java/mage/abilities/condition/common/BuybackCondition.java b/Mage/src/main/java/mage/abilities/condition/common/BuybackCondition.java index e565ea72f3d..f2941a2a5f9 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/BuybackCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/BuybackCondition.java @@ -18,7 +18,7 @@ public enum BuybackCondition implements Condition { Card card = game.getCard(source.getSourceId()); if (card != null) { return card.getAbilities(game).stream() - .filter(a -> a instanceof BuybackAbility) + .filter(BuybackAbility.class::isInstance) .anyMatch(a -> ((BuybackAbility) a).isBuybackActivated(game)); } return false; diff --git a/Mage/src/main/java/mage/abilities/condition/common/DashedCondition.java b/Mage/src/main/java/mage/abilities/condition/common/DashedCondition.java index 640cdb6bd79..64343d69f7d 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/DashedCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/DashedCondition.java @@ -20,7 +20,7 @@ public enum DashedCondition implements Condition { Card card = game.getCard(source.getSourceId()); if (card != null) { return card.getAbilities(game).stream() - .filter(a -> a instanceof DashAbility) + .filter(DashAbility.class::isInstance) .anyMatch(d -> ((DashAbility) d).isActivated(source, game)); } diff --git a/Mage/src/main/java/mage/abilities/condition/common/EvokedCondition.java b/Mage/src/main/java/mage/abilities/condition/common/EvokedCondition.java index 7733f475f7a..99fa5c3eaab 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/EvokedCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/EvokedCondition.java @@ -23,7 +23,7 @@ public enum EvokedCondition implements Condition { Card card = game.getCard(source.getSourceId()); if (card != null) { return card.getAbilities(game).stream() - .filter(ab -> ab instanceof EvokeAbility) + .filter(EvokeAbility.class::isInstance) .anyMatch(evoke -> ((EvokeAbility) evoke).isActivated(source, game)); } return false; diff --git a/Mage/src/main/java/mage/abilities/costs/AlternativeCostSourceAbility.java b/Mage/src/main/java/mage/abilities/costs/AlternativeCostSourceAbility.java index 65c3cc9b592..00f2913ab7f 100644 --- a/Mage/src/main/java/mage/abilities/costs/AlternativeCostSourceAbility.java +++ b/Mage/src/main/java/mage/abilities/costs/AlternativeCostSourceAbility.java @@ -140,7 +140,7 @@ public class AlternativeCostSourceAbility extends StaticAbility implements Alter if (alternativeCostsToCheck.canPay(ability, ability, ability.getControllerId(), game) && player.chooseUse(Outcome.Benefit, costChoiceText, this, game)) { if (ability instanceof SpellAbility) { - ability.getManaCostsToPay().removeIf(manaCost -> manaCost instanceof VariableCost); + ability.getManaCostsToPay().removeIf(VariableCost.class::isInstance); CardUtil.reduceCost((SpellAbility) ability, ability.getManaCosts()); } else { diff --git a/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java b/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java index cf80b5c9796..bde84fce90c 100644 --- a/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java +++ b/Mage/src/main/java/mage/abilities/effects/ContinuousEffectImpl.java @@ -418,7 +418,7 @@ public abstract class ContinuousEffectImpl extends EffectImpl implements Continu // extraPredicates from some filters is player related, you don't need it here List list = new ArrayList<>(); Predicates.collectAllComponents(filter.getPredicates(), list); - if (list.stream().anyMatch(p -> p instanceof SubType.SubTypePredicate)) { + if (list.stream().anyMatch(SubType.SubTypePredicate.class::isInstance)) { this.addDependedToType(DependencyType.AddingCreatureType); } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java index 2722901cc02..1df904ad9ae 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CipherEffect.java @@ -118,7 +118,7 @@ class CipherStoreEffect extends OneShotEffect { Card copyCard = game.copyCard(cipherCard, source, controller.getId()); SpellAbility ability = copyCard.getSpellAbility(); // remove the cipher effect from the copy - ability.getEffects().removeIf(effect -> effect instanceof CipherEffect); + ability.getEffects().removeIf(CipherEffect.class::isInstance); controller.cast(ability, game, true, new ApprovingObject(source, game)); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/CastAsThoughItHadFlashAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/CastAsThoughItHadFlashAllEffect.java index a2324fa7515..8ae7458ccc9 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/CastAsThoughItHadFlashAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/CastAsThoughItHadFlashAllEffect.java @@ -56,7 +56,7 @@ public class CastAsThoughItHadFlashAllEffect extends AsThoughEffectImpl { if (card != null) { //Allow lands with morph to be played at instant speed if (card.isLand(game)) { - boolean morphAbility = card.getAbilities().stream().anyMatch(ability -> ability instanceof MorphAbility); + boolean morphAbility = card.getAbilities().stream().anyMatch(MorphAbility.class::isInstance); if (morphAbility) { Card cardCopy = card.copy(); cardCopy.removeAllCardTypes(game); diff --git a/Mage/src/main/java/mage/abilities/keyword/FlankingAbility.java b/Mage/src/main/java/mage/abilities/keyword/FlankingAbility.java index 3c7319a71ee..6a46885ee18 100644 --- a/Mage/src/main/java/mage/abilities/keyword/FlankingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/FlankingAbility.java @@ -34,7 +34,7 @@ public class FlankingAbility extends TriggeredAbilityImpl { Permanent permanent = game.getPermanent(event.getSourceId()); if (permanent != null) { boolean hasFlankingAbility - = permanent.getAbilities().stream().anyMatch(ability -> ability instanceof FlankingAbility); + = permanent.getAbilities().stream().anyMatch(FlankingAbility.class::isInstance); if (!hasFlankingAbility) { for (Effect effect : this.getEffects()) { diff --git a/Mage/src/main/java/mage/filter/FilterCard.java b/Mage/src/main/java/mage/filter/FilterCard.java index e700f468b0c..d62326d0045 100644 --- a/Mage/src/main/java/mage/filter/FilterCard.java +++ b/Mage/src/main/java/mage/filter/FilterCard.java @@ -95,7 +95,7 @@ public class FilterCard extends FilterObject { // card filter can't contain controller predicate (only permanents on battlefield have controller) List list = new ArrayList<>(); Predicates.collectAllComponents(predicate, list); - if (list.stream().anyMatch(p -> p instanceof TargetController.ControllerPredicate)) { + if (list.stream().anyMatch(TargetController.ControllerPredicate.class::isInstance)) { throw new IllegalArgumentException("Card filter doesn't support controller predicate"); } } diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 7a01056e985..24d1c189353 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -3706,7 +3706,7 @@ public abstract class PlayerImpl implements Player, Serializable { ManaOptions manaFull = availableMana.copy(); if (ability instanceof SpellAbility) { for (AlternateManaPaymentAbility altAbility : CardUtil.getAbilities(object, game).stream() - .filter(a -> a instanceof AlternateManaPaymentAbility) + .filter(AlternateManaPaymentAbility.class::isInstance) .map(a -> (AlternateManaPaymentAbility) a) .collect(Collectors.toList())) { ManaOptions manaSpecial = altAbility.getManaOptions(ability, game, ability.getManaCostsToPay()); @@ -3739,7 +3739,7 @@ public abstract class PlayerImpl implements Player, Serializable { if (ability instanceof AlternativeSourceCosts && object != null && !(object instanceof Permanent)) { ActivatedAbility playAbility = null; if (object.isLand(game)) { - playAbility = (PlayLandAbility) CardUtil.getAbilities(object, game).stream().filter(a -> a instanceof PlayLandAbility).findFirst().orElse(null); + playAbility = (PlayLandAbility) CardUtil.getAbilities(object, game).stream().filter(PlayLandAbility.class::isInstance).findFirst().orElse(null); } else if (object instanceof Card) { playAbility = ((Card) object).getSpellAbility(); }