diff --git a/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java b/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java index 840bde24bd6..047797561b1 100644 --- a/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java +++ b/Mage.Sets/src/mage/cards/a/AlrundGodOfTheCosmos.java @@ -107,7 +107,7 @@ class AlrundGodOfTheCosmosEffect extends OneShotEffect { if (controller != null) { Set twoCardsFromTop = controller.getLibrary().getTopCards(game, 2); Cards cards = new CardsImpl(); - cards.addAll(twoCardsFromTop); + cards.addAllCards(twoCardsFromTop); controller.revealCards(source, cards, game); for (Card card : cards.getCards(game)) { if (card.getCardType(game).toString().contains(chosenCardType)) { diff --git a/Mage.Sets/src/mage/cards/a/AminatousAugury.java b/Mage.Sets/src/mage/cards/a/AminatousAugury.java index 495a2e795a9..b19628157a4 100644 --- a/Mage.Sets/src/mage/cards/a/AminatousAugury.java +++ b/Mage.Sets/src/mage/cards/a/AminatousAugury.java @@ -95,7 +95,7 @@ class AminatousAuguryEffect extends OneShotEffect { } Cards cardsToCast = new CardsImpl(); - cardsToCast.addAll(auguryExileZone.getCards(game)); + cardsToCast.addAllCards(auguryExileZone.getCards(game)); // put a land card from among them onto the battlefield TargetCard target = new TargetCard(Zone.EXILED, StaticFilters.FILTER_CARD_LAND_A); diff --git a/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java b/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java index 696218adfb4..5f0a53da478 100644 --- a/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java +++ b/Mage.Sets/src/mage/cards/a/AnimistsAwakening.java @@ -62,7 +62,7 @@ class AnimistsAwakeningEffect extends OneShotEffect { } Cards cards = new CardsImpl(); int xValue = source.getManaCostsToPay().getX(); - cards.addAll(controller.getLibrary().getTopCards(game, xValue)); + cards.addAllCards(controller.getLibrary().getTopCards(game, xValue)); if (!cards.isEmpty()) { controller.revealCards(sourceObject.getIdName(), cards, game); Set toBattlefield = new LinkedHashSet<>(); diff --git a/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java b/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java index 9cd8b8cb98f..547a63552ea 100644 --- a/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java +++ b/Mage.Sets/src/mage/cards/b/BalshanBeguiler.java @@ -72,7 +72,7 @@ class BalshanBeguilerEffect extends OneShotEffect { return false; } CardsImpl cards = new CardsImpl(); - cards.addAll(player.getLibrary().getTopCards(game, 2)); + cards.addAllCards(player.getLibrary().getTopCards(game, 2)); if (cards.isEmpty()) { return false; } diff --git a/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java b/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java index 1e6ebd701e3..fb618c94c4e 100644 --- a/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java +++ b/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java @@ -89,7 +89,7 @@ class BalthorTheDefiledEffect extends OneShotEffect { for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { - cardsToReturn.addAll(player.getGraveyard().getCards(filter, source.getControllerId(), source, game)); + cardsToReturn.addAllCards(player.getGraveyard().getCards(filter, source.getControllerId(), source, game)); } } controller.moveCards(cardsToReturn.getCards(game), Zone.BATTLEFIELD, source, game, false, false, true, null); diff --git a/Mage.Sets/src/mage/cards/b/BoneyardParley.java b/Mage.Sets/src/mage/cards/b/BoneyardParley.java index 42fe93d72a5..8f30e8fab63 100644 --- a/Mage.Sets/src/mage/cards/b/BoneyardParley.java +++ b/Mage.Sets/src/mage/cards/b/BoneyardParley.java @@ -73,9 +73,7 @@ class BoneyardParleyEffect extends OneShotEffect { if (player != null) { Cards cards = new CardsImpl(); for (Target target : source.getTargets()) { - for (UUID cardId : target.getTargets()) { - cards.add(cardId); - } + cards.addAll(target.getTargets()); } if (!cards.isEmpty() && player.moveCards(cards, Zone.EXILED, source, game)) { TargetOpponent targetOpponent = new TargetOpponent(true); @@ -109,23 +107,9 @@ class BoneyardParleyEffect extends OneShotEffect { pile1Set.addAll(pile1); pile2Set.addAll(pile2); -// Cards toBattlefield = new CardsImpl(); -// Cards toGraveyard = new CardsImpl(); -// -// if (pile1Zone == Zone.BATTLEFIELD) { -// toBattlefield.addAll(pile1); -// toGraveyard.addAll(pile2); -// } else { -// toBattlefield.addAll(pile2); -// toGraveyard.addAll(pile1); -// } player.moveCards(pile1Set, pile1Zone, source, game, false, false, false, null); player.moveCards(pile2Set, pile2Zone, source, game, false, false, false, null); -// StringBuilder sb = new StringBuilder("Pile 1, going to ").append(pile1Zone == Zone.BATTLEFIELD ? "Battlefield" : "Graveyard").append(": "); -// game.informPlayers(sb.toString()); -// sb = new StringBuilder("Pile 2, going to ").append(pile2Zone == Zone.BATTLEFIELD ? "Battlefield" : "Graveyard").append(':'); -// game.informPlayers(sb.toString()); } return true; } diff --git a/Mage.Sets/src/mage/cards/b/BoosterTutor.java b/Mage.Sets/src/mage/cards/b/BoosterTutor.java index 1b7d11eec4c..0b2bd912439 100644 --- a/Mage.Sets/src/mage/cards/b/BoosterTutor.java +++ b/Mage.Sets/src/mage/cards/b/BoosterTutor.java @@ -90,7 +90,7 @@ class BoosterTutorEffect extends OneShotEffect { Set cardsToLoad = new HashSet(boosterPack); game.loadCards(cardsToLoad, controller.getId()); CardsImpl cards = new CardsImpl(); - cards.addAll(boosterPack); + cards.addAllCards(boosterPack); if (controller.choose(Outcome.Benefit, cards, targetCard, source, game)) { Card card = game.getCard(targetCard.getFirstTarget()); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java b/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java index 58f0828bc47..447e47dd672 100644 --- a/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java +++ b/Mage.Sets/src/mage/cards/b/BrilliantUltimatum.java @@ -65,7 +65,7 @@ class BrilliantUltimatumEffect extends OneShotEffect { } Cards pile2 = new CardsImpl(); - pile2.addAll(controller.getLibrary().getTopCards(game, 5)); + pile2.addAllCards(controller.getLibrary().getTopCards(game, 5)); controller.moveCardsToExile(pile2.getCards(game), source, game, true, source.getSourceId(), sourceObject.getIdName()); TargetOpponent targetOpponent = new TargetOpponent(true); diff --git a/Mage.Sets/src/mage/cards/c/Campfire.java b/Mage.Sets/src/mage/cards/c/Campfire.java index e542355cae3..c221bebddf3 100644 --- a/Mage.Sets/src/mage/cards/c/Campfire.java +++ b/Mage.Sets/src/mage/cards/c/Campfire.java @@ -82,7 +82,7 @@ class CampfireEffect extends OneShotEffect { return false; } Cards cards = new CardsImpl(game.getCommanderCardsFromCommandZone(player, CommanderCardType.ANY)); - cards.addAll(player.getGraveyard().getCards(filter, game)); + cards.addAllCards(player.getGraveyard().getCards(filter, game)); player.moveCards(cards, Zone.HAND, source, game); player.putCardsOnBottomOfLibrary(player.getGraveyard(), game, source, false); player.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/c/ClearTheLand.java b/Mage.Sets/src/mage/cards/c/ClearTheLand.java index 787716e1980..7d07ccc3fb2 100644 --- a/Mage.Sets/src/mage/cards/c/ClearTheLand.java +++ b/Mage.Sets/src/mage/cards/c/ClearTheLand.java @@ -68,7 +68,7 @@ class ClearTheLandEffect extends OneShotEffect { if (player != null) { Library library = player.getLibrary(); Cards cardsToReveal = new CardsImpl(); - cardsToReveal.addAll(library.getTopCards(game, 5)); + cardsToReveal.addAllCards(library.getTopCards(game, 5)); if (!cardsToReveal.isEmpty()) { player.revealCards(source, "Revealed cards for " + player.getName(), cardsToReveal, game); Cards cardsToPutOnBattlefield = new CardsImpl(); diff --git a/Mage.Sets/src/mage/cards/d/DubiousChallenge.java b/Mage.Sets/src/mage/cards/d/DubiousChallenge.java index a29e3e1c809..773422da58d 100644 --- a/Mage.Sets/src/mage/cards/d/DubiousChallenge.java +++ b/Mage.Sets/src/mage/cards/d/DubiousChallenge.java @@ -62,7 +62,7 @@ class DubiousChallengeEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { Cards topCards = new CardsImpl(); - topCards.addAll(controller.getLibrary().getTopCards(game, 10)); + topCards.addAllCards(controller.getLibrary().getTopCards(game, 10)); controller.lookAtCards(sourceObject.getIdName(), topCards, game); TargetCard targetCreatures = new TargetCard(0, 2, Zone.LIBRARY, StaticFilters.FILTER_CARD_CREATURE); controller.choose(outcome, topCards, targetCreatures, source, game); diff --git a/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java b/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java index 1a7524e7728..00c66a0f9e9 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java +++ b/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java @@ -77,7 +77,7 @@ class ElvishSoultillerEffect extends OneShotEffect { Cards cardsToLibrary = new CardsImpl(); FilterCreatureCard filter = new FilterCreatureCard(); filter.add(SubType.byDescription(typeChoice.getChoice()).getPredicate()); - cardsToLibrary.addAll(controller.getGraveyard().getCards(filter, source.getControllerId(), source, game)); + cardsToLibrary.addAllCards(controller.getGraveyard().getCards(filter, source.getControllerId(), source, game)); controller.putCardsOnTopOfLibrary(cardsToLibrary, game, source, false); controller.shuffleLibrary(source, game); return true; diff --git a/Mage.Sets/src/mage/cards/f/FrayingLine.java b/Mage.Sets/src/mage/cards/f/FrayingLine.java index 692f227c4b8..eb66b734b01 100644 --- a/Mage.Sets/src/mage/cards/f/FrayingLine.java +++ b/Mage.Sets/src/mage/cards/f/FrayingLine.java @@ -106,7 +106,7 @@ class FrayingLineEffect extends OneShotEffect { return true; } Cards cards = new CardsImpl(source.getSourcePermanentIfItStillExists(game)); - cards.addAll(game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source, game)); + cards.addAllCards(game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source, game)); player.moveCards(cards, Zone.EXILED, source, game); for (Permanent permanent : game.getBattlefield().getActivePermanents( StaticFilters.FILTER_PERMANENT_CREATURE, diff --git a/Mage.Sets/src/mage/cards/g/GlimpseOfTomorrow.java b/Mage.Sets/src/mage/cards/g/GlimpseOfTomorrow.java index 88a839b2184..777e58b0c5a 100644 --- a/Mage.Sets/src/mage/cards/g/GlimpseOfTomorrow.java +++ b/Mage.Sets/src/mage/cards/g/GlimpseOfTomorrow.java @@ -91,7 +91,7 @@ class GlimpseOfTomorrowEffect extends OneShotEffect { toBattlefield.clear(); cards.retainZone(Zone.LIBRARY, game); - toBattlefield.addAll(cards.getCards(StaticFilters.FILTER_CARD_PERMANENT, game)); + toBattlefield.addAllCards(cards.getCards(StaticFilters.FILTER_CARD_PERMANENT, game)); toBattlefield.removeIf(uuid -> !game.getCard(uuid).hasSubtype(SubType.AURA, game)); player.moveCards(toBattlefield, Zone.BATTLEFIELD, source, game); cards.retainZone(Zone.LIBRARY, game); diff --git a/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java b/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java index 5ac38320010..e5faa85135b 100644 --- a/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java +++ b/Mage.Sets/src/mage/cards/g/GontiLordOfLuxury.java @@ -85,7 +85,7 @@ class GontiLordOfLuxuryEffect extends OneShotEffect { return false; } Cards topCards = new CardsImpl(); - topCards.addAll(opponent.getLibrary().getTopCards(game, 4)); + topCards.addAllCards(opponent.getLibrary().getTopCards(game, 4)); TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCard("card to exile")); controller.choose(outcome, topCards, target, source, game); Card card = game.getCard(target.getFirstTarget()); diff --git a/Mage.Sets/src/mage/cards/g/GrimoireThief.java b/Mage.Sets/src/mage/cards/g/GrimoireThief.java index a589f242370..893ba18990c 100644 --- a/Mage.Sets/src/mage/cards/g/GrimoireThief.java +++ b/Mage.Sets/src/mage/cards/g/GrimoireThief.java @@ -188,7 +188,7 @@ class GrimoireThiefCounterspellEffect extends OneShotEffect { if (exileZones != null && sourceObject != null) { for (ExileZone exileZone : game.getExile().getExileZones()) { if (!exileZone.isEmpty()) { - cards.addAll(exileZone.getCards(game)); + cards.addAllCards(exileZone.getCards(game)); } } // set face up first diff --git a/Mage.Sets/src/mage/cards/g/GuidedPassage.java b/Mage.Sets/src/mage/cards/g/GuidedPassage.java index f2af2b4f1ec..710b931be59 100644 --- a/Mage.Sets/src/mage/cards/g/GuidedPassage.java +++ b/Mage.Sets/src/mage/cards/g/GuidedPassage.java @@ -81,7 +81,7 @@ class GuidedPassageEffect extends OneShotEffect { return true; } CardsImpl cards = new CardsImpl(); - cards.addAll(controller.getLibrary().getTopCards(game, libSize)); + cards.addAllCards(controller.getLibrary().getTopCards(game, libSize)); controller.revealCards(sourceObject.getIdName(), cards, game); Player opponent; diff --git a/Mage.Sets/src/mage/cards/h/HedronAlignment.java b/Mage.Sets/src/mage/cards/h/HedronAlignment.java index 00a9eecec91..00d15db5beb 100644 --- a/Mage.Sets/src/mage/cards/h/HedronAlignment.java +++ b/Mage.Sets/src/mage/cards/h/HedronAlignment.java @@ -94,7 +94,7 @@ class HedronAlignmentEffect extends OneShotEffect { return true; } Cards cardsToCheck = new CardsImpl(); - cardsToCheck.addAll(game.getExile().getAllCards(game)); + cardsToCheck.addAllCards(game.getExile().getAllCards(game)); if (cardsToCheck.count(filterCard, controller.getId(), source, game) == 0) { return true; } diff --git a/Mage.Sets/src/mage/cards/h/HonorTheFallen.java b/Mage.Sets/src/mage/cards/h/HonorTheFallen.java index f565f3250ee..5ac62ac50f8 100644 --- a/Mage.Sets/src/mage/cards/h/HonorTheFallen.java +++ b/Mage.Sets/src/mage/cards/h/HonorTheFallen.java @@ -60,7 +60,7 @@ class HonorTheFallenEffect extends OneShotEffect { if (player == null) { continue; } - cards.addAll(player.getGraveyard().getCards(StaticFilters.FILTER_CARD_CREATURE, game)); + cards.addAllCards(player.getGraveyard().getCards(StaticFilters.FILTER_CARD_CREATURE, game)); } controller.moveCards(cards, Zone.EXILED, source, game); int count = cards diff --git a/Mage.Sets/src/mage/cards/j/JalumGrifter.java b/Mage.Sets/src/mage/cards/j/JalumGrifter.java index 6c5f376e4d8..e87e68cc465 100644 --- a/Mage.Sets/src/mage/cards/j/JalumGrifter.java +++ b/Mage.Sets/src/mage/cards/j/JalumGrifter.java @@ -116,7 +116,7 @@ class JalumGrifterEffect extends OneShotEffect { game.informPlayers(controller.getLogName() + " shuffles the face-down pile"); TargetCard targetCard = new TargetCard(Zone.HAND, new FilterCard()); CardsImpl cards = new CardsImpl(); - cards.addAll(shellGamePile); + cards.addAllCards(shellGamePile); if (opponent.choose(Outcome.Sacrifice, cards, targetCard, source, game)) { Card card = game.getCard(targetCard.getFirstTarget()); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/m/ManifoldInsights.java b/Mage.Sets/src/mage/cards/m/ManifoldInsights.java index 9920d28d55a..91ce69d206e 100644 --- a/Mage.Sets/src/mage/cards/m/ManifoldInsights.java +++ b/Mage.Sets/src/mage/cards/m/ManifoldInsights.java @@ -63,11 +63,11 @@ class ManifoldInsightsEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { Cards topLib = new CardsImpl(); - topLib.addAll(controller.getLibrary().getTopCards(game, 10)); + topLib.addAllCards(controller.getLibrary().getTopCards(game, 10)); controller.revealCards(sourceObject.getIdName(), topLib, game); Cards chosenCards = new CardsImpl(); if (game.getOpponents(controller.getId()).size() >= topLib.getCards(StaticFilters.FILTER_CARD_NON_LAND, game).size()) { - chosenCards.addAll(topLib.getCards(StaticFilters.FILTER_CARD_NON_LAND, game)); + chosenCards.addAllCards(topLib.getCards(StaticFilters.FILTER_CARD_NON_LAND, game)); topLib.removeAll(chosenCards); } else if (!topLib.getCards(StaticFilters.FILTER_CARD_NON_LAND, game).isEmpty()) { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { diff --git a/Mage.Sets/src/mage/cards/m/Mindblaze.java b/Mage.Sets/src/mage/cards/m/Mindblaze.java index 7ae2e1f661e..300708cfb3f 100644 --- a/Mage.Sets/src/mage/cards/m/Mindblaze.java +++ b/Mage.Sets/src/mage/cards/m/Mindblaze.java @@ -83,7 +83,7 @@ class MindblazeEffect extends OneShotEffect { game.informPlayers(sourceObject.getIdName() + " - Chosen number: [" + numberChoice.getChoice() + ']'); Cards cards = new CardsImpl(); - cards.addAll(player.getLibrary().getCards(game)); + cards.addAllCards(player.getLibrary().getCards(game)); playerControls.revealCards("Library", cards, game); FilterCard filter = new FilterCard(); filter.add(new NamePredicate(cardName)); diff --git a/Mage.Sets/src/mage/cards/m/MineMineMine.java b/Mage.Sets/src/mage/cards/m/MineMineMine.java index 7b2bdd6a909..85e7abab27a 100644 --- a/Mage.Sets/src/mage/cards/m/MineMineMine.java +++ b/Mage.Sets/src/mage/cards/m/MineMineMine.java @@ -76,7 +76,7 @@ class MineMineMineDrawEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null) { CardsImpl libraryCards = new CardsImpl(); - libraryCards.addAll(player.getLibrary().getCards(game)); + libraryCards.addAllCards(player.getLibrary().getCards(game)); player.moveCards(libraryCards, Zone.HAND, source, game); } } diff --git a/Mage.Sets/src/mage/cards/m/MitoticManipulation.java b/Mage.Sets/src/mage/cards/m/MitoticManipulation.java index f4a4bf6def5..5b3530a17d4 100644 --- a/Mage.Sets/src/mage/cards/m/MitoticManipulation.java +++ b/Mage.Sets/src/mage/cards/m/MitoticManipulation.java @@ -70,7 +70,7 @@ class MitoticManipulationEffect extends OneShotEffect { } Cards cardsFromTop = new CardsImpl(); - cardsFromTop.addAll(controller.getLibrary().getTopCards(game, 7)); + cardsFromTop.addAllCards(controller.getLibrary().getTopCards(game, 7)); controller.lookAtCards(sourceObject.getIdName(), cardsFromTop, game); FilterCard filter = new FilterCard("card to put onto the battlefield"); List namePredicates = new ArrayList<>(); diff --git a/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java b/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java index 1a742997e97..331448180c1 100644 --- a/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java +++ b/Mage.Sets/src/mage/cards/m/MnemonicBetrayal.java @@ -82,7 +82,7 @@ class MnemonicBetrayalExileEffect extends OneShotEffect { .filter(Objects::nonNull) .map(Player::getGraveyard) .map(g -> g.getCards(game)) - .forEach(cards::addAll); + .forEach(cards::addAllCards); controller.moveCardsToExile( cards.getCards(game), source, game, true, source.getSourceId(), CardUtil.getSourceName(game, source) diff --git a/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java b/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java index be979c9bbaf..d88b02ed383 100644 --- a/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java +++ b/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java @@ -94,7 +94,7 @@ class MomirVigSimicVisionaryEffect extends OneShotEffect { } CardsImpl cards = new CardsImpl(); - cards.addAll(controller.getLibrary().getTopCards(game, 1)); + cards.addAllCards(controller.getLibrary().getTopCards(game, 1)); controller.revealCards(sourceObject.getIdName(), cards, game); Set cardsList = cards.getCards(game); diff --git a/Mage.Sets/src/mage/cards/m/MoonlightBargain.java b/Mage.Sets/src/mage/cards/m/MoonlightBargain.java index a1e911aae9b..18da784a020 100644 --- a/Mage.Sets/src/mage/cards/m/MoonlightBargain.java +++ b/Mage.Sets/src/mage/cards/m/MoonlightBargain.java @@ -64,7 +64,7 @@ class MoonlightBargainEffect extends OneShotEffect { if (controller != null && sourceObject != null) { Set topFive = controller.getLibrary().getTopCards(game, 5); Cards lookAtCards = new CardsImpl(); - lookAtCards.addAll(topFive); + lookAtCards.addAllCards(topFive); controller.lookAtCards(sourceObject.getIdName(), lookAtCards, game); Cards toHand = new CardsImpl(); for (Card card : topFive) { diff --git a/Mage.Sets/src/mage/cards/n/Necromentia.java b/Mage.Sets/src/mage/cards/n/Necromentia.java index 21c52386ada..93a900b0d9b 100644 --- a/Mage.Sets/src/mage/cards/n/Necromentia.java +++ b/Mage.Sets/src/mage/cards/n/Necromentia.java @@ -101,7 +101,7 @@ class NecromentiaEffect extends OneShotEffect { // cards in Library Cards cardsInLibrary = new CardsImpl(); - cardsInLibrary.addAll(targetPlayer.getLibrary().getCards(game)); + cardsInLibrary.addAllCards(targetPlayer.getLibrary().getCards(game)); cardsCount = (cardName.isEmpty() ? 0 : cardsInLibrary.count(filter, game)); if (cardsCount > 0) { filter.setMessage("card named " + cardName + " in the library of " + targetPlayer.getLogName()); diff --git a/Mage.Sets/src/mage/cards/o/OblivionSower.java b/Mage.Sets/src/mage/cards/o/OblivionSower.java index 9d03512f857..cbab579cfba 100644 --- a/Mage.Sets/src/mage/cards/o/OblivionSower.java +++ b/Mage.Sets/src/mage/cards/o/OblivionSower.java @@ -83,9 +83,9 @@ class OblivionSowerEffect extends OneShotEffect { filter.add(new OwnerIdPredicate(targetPlayer.getId())); filter.add(Predicates.not(FaceDownPredicate.instance)); Cards exiledCards = new CardsImpl(); - exiledCards.addAll(game.getExile().getAllCards(game)); + exiledCards.addAllCards(game.getExile().getAllCards(game)); Cards exiledLands = new CardsImpl(); - exiledLands.addAll(exiledCards.getCards(filter, controller.getId(), source, game)); + exiledLands.addAllCards(exiledCards.getCards(filter, controller.getId(), source, game)); if (!exiledLands.isEmpty() && controller.chooseUse(outcome, "Put lands into play?", source, game)) { FilterCard filterToPlay = new FilterCard("land" + (exiledLands.size() > 1 ? "s" : "") + " from exile owned by " diff --git a/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java b/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java index 7adf68dcce2..70f00b26bf5 100644 --- a/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java +++ b/Mage.Sets/src/mage/cards/o/OonaQueenOfTheFae.java @@ -76,7 +76,7 @@ class OonaQueenOfTheFaeEffect extends OneShotEffect { } int cardsWithColor = 0; Cards cardsToExile = new CardsImpl(); - cardsToExile.addAll(opponent.getLibrary().getTopCards(game, source.getManaCostsToPay().getX())); + cardsToExile.addAllCards(opponent.getLibrary().getTopCards(game, source.getManaCostsToPay().getX())); for (Card card : cardsToExile.getCards(game)) { if (card != null && card.getColor(game).contains(choice.getColor())) { diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianPortal.java b/Mage.Sets/src/mage/cards/p/PhyrexianPortal.java index 82ef1c4f3fc..c2383239e0d 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianPortal.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianPortal.java @@ -94,10 +94,10 @@ class PhyrexianPortalEffect extends OneShotEffect { game.informPlayers(controller.getLogName() + " chooses to search the " + (choice ? "first" : "second") + " pile"); Cards pileToExile = new CardsImpl(); - pileToExile.addAll(choice ? pile2 : pile1); + pileToExile.addAllCards(choice ? pile2 : pile1); controller.moveCardsToExile(pileToExile.getCards(game), source, game, true, null, ""); Cards chosenPile = new CardsImpl(); - chosenPile.addAll(choice ? pile1 : pile2); + chosenPile.addAllCards(choice ? pile1 : pile2); TargetCard target2 = new TargetCard(Zone.HAND, new FilterCard("card to put into your hand")); if (controller.choose(outcome, chosenPile, target2, source, game)) { diff --git a/Mage.Sets/src/mage/cards/p/PlanarBirth.java b/Mage.Sets/src/mage/cards/p/PlanarBirth.java index a8f5318252b..5be32f924fa 100644 --- a/Mage.Sets/src/mage/cards/p/PlanarBirth.java +++ b/Mage.Sets/src/mage/cards/p/PlanarBirth.java @@ -62,7 +62,7 @@ class PlanarBirthEffect extends OneShotEffect { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { - toBattlefield.addAll(player.getGraveyard().getCards(StaticFilters.FILTER_CARD_BASIC_LAND, controller.getId(), source, game)); + toBattlefield.addAllCards(player.getGraveyard().getCards(StaticFilters.FILTER_CARD_BASIC_LAND, controller.getId(), source, game)); } } controller.moveCards(toBattlefield.getCards(game), Zone.BATTLEFIELD, source, game, true, false, true, null); diff --git a/Mage.Sets/src/mage/cards/r/Ransack.java b/Mage.Sets/src/mage/cards/r/Ransack.java index 9dabe9d6641..928955005f4 100644 --- a/Mage.Sets/src/mage/cards/r/Ransack.java +++ b/Mage.Sets/src/mage/cards/r/Ransack.java @@ -72,7 +72,7 @@ class RansackEffect extends OneShotEffect { int number = min(player.getLibrary().size(), 5); Set cards = player.getLibrary().getTopCards(game, number); Cards cardsRemaining = new CardsImpl(); - cardsRemaining.addAll(cards); + cardsRemaining.addAllCards(cards); TargetCard target = new TargetCard(0, number, Zone.LIBRARY, filter); if (player.choose(Outcome.DrawCard, cardsRemaining, target, source, game)) { Cards pickedCards = new CardsImpl(target.getTargets()); diff --git a/Mage.Sets/src/mage/cards/s/SanityGrinding.java b/Mage.Sets/src/mage/cards/s/SanityGrinding.java index ddbd04d2c34..a46e37ace09 100644 --- a/Mage.Sets/src/mage/cards/s/SanityGrinding.java +++ b/Mage.Sets/src/mage/cards/s/SanityGrinding.java @@ -59,7 +59,7 @@ class SanityGrindingEffect extends OneShotEffect { return false; } Cards revealed = new CardsImpl(); - revealed.addAll(controller.getLibrary().getTopCards(game, 10)); + revealed.addAllCards(controller.getLibrary().getTopCards(game, 10)); controller.revealCards(sourceObject.getIdName(), revealed, game); Player targetOpponent = game.getPlayer(source.getFirstTarget()); if (targetOpponent != null) { diff --git a/Mage.Sets/src/mage/cards/s/SiphonInsight.java b/Mage.Sets/src/mage/cards/s/SiphonInsight.java index 6fb871cc385..b8a688c09b6 100644 --- a/Mage.Sets/src/mage/cards/s/SiphonInsight.java +++ b/Mage.Sets/src/mage/cards/s/SiphonInsight.java @@ -79,7 +79,7 @@ class SiphonInsightEffect extends OneShotEffect { return false; } Cards topCards = new CardsImpl(); - topCards.addAll(opponent.getLibrary().getTopCards(game, 2)); + topCards.addAllCards(opponent.getLibrary().getTopCards(game, 2)); TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCard("card to exile")); controller.choose(outcome, topCards, target, source, game); Card card = game.getCard(target.getFirstTarget()); diff --git a/Mage.Sets/src/mage/cards/s/SphereOfAnnihilation.java b/Mage.Sets/src/mage/cards/s/SphereOfAnnihilation.java index e2da2cbfbd9..f45d7c0fe9b 100644 --- a/Mage.Sets/src/mage/cards/s/SphereOfAnnihilation.java +++ b/Mage.Sets/src/mage/cards/s/SphereOfAnnihilation.java @@ -80,7 +80,7 @@ class SphereOfAnnihilationEffect extends OneShotEffect { int counters = permanent.getCounters(game).getCount(CounterType.VOID); FilterPermanent filter = StaticFilters.FILTER_PERMANENT_CREATURE_OR_PLANESWALKER.copy(); filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, counters + 1)); - cards.addAll(game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)); + cards.addAllCards(game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)); game.getState() .getPlayersInRange(source.getControllerId(), game) .stream() diff --git a/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java b/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java index 7fc28f57770..839c16d713e 100644 --- a/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java +++ b/Mage.Sets/src/mage/cards/s/SwordPointDiplomacy.java @@ -67,7 +67,7 @@ class SwordPointDiplomacyEffect extends OneShotEffect { } int amount = Math.min(controller.getLibrary().size(), 3); CardsImpl cards = new CardsImpl(); - cards.addAll(controller.getLibrary().getTopCards(game, amount)); + cards.addAllCards(controller.getLibrary().getTopCards(game, amount)); controller.revealCards(sourceObject.getIdName(), cards, game); Set cardsList = cards.getCards(game); Cards cardsToHand = new CardsImpl(); diff --git a/Mage.Sets/src/mage/cards/t/TheStoneBrain.java b/Mage.Sets/src/mage/cards/t/TheStoneBrain.java index 46e821f9653..ee49826f1a8 100644 --- a/Mage.Sets/src/mage/cards/t/TheStoneBrain.java +++ b/Mage.Sets/src/mage/cards/t/TheStoneBrain.java @@ -112,7 +112,7 @@ class TheStoneBrainEffect extends OneShotEffect { // cards in Library if (numberOfCardsStillToRemove > 0) { Cards cardsInLibrary = new CardsImpl(); - cardsInLibrary.addAll(targetPlayer.getLibrary().getCards(game)); + cardsInLibrary.addAllCards(targetPlayer.getLibrary().getCards(game)); cardsCount = (cardName.isEmpty() ? 0 : cardsInLibrary.count(filter, game)); filter.setMessage("card named " + cardName + " in the library of " + targetPlayer.getLogName()); TargetCardInLibrary targetLib = new TargetCardInLibrary(0, Math.min(cardsCount, numberOfCardsStillToRemove), filter); diff --git a/Mage.Sets/src/mage/cards/t/ThiefOfSanity.java b/Mage.Sets/src/mage/cards/t/ThiefOfSanity.java index 83825214d95..8c5edb69e3f 100644 --- a/Mage.Sets/src/mage/cards/t/ThiefOfSanity.java +++ b/Mage.Sets/src/mage/cards/t/ThiefOfSanity.java @@ -78,7 +78,7 @@ class ThiefOfSanityEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && damagedPlayer != null && sourceObject != null) { Cards topCards = new CardsImpl(); - topCards.addAll(damagedPlayer.getLibrary().getTopCards(game, 3)); + topCards.addAllCards(damagedPlayer.getLibrary().getTopCards(game, 3)); TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCard("card to exile face down")); if (controller.choose(outcome, topCards, target, source, game)) { Card card = game.getCard(target.getFirstTarget()); diff --git a/Mage.Sets/src/mage/cards/t/ThoughtDistortion.java b/Mage.Sets/src/mage/cards/t/ThoughtDistortion.java index 98ca1755d97..82ff65bb0f8 100644 --- a/Mage.Sets/src/mage/cards/t/ThoughtDistortion.java +++ b/Mage.Sets/src/mage/cards/t/ThoughtDistortion.java @@ -76,7 +76,7 @@ class ThoughtDistortionEffect extends OneShotEffect { } player.revealCards(source, player.getHand(), game); Cards cards = new CardsImpl(player.getHand().getCards(filter, game)); - cards.addAll(player.getGraveyard().getCards(filter, game)); + cards.addAllCards(player.getGraveyard().getCards(filter, game)); return player.moveCards(cards, Zone.EXILED, source, game); } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/t/TriumphOfSaintKatherine.java b/Mage.Sets/src/mage/cards/t/TriumphOfSaintKatherine.java index 4a055be0874..f73c8f85243 100644 --- a/Mage.Sets/src/mage/cards/t/TriumphOfSaintKatherine.java +++ b/Mage.Sets/src/mage/cards/t/TriumphOfSaintKatherine.java @@ -77,7 +77,7 @@ class TriumphOfSaintKatherineEffect extends OneShotEffect { if (card.getZoneChangeCounter(game) == source.getSourceObjectZoneChangeCounter()) { cards.add(card); } - cards.addAll(player.getLibrary().getTopCards(game, 6)); + cards.addAllCards(player.getLibrary().getTopCards(game, 6)); if (cards.isEmpty()) { return false; } diff --git a/Mage.Sets/src/mage/cards/u/UnmooredEgo.java b/Mage.Sets/src/mage/cards/u/UnmooredEgo.java index fe12a4d38a9..4212da5b593 100644 --- a/Mage.Sets/src/mage/cards/u/UnmooredEgo.java +++ b/Mage.Sets/src/mage/cards/u/UnmooredEgo.java @@ -99,7 +99,7 @@ class UnmooredEgoEffect extends OneShotEffect { // cards in Library if (numberOfCardsStillToRemove > 0) { Cards cardsInLibrary = new CardsImpl(); - cardsInLibrary.addAll(targetPlayer.getLibrary().getCards(game)); + cardsInLibrary.addAllCards(targetPlayer.getLibrary().getCards(game)); cardsCount = (cardName.isEmpty() ? 0 : cardsInLibrary.count(filter, game)); filter.setMessage("card named " + cardName + " in the library of " + targetPlayer.getLogName()); TargetCardInLibrary targetLib = new TargetCardInLibrary(0, Math.min(cardsCount, numberOfCardsStillToRemove), filter); diff --git a/Mage.Sets/src/mage/cards/w/WarpWorld.java b/Mage.Sets/src/mage/cards/w/WarpWorld.java index 07eb256b3b8..0b6247112f9 100644 --- a/Mage.Sets/src/mage/cards/w/WarpWorld.java +++ b/Mage.Sets/src/mage/cards/w/WarpWorld.java @@ -106,7 +106,7 @@ class WarpWorldEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null) { CardsImpl cards = new CardsImpl(); - cards.addAll(player.getLibrary().getTopCards(game, permanentsCount.get(player.getId()))); + cards.addAllCards(player.getLibrary().getTopCards(game, permanentsCount.get(player.getId()))); player.revealCards(sourceObject.getIdName() + " (" + player.getName() + ')', cards, game); cardsRevealed.put(player.getId(), cards); } diff --git a/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java b/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java index a60172934dd..a32f13125e6 100644 --- a/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java +++ b/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java @@ -115,7 +115,7 @@ class XenagosExileEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { Cards exiledCards = new CardsImpl(); - exiledCards.addAll(controller.getLibrary().getTopCards(game, 7)); + exiledCards.addAllCards(controller.getLibrary().getTopCards(game, 7)); controller.moveCards(exiledCards, Zone.EXILED, source, game); FilterCard filter = new FilterCard("creature and/or land cards to put onto the battlefield"); filter.add(Predicates.or(CardType.CREATURE.getPredicate(), diff --git a/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java b/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java index 72bcff27305..f398fc12880 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/ExileFromGraveCost.java @@ -88,7 +88,7 @@ public class ExileFromGraveCost extends CostImpl { exiledCards.add(card); } Cards cardsToExile = new CardsImpl(); - cardsToExile.addAll(exiledCards); + cardsToExile.addAllCards(exiledCards); controller.moveCardsToExile( cardsToExile.getCards(game), source, game, true, CardUtil.getExileZoneId(game, source), diff --git a/Mage/src/main/java/mage/abilities/costs/common/ExileFromHandCost.java b/Mage/src/main/java/mage/abilities/costs/common/ExileFromHandCost.java index c68faa3c7b4..cf7ee37955d 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/ExileFromHandCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/ExileFromHandCost.java @@ -63,7 +63,7 @@ public class ExileFromHandCost extends CostImpl { this.cards.add(card); } Cards cardsToExile = new CardsImpl(); - cardsToExile.addAll(cards); + cardsToExile.addAllCards(cards); player.moveCards(cardsToExile, Zone.EXILED, ability, game); paid = true; if (setXFromCMC) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileCardsFromTopOfLibraryTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileCardsFromTopOfLibraryTargetEffect.java index 358d96171c5..1e492430488 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileCardsFromTopOfLibraryTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileCardsFromTopOfLibraryTargetEffect.java @@ -47,7 +47,7 @@ public class ExileCardsFromTopOfLibraryTargetEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); if (targetPlayer != null) { Cards cards = new CardsImpl(); - cards.addAll(targetPlayer.getLibrary().getTopCards(game, amount)); + cards.addAllCards(targetPlayer.getLibrary().getTopCards(game, amount)); return targetPlayer.moveCards(cards, Zone.EXILED, source, game); } return false; diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileGraveyardAllPlayersEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileGraveyardAllPlayersEffect.java index 699b3b79d53..2bd63877bb3 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileGraveyardAllPlayersEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileGraveyardAllPlayersEffect.java @@ -63,7 +63,7 @@ public class ExileGraveyardAllPlayersEffect extends OneShotEffect { } Player player = game.getPlayer(playerId); if (player != null) { - toExile.addAll(player.getGraveyard().getCards(filter, source.getControllerId(), source, game)); + toExile.addAllCards(player.getGraveyard().getCards(filter, source.getControllerId(), source, game)); } } controller.moveCards(toExile, Zone.EXILED, source, game); diff --git a/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java index 7e80342e94f..9c60d04ed4b 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LookLibraryTopCardTargetPlayerEffect.java @@ -70,7 +70,7 @@ public class LookLibraryTopCardTargetPlayerEffect extends OneShotEffect { MageObject sourceObject = game.getObject(source); if (player != null && targetPlayer != null && sourceObject != null) { Cards cards = new CardsImpl(); - cards.addAll(targetPlayer.getLibrary().getTopCards(game, amount)); + cards.addAllCards(targetPlayer.getLibrary().getTopCards(game, amount)); player.lookAtCards(sourceObject.getIdName(), cards, game); if (putToGraveyard) { for (Card card : cards.getCards(game)) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/RevealAndSeparatePilesEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RevealAndSeparatePilesEffect.java index e2e8c98431f..4cb97992c5b 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RevealAndSeparatePilesEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RevealAndSeparatePilesEffect.java @@ -128,7 +128,7 @@ public class RevealAndSeparatePilesEffect extends OneShotEffect { game.informPlayers("Pile 1, going to " + pile1Zone + ": " + (pile1.isEmpty() ? " (none)" : pile1.stream().map(MageObject::getName).collect(Collectors.joining(", ")))); cards.clear(); - cards.addAll(pile1); + cards.addAllCards(pile1); if (pile1Zone == Zone.LIBRARY) { controller.putCardsOnBottomOfLibrary(cards, game, source, anyOrder); } else { @@ -137,7 +137,7 @@ public class RevealAndSeparatePilesEffect extends OneShotEffect { game.informPlayers("Pile 2, going to " + pile2Zone + ": " + (pile2.isEmpty() ? " (none)" : pile2.stream().map(MageObject::getName).collect(Collectors.joining(", ")))); cards.clear(); - cards.addAll(pile2); + cards.addAllCards(pile2); if (pile2Zone == Zone.LIBRARY) { controller.putCardsOnBottomOfLibrary(cards, game, source, anyOrder); } else { diff --git a/Mage/src/main/java/mage/abilities/effects/common/RevealLibraryPutIntoHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RevealLibraryPutIntoHandEffect.java index cd6f088d4aa..4b2173845bc 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RevealLibraryPutIntoHandEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RevealLibraryPutIntoHandEffect.java @@ -66,7 +66,7 @@ public class RevealLibraryPutIntoHandEffect extends OneShotEffect { } CardsImpl cards = new CardsImpl(); - cards.addAll(controller.getLibrary().getTopCards(game, amountCards.calculate(game, source, this))); + cards.addAllCards(controller.getLibrary().getTopCards(game, amountCards.calculate(game, source, this))); controller.revealCards(sourceObject.getIdName(), cards, game); Set cardsList = cards.getCards(game); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java index 9db638c729e..8fd1b73a78a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchTargetGraveyardHandLibraryForCardNameAndExileEffect.java @@ -2,7 +2,6 @@ package mage.abilities.effects.common.search; import mage.abilities.Ability; -import mage.abilities.Mode; import mage.abilities.effects.OneShotEffect; import mage.cards.Cards; import mage.cards.CardsImpl; @@ -84,7 +83,7 @@ public abstract class SearchTargetGraveyardHandLibraryForCardNameAndExileEffect // cards in Library Cards cardsInLibrary = new CardsImpl(); - cardsInLibrary.addAll(targetPlayer.getLibrary().getCards(game)); + cardsInLibrary.addAllCards(targetPlayer.getLibrary().getCards(game)); cardsCount = (cardName.isEmpty() ? 0 : cardsInLibrary.count(filter, game)); filter.setMessage("card named " + cardName + " in the library of " + targetPlayer.getLogName()); TargetCardInLibrary targetLib = new TargetCardInLibrary(0, cardsCount, filter); diff --git a/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java b/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java index 4f95fd81cd0..a06ff838bdc 100644 --- a/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/RippleAbility.java @@ -90,7 +90,7 @@ class RippleEffect extends OneShotEffect { } // reveal top cards from library Cards cards = new CardsImpl(); - cards.addAll(player.getLibrary().getTopCards(game, rippleNumber)); + cards.addAllCards(player.getLibrary().getTopCards(game, rippleNumber)); player.revealCards(sourceObject.getIdName(), cards, game); // determine which card should be rippled diff --git a/Mage/src/main/java/mage/cards/Cards.java b/Mage/src/main/java/mage/cards/Cards.java index d61b1bfea0e..878a0838c84 100644 --- a/Mage/src/main/java/mage/cards/Cards.java +++ b/Mage/src/main/java/mage/cards/Cards.java @@ -13,17 +13,32 @@ import java.util.UUID; public interface Cards extends Set, Serializable { + /** + * Add the passed in card to the set if it's not null. + * + * @param card the card to add + */ void add(Card card); + /** + * Get the Card corresponding to the UUID passed IF it is in the set. + * Returns null if the card is not in the set + * + * @param cardId UUID of the card to get + * @param game the current game + * @return The Card corresponding to the UUID, or null if that UUID is not in the set + */ Card get(UUID cardId, Game game); + /** + * Remove a specific card from the set in a safe manner. + * + * @param card the card to remove from this set + * @return boolean indicating if removing the card was done successfully + */ boolean remove(Card card); - void setOwner(UUID ownerId, Game game); - - void addAll(List createCards); - - void addAll(Set createCards); + void addAllCards(Collection createCards); Set getCards(Game game); @@ -33,6 +48,12 @@ public interface Cards extends Set, Serializable { String getValue(Game game); + /** + * Get a collection view of the unique non-null cards in this set. + * + * @param game The current game + * @return Collection of unique non-null cards. + */ Collection getUniqueCards(Game game); Card getRandom(Game game); @@ -45,7 +66,19 @@ public interface Cards extends Set, Serializable { Cards copy(); + /** + * Remove all cards except those in the provided zone. + * + * @param zone cards from this zone will be kept. + * @param game the ongoing game. + */ void retainZone(Zone zone, Game game); + /** + * Remove all cards which are in the provided zone. + * + * @param zone cards from this zone will be removed. + * @param game The ongoing game. + */ void removeZone(Zone zone, Game game); } diff --git a/Mage/src/main/java/mage/cards/CardsImpl.java b/Mage/src/main/java/mage/cards/CardsImpl.java index 76d843e716b..83de9c09e6a 100644 --- a/Mage/src/main/java/mage/cards/CardsImpl.java +++ b/Mage/src/main/java/mage/cards/CardsImpl.java @@ -32,11 +32,11 @@ public class CardsImpl extends LinkedHashSet implements Cards, Serializabl } public CardsImpl(List cards) { - this.addAll(cards); + this.addAllCards(cards); } public CardsImpl(Set cards) { - this.addAll(cards); + this.addAllCards(cards); } public CardsImpl(Collection cardIds) { @@ -79,24 +79,20 @@ public class CardsImpl extends LinkedHashSet implements Cards, Serializabl return this.remove(card.getId()); } - @Override - public void setOwner(UUID ownerId, Game game) { - this.ownerId = ownerId; - for (UUID card : this) { - game.getCard(card).setOwnerId(ownerId); - } - } - @Override public Card getRandom(Game game) { if (this.isEmpty()) { return null; } - MageObject object = game.getObject(RandomUtil.randomFromCollection(this)); // neccessary if permanent tokens are in the collection - if (object instanceof Card) { - return (Card) object; - } - return null; + + // neccessary if permanent tokens are in the collection + Set cardsForRandomPick = this + .stream().map(uuid -> game.getObject(uuid)) + .filter(Objects::nonNull) + .filter(mageObject -> mageObject instanceof Card) + .collect(Collectors.toSet()); + + return (Card) RandomUtil.randomFromCollection(cardsForRandomPick); } @Override @@ -134,9 +130,14 @@ public class CardsImpl extends LinkedHashSet implements Cards, Serializabl return cards; } + // TODO: Why is this used a completely different implementation than the version without the filter? @Override public Set getCards(FilterCard filter, Game game) { - return stream().map(game::getCard).filter(Objects::nonNull).filter(card -> filter.match(card, game)).collect(Collectors.toSet()); + return stream() + .map(game::getCard) + .filter(Objects::nonNull) + .filter(card -> filter.match(card, game)) + .collect(Collectors.toSet()); } @Override @@ -176,17 +177,7 @@ public class CardsImpl extends LinkedHashSet implements Cards, Serializabl } @Override - public void addAll(List cards) { - if (cards != null) { - cards.stream() - .filter(Objects::nonNull) - .map(MageItem::getId) - .forEach(this::add); - } - } - - @Override - public void addAll(Set cards) { + public void addAllCards(Collection cards) { if (cards != null) { cards.stream() .filter(Objects::nonNull) @@ -197,13 +188,15 @@ public class CardsImpl extends LinkedHashSet implements Cards, Serializabl @Override public Collection getUniqueCards(Game game) { - Map cards = new HashMap<>(); + Map cards = new HashMap<>(this.size()); + for (UUID cardId : this) { Card card = game.getCard(cardId); if (card != null) { cards.putIfAbsent(card.getName(), card); } } + return cards.values(); } diff --git a/Mage/src/main/java/mage/game/combat/Combat.java b/Mage/src/main/java/mage/game/combat/Combat.java index 0f831e5633d..31cc5ccfc52 100644 --- a/Mage/src/main/java/mage/game/combat/Combat.java +++ b/Mage/src/main/java/mage/game/combat/Combat.java @@ -477,8 +477,11 @@ public class Combat implements Serializable, Copyable { // if creature is goaded then we start with assumption that it needs to attack any player mustAttack = true; // Filter out the planeswalkers - defendersForcedToAttack.addAll(defenders.stream().map(game::getPlayer).filter(Objects::nonNull).map(Player::getId).collect(Collectors.toSet())); -// defendersForcedToAttack.addAll(defenders); + defendersForcedToAttack.addAll(defenders.stream() + .map(game::getPlayer) + .filter(Objects::nonNull) + .map(Player::getId) + .collect(Collectors.toSet())); } if (!mustAttack) { continue; diff --git a/Mage/src/main/java/mage/game/command/emblems/KayaTheInexorableEmblem.java b/Mage/src/main/java/mage/game/command/emblems/KayaTheInexorableEmblem.java index 51929b8f0c0..1051fcc4b11 100644 --- a/Mage/src/main/java/mage/game/command/emblems/KayaTheInexorableEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/KayaTheInexorableEmblem.java @@ -94,7 +94,7 @@ class KayaTheInexorableEmblemEffect extends OneShotEffect { cards.addAll(player.getGraveyard()); break; case "Exile": - cards.addAll(game.getExile().getCards(filter, game)); + cards.addAllCards(game.getExile().getCards(filter, game)); break; } return CardUtil.castSpellWithAttributesForFree(player, source, game, cards, filter2); diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 900d44f90e9..5d8fd146ed1 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -5011,7 +5011,7 @@ public abstract class PlayerImpl implements Player, Serializable { } game.informPlayers(getLogName() + " scries " + event.getAmount() + CardUtil.getSourceLogName(game, source)); Cards cards = new CardsImpl(); - cards.addAll(getLibrary().getTopCards(game, event.getAmount())); + cards.addAllCards(getLibrary().getTopCards(game, event.getAmount())); if (!cards.isEmpty()) { TargetCard target = new TargetCard(0, cards.size(), Zone.LIBRARY, new FilterCard("card" + (cards.size() == 1 ? "" : "s") @@ -5039,7 +5039,7 @@ public abstract class PlayerImpl implements Player, Serializable { } game.informPlayers(getLogName() + " surveils " + event.getAmount() + CardUtil.getSourceLogName(game, source)); Cards cards = new CardsImpl(); - cards.addAll(getLibrary().getTopCards(game, event.getAmount())); + cards.addAllCards(getLibrary().getTopCards(game, event.getAmount())); if (!cards.isEmpty()) { TargetCard target = new TargetCard(0, cards.size(), Zone.LIBRARY, new FilterCard("card " + (cards.size() == 1 ? "" : "s")