From 6530b404c8b4ed6c225e7c6d8cc31665f5166fe4 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 29 Jul 2017 20:13:48 +0200 Subject: [PATCH 1/6] * Some Aftermath fixes. --- .../test/cards/single/akh/DuskDawnTest.java | 5 +- .../abilities/keyword/AftermathAbility.java | 79 ++++++++++++++++++- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/DuskDawnTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/DuskDawnTest.java index 067f5c040d5..d988ff98559 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/DuskDawnTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/akh/DuskDawnTest.java @@ -46,6 +46,10 @@ public class DuskDawnTest extends CardTestPlayerBase { @Test public void testCastDawnFromGraveyard() { + // Dusk + // Destroy all creatures with power 3 or greater. + // Dawn + // Return all creature cards with power less than or equal to 2 from your graveyard to your hand. addCard(Zone.GRAVEYARD, playerA, "Dusk // Dawn"); addCard(Zone.BATTLEFIELD, playerA, "Plains", 5); addCard(Zone.GRAVEYARD, playerA, "Devoted Hero"); @@ -85,5 +89,4 @@ public class DuskDawnTest extends CardTestPlayerBase { assertGraveyardCount(playerA, "Devoted Hero", 1); } - } diff --git a/Mage/src/main/java/mage/abilities/keyword/AftermathAbility.java b/Mage/src/main/java/mage/abilities/keyword/AftermathAbility.java index 35b374f513c..cd246dd20a8 100644 --- a/Mage/src/main/java/mage/abilities/keyword/AftermathAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/AftermathAbility.java @@ -31,11 +31,14 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.*; -import mage.abilities.effects.common.ExileSpellEffect; import mage.cards.Card; +import mage.cards.SplitCardHalf; import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; +import mage.game.events.ZoneChangeEvent; +import mage.game.stack.Spell; +import mage.players.Player; /** * Aftermath @@ -52,7 +55,7 @@ public class AftermathAbility extends SimpleStaticAbility { public AftermathAbility() { super(Zone.ALL, new AftermathCastFromGraveyard()); addEffect(new AftermathCantCastFromHand()); - addEffect(ExileSpellEffect.getInstance()); + addEffect(new AftermathExileAsResolvesFromGraveyard()); } public AftermathAbility(final AftermathAbility ability) { @@ -141,3 +144,75 @@ class AftermathCantCastFromHand extends ContinuousRuleModifyingEffectImpl { return false; } } + +class AftermathExileAsResolvesFromGraveyard extends ReplacementEffectImpl { + + AftermathExileAsResolvesFromGraveyard() { + super(Duration.WhileOnStack, Outcome.Detriment); + this.staticText = "Exile it afterwards."; + } + + AftermathExileAsResolvesFromGraveyard(AftermathExileAsResolvesFromGraveyard effect) { + super(effect); + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + + @Override + public boolean applies(GameEvent evt, Ability source, Game game) { + ZoneChangeEvent event = (ZoneChangeEvent) evt; + if (event.getFromZone() == Zone.STACK && event.getToZone() != Zone.EXILED) { + // Moving something from stack to somewhere else + + // Get the source id, getting the whole split card's ID, because + // that's the card that is changing zones in the event, but + // source.getSourceId is only the split card half. + // If branch so that we also support putting Aftermath on + // non-split cards for... whatever reason, in case somebody + // wants to do that in the future. + UUID sourceId = source.getSourceId(); + Card sourceCard = game.getCard(source.getSourceId()); + if (sourceCard != null && sourceCard instanceof SplitCardHalf) { + sourceCard = ((SplitCardHalf) sourceCard).getParentCard(); + sourceId = sourceCard.getId(); + } + + if (event.getTargetId() == sourceId) { + // Moving this spell from stack to yard + Spell spell = game.getStack().getSpell(source.getSourceId()); + if (spell != null && spell.getFromZone() == Zone.GRAVEYARD) { + // And this spell was cast from the graveyard, so we need to exile it + return true; + } + } + } + return false; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + UUID sourceId = source.getSourceId(); + Card sourceCard = game.getCard(source.getSourceId()); + if (sourceCard != null && sourceCard instanceof SplitCardHalf) { + sourceCard = ((SplitCardHalf) sourceCard).getParentCard(); + sourceId = sourceCard.getId(); + } + + if (sourceCard != null) { + Player player = game.getPlayer(sourceCard.getOwnerId()); + if (player != null) { + return player.moveCardToExileWithInfo(sourceCard, null, "", sourceId, game, ((ZoneChangeEvent) event).getFromZone(), true); + } + } + return false; + } + + @Override + public AftermathExileAsResolvesFromGraveyard copy() { + return new AftermathExileAsResolvesFromGraveyard(this); + } + +} From 7ba051871d631531c9545cd3aabbb1908d04fdc4 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 29 Jul 2017 20:22:07 +0200 Subject: [PATCH 2/6] * Fixed minor bug that the tables list was not cleared if no active table did exist. --- .../java/mage/client/table/TablesPanel.form | 2 +- .../java/mage/client/table/TablesPanel.java | 69 +++++++++---------- 2 files changed, 34 insertions(+), 37 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form index 30e1a8e2284..b764e017700 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form @@ -39,7 +39,7 @@ - + diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index d9aad35135b..4e14af92622 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -33,12 +33,28 @@ */ package mage.client.table; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.beans.PropertyVetoException; +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import javax.swing.*; +import javax.swing.table.AbstractTableModel; import mage.cards.decks.importer.DeckImporterUtil; import mage.client.MageFrame; import mage.client.SessionHandler; import mage.client.chat.ChatPanelBasic; import mage.client.components.MageComponents; import mage.client.dialog.*; +import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_ORDER; +import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_WIDTH; +import static mage.client.table.TablesPanel.PASSWORDED; import mage.client.util.ButtonColumn; import mage.client.util.GUISizeHelper; import mage.client.util.IgnoreList; @@ -55,25 +71,6 @@ import mage.view.TableView; import mage.view.UserRequestMessage; import org.apache.log4j.Logger; -import javax.swing.*; -import javax.swing.table.AbstractTableModel; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.beans.PropertyVetoException; -import java.io.File; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.List; -import java.util.concurrent.CancellationException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_ORDER; -import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_WIDTH; -import static mage.client.table.TablesPanel.PASSWORDED; - /** * * @author BetaSteward_at_googlemail.com @@ -94,7 +91,7 @@ public class TablesPanel extends javax.swing.JPanel { private NewTableDialog newTableDialog; private NewTournamentDialog newTournamentDialog; private final GameChooser gameChooser; - private List messages; + private java.util.List messages; private int currentMessage; private final MageTableRowSorter activeTablesSorter; @@ -231,7 +228,7 @@ public class TablesPanel extends javax.swing.JPanel { String action = (String) matchesModel.getValueAt(modelRow, MatchesTableModel.ACTION_COLUMN); switch (action) { case "Replay": - List gameList = matchesModel.getListofGames(modelRow); + java.util.List gameList = matchesModel.getListofGames(modelRow); if (gameList != null && !gameList.isEmpty()) { if (gameList.size() == 1) { SessionHandler.replayGame(gameList.get(0)); @@ -486,7 +483,7 @@ public class TablesPanel extends javax.swing.JPanel { protected void reloadMessages() { // reload server messages - List serverMessages = SessionHandler.getServerMessages(); + java.util.List serverMessages = SessionHandler.getServerMessages(); synchronized (this) { this.messages = serverMessages; this.currentMessage = 0; @@ -525,7 +522,7 @@ public class TablesPanel extends javax.swing.JPanel { public void setTableFilter() { // state - List> stateFilterList = new ArrayList<>(); + java.util.List> stateFilterList = new ArrayList<>(); if (btnStateWaiting.isSelected()) { stateFilterList.add(RowFilter.regexFilter("Waiting", TableTableModel.COLUMN_STATUS)); } @@ -534,7 +531,7 @@ public class TablesPanel extends javax.swing.JPanel { } // type - List> typeFilterList = new ArrayList<>(); + java.util.List> typeFilterList = new ArrayList<>(); if (btnTypeMatch.isSelected()) { typeFilterList.add(RowFilter.regexFilter("Two|Commander|Free|Tiny|Momir", TableTableModel.COLUMN_GAME_TYPE)); } @@ -546,7 +543,7 @@ public class TablesPanel extends javax.swing.JPanel { } // format - List> formatFilterList = new ArrayList<>(); + java.util.List> formatFilterList = new ArrayList<>(); if (btnFormatBlock.isSelected()) { formatFilterList.add(RowFilter.regexFilter("^Constructed.*Block", TableTableModel.COLUMN_DECK_TYPE)); } @@ -575,7 +572,7 @@ public class TablesPanel extends javax.swing.JPanel { formatFilterList.add(RowFilter.regexFilter("^Momir Basic|^Constructed - Pauper|^Constructed - Frontier|^Constructed - Extended|^Constructed - Eternal|^Constructed - Historical|^Constructed - Super|^Constructed - Freeform|^Australian Highlander|^Canadian Highlander|^Constructed - Old", TableTableModel.COLUMN_DECK_TYPE)); } - List> skillFilterList = new ArrayList<>(); + java.util.List> skillFilterList = new ArrayList<>(); if (btnSkillBeginner.isSelected()) { skillFilterList.add(RowFilter.regexFilter(SkillLevel.BEGINNER.toString(), TableTableModel.COLUMN_SKILL)); } @@ -586,7 +583,7 @@ public class TablesPanel extends javax.swing.JPanel { skillFilterList.add(RowFilter.regexFilter(SkillLevel.SERIOUS.toString(), TableTableModel.COLUMN_SKILL)); } - List> ratingFilterList = new ArrayList<>(); + java.util.List> ratingFilterList = new ArrayList<>(); if (btnRated.isSelected()) { ratingFilterList.add(RowFilter.regexFilter("^Rated", TableTableModel.COLUMN_RATING)); } @@ -595,7 +592,7 @@ public class TablesPanel extends javax.swing.JPanel { } // Password - List> passwordFilterList = new ArrayList<>(); + java.util.List> passwordFilterList = new ArrayList<>(); if (btnOpen.isSelected()) { passwordFilterList.add(RowFilter.regexFilter("^$", TableTableModel.COLUMN_PASSWORD)); } @@ -604,7 +601,7 @@ public class TablesPanel extends javax.swing.JPanel { } // Hide games of ignored players - List> ignoreListFilterList = new ArrayList<>(); + java.util.List> ignoreListFilterList = new ArrayList<>(); String serverAddress = SessionHandler.getSession().getServerHostname().orElseGet(() -> ""); final Set ignoreListCopy = IgnoreList.ignoreList(serverAddress); if (!ignoreListCopy.isEmpty()) { @@ -622,7 +619,7 @@ public class TablesPanel extends javax.swing.JPanel { || passwordFilterList.isEmpty()) { // no selection activeTablesSorter.setRowFilter(RowFilter.regexFilter("Nothing", TableTableModel.COLUMN_SKILL)); } else { - List> filterList = new ArrayList<>(); + java.util.List> filterList = new ArrayList<>(); if (stateFilterList.size() > 1) { filterList.add(RowFilter.orFilter(stateFilterList)); @@ -1418,7 +1415,7 @@ class UpdateTablesTask extends SwingWorker> { protected Void doInBackground() throws Exception { while (!isCancelled()) { Collection tables = SessionHandler.getTables(roomId); - if (!tables.isEmpty()) { + if (tables != null) { this.publish(tables); } TimeUnit.SECONDS.sleep(3); @@ -1427,7 +1424,7 @@ class UpdateTablesTask extends SwingWorker> { } @Override - protected void process(List> view) { + protected void process(java.util.List> view) { panel.updateTables(view.get(0)); count++; if (count > 60) { @@ -1471,7 +1468,7 @@ class UpdatePlayersTask extends SwingWorker> { } @Override - protected void process(List> roomUserInfo) { + protected void process(java.util.List> roomUserInfo) { chat.setRoomUserInfo(roomUserInfo); } @@ -1549,7 +1546,7 @@ class MatchesTableModel extends AbstractTableModel { return ""; } - public List getListofGames(int row) { + public java.util.List getListofGames(int row) { return matches[row].getGames(); } @@ -1613,7 +1610,7 @@ class UpdateMatchesTask extends SwingWorker> { } @Override - protected void process(List> view) { + protected void process(java.util.List> view) { panel.updateMatches(view.get(0)); } @@ -1635,7 +1632,7 @@ class GameChooser extends JPopupMenu { } - public void show(List games, Point p) { + public void show(java.util.List games, Point p) { if (p == null) { return; } From fe2ee5dfec86919b9b25fc6b3990cf40958710f3 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 29 Jul 2017 20:35:16 +0200 Subject: [PATCH 3/6] Xmage 1.4.25V0 --- Mage.Client/pom.xml | 2 +- Mage.Common/pom.xml | 2 +- .../src/main/java/mage/utils/MageVersion.java | 4 ++-- Mage.Plugins/Mage.Counter.Plugin/pom.xml | 2 +- Mage.Plugins/pom.xml | 2 +- Mage.Server.Console/pom.xml | 2 +- Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml | 2 +- Mage.Server.Plugins/Mage.Deck.Limited/pom.xml | 2 +- .../Mage.Game.CanadianHighlanderDuel/pom.xml | 2 +- Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml | 2 +- .../Mage.Game.CommanderFreeForAll/pom.xml | 2 +- Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml | 2 +- Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml | 2 +- .../Mage.Game.TinyLeadersDuel/pom.xml | 2 +- Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.AI/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml | 2 +- Mage.Server.Plugins/Mage.Player.Human/pom.xml | 2 +- .../Mage.Tournament.BoosterDraft/pom.xml | 2 +- .../Mage.Tournament.Constructed/pom.xml | 2 +- Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml | 2 +- Mage.Server.Plugins/pom.xml | 2 +- Mage.Server/pom.xml | 2 +- Mage.Sets/pom.xml | 2 +- Mage.Stats/pom.xml | 2 +- Mage.Tests/pom.xml | 2 +- Mage.Updater/pom.xml | 2 +- Mage.Verify/pom.xml | 2 +- Mage/pom.xml | 2 +- .../java/mage/cards/repository/CardRepository.java | 13 ++++--------- pom.xml | 4 ++-- 34 files changed, 39 insertions(+), 44 deletions(-) diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index f2de6ebcf85..0ea1a89ba60 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 org.mage diff --git a/Mage.Common/pom.xml b/Mage.Common/pom.xml index ad208f35978..128e85256ba 100644 --- a/Mage.Common/pom.xml +++ b/Mage.Common/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 mage-common diff --git a/Mage.Common/src/main/java/mage/utils/MageVersion.java b/Mage.Common/src/main/java/mage/utils/MageVersion.java index 7c567df7b2b..867e0d7a849 100644 --- a/Mage.Common/src/main/java/mage/utils/MageVersion.java +++ b/Mage.Common/src/main/java/mage/utils/MageVersion.java @@ -40,8 +40,8 @@ public class MageVersion implements Serializable, Comparable { */ public final static int MAGE_VERSION_MAJOR = 1; public final static int MAGE_VERSION_MINOR = 4; - public final static int MAGE_VERSION_PATCH = 24; - public final static String MAGE_VERSION_MINOR_PATCH = "V3"; + public final static int MAGE_VERSION_PATCH = 25; + public final static String MAGE_VERSION_MINOR_PATCH = "V0"; public final static String MAGE_VERSION_INFO = ""; private final int major; diff --git a/Mage.Plugins/Mage.Counter.Plugin/pom.xml b/Mage.Plugins/Mage.Counter.Plugin/pom.xml index d285273f7f6..c0caea8e84c 100644 --- a/Mage.Plugins/Mage.Counter.Plugin/pom.xml +++ b/Mage.Plugins/Mage.Counter.Plugin/pom.xml @@ -7,7 +7,7 @@ org.mage mage-plugins - 1.4.24 + 1.4.25 mage-counter-plugin diff --git a/Mage.Plugins/pom.xml b/Mage.Plugins/pom.xml index 8562bbb68b6..a839dd87eb1 100644 --- a/Mage.Plugins/pom.xml +++ b/Mage.Plugins/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 mage-plugins diff --git a/Mage.Server.Console/pom.xml b/Mage.Server.Console/pom.xml index f5d0506f72a..463763841ad 100644 --- a/Mage.Server.Console/pom.xml +++ b/Mage.Server.Console/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 org.mage diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml index cf44137297a..ce6ba038aa9 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-deck-constructed diff --git a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml index 2bf3742952a..d2faa06b074 100644 --- a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml +++ b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-deck-limited diff --git a/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml index d654d973e66..800112bc85e 100644 --- a/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-game-canadianhighlanderduel diff --git a/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml index 12b6f88e8a8..9d7aed28fae 100644 --- a/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-game-commanderduel diff --git a/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml index ab523a9fe1a..cad0fd770bc 100644 --- a/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml @@ -6,7 +6,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-game-commanderfreeforall diff --git a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml index 6c33316cc92..e0908806aeb 100644 --- a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-game-freeforall diff --git a/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml index b17f01f4dc1..bd5d6b34e4c 100644 --- a/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.MomirDuel/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-game-momirduel diff --git a/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml index 4df4d733b14..84942c56c10 100644 --- a/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-game-tinyleadersduel diff --git a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml index 0a80e4c370b..ca274fb980b 100644 --- a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml +++ b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-game-twoplayerduel diff --git a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml index 684eacda572..75089fbbf06 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-player-ai-draftbot diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml b/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml index 8a1739ee54c..80968f19660 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-player-ai-ma diff --git a/Mage.Server.Plugins/Mage.Player.AI/pom.xml b/Mage.Server.Plugins/Mage.Player.AI/pom.xml index 11d0f5e1a9c..fdfa27f9baf 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.AI/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-player-ai diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml b/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml index 0018d9200f5..73c1a33e593 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-player-ai-mcts diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml index f846f475ff7..0f7bb70257e 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-player-aiminimax diff --git a/Mage.Server.Plugins/Mage.Player.Human/pom.xml b/Mage.Server.Plugins/Mage.Player.Human/pom.xml index e2ee8c6cb06..dcfdc05152c 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/pom.xml +++ b/Mage.Server.Plugins/Mage.Player.Human/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-player-human diff --git a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml index 1a23ebb769b..6dc1d6a64ce 100644 --- a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml +++ b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-tournament-boosterdraft diff --git a/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml b/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml index ed1fe7838e5..e9ce701b75c 100644 --- a/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml +++ b/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-tournament-constructed diff --git a/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml b/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml index 247a8bddff5..08aa67f7b9b 100644 --- a/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml +++ b/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml @@ -7,7 +7,7 @@ org.mage mage-server-plugins - 1.4.24 + 1.4.25 mage-tournament-sealed diff --git a/Mage.Server.Plugins/pom.xml b/Mage.Server.Plugins/pom.xml index 3573e2a2127..fd60041fdea 100644 --- a/Mage.Server.Plugins/pom.xml +++ b/Mage.Server.Plugins/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 mage-server-plugins diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml index b206132209c..0edcb6ec86f 100644 --- a/Mage.Server/pom.xml +++ b/Mage.Server/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 mage-server diff --git a/Mage.Sets/pom.xml b/Mage.Sets/pom.xml index 0d466cc360a..e1d245474af 100644 --- a/Mage.Sets/pom.xml +++ b/Mage.Sets/pom.xml @@ -7,7 +7,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 org.mage diff --git a/Mage.Stats/pom.xml b/Mage.Stats/pom.xml index 172a6cc92d3..0e965ced727 100644 --- a/Mage.Stats/pom.xml +++ b/Mage.Stats/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 org.mage diff --git a/Mage.Tests/pom.xml b/Mage.Tests/pom.xml index 7a119919a37..70539614ea3 100644 --- a/Mage.Tests/pom.xml +++ b/Mage.Tests/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 mage-tests diff --git a/Mage.Updater/pom.xml b/Mage.Updater/pom.xml index ae6f7107bd1..cdf272ca1e7 100644 --- a/Mage.Updater/pom.xml +++ b/Mage.Updater/pom.xml @@ -5,7 +5,7 @@ mage-root org.mage - 1.4.24 + 1.4.25 4.0.0 diff --git a/Mage.Verify/pom.xml b/Mage.Verify/pom.xml index e25e894db3d..97b59fb45f6 100644 --- a/Mage.Verify/pom.xml +++ b/Mage.Verify/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 mage-verify diff --git a/Mage/pom.xml b/Mage/pom.xml index 178d3afc6b0..c5bfd9f408c 100644 --- a/Mage/pom.xml +++ b/Mage/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 mage diff --git a/Mage/src/main/java/mage/cards/repository/CardRepository.java b/Mage/src/main/java/mage/cards/repository/CardRepository.java index d2fa7275ce4..cde82924484 100644 --- a/Mage/src/main/java/mage/cards/repository/CardRepository.java +++ b/Mage/src/main/java/mage/cards/repository/CardRepository.java @@ -37,16 +37,15 @@ import com.j256.ormlite.stmt.Where; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.support.DatabaseConnection; import com.j256.ormlite.table.TableUtils; +import java.io.File; +import java.sql.SQLException; +import java.util.*; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetType; import mage.util.RandomUtil; import org.apache.log4j.Logger; -import java.io.File; -import java.sql.SQLException; -import java.util.*; - /** * @author North */ @@ -59,7 +58,7 @@ public enum CardRepository { // raise this if db structure was changed private static final long CARD_DB_VERSION = 51; // raise this if new cards were added to the server - private static final long CARD_CONTENT_VERSION = 85; + private static final long CARD_CONTENT_VERSION = 86; private final TreeSet landTypes = new TreeSet<>(); private Dao cardDao; private Set classNames; @@ -274,10 +273,6 @@ public enum CardRepository { return names; } - - - - public CardInfo findCard(String setCode, String cardNumber) { try { QueryBuilder queryBuilder = cardDao.queryBuilder(); diff --git a/pom.xml b/pom.xml index 7f5fd18e3f6..e1855fef7b5 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.mage mage-root - 1.4.24 + 1.4.25 pom Mage Root Mage Root POM @@ -84,7 +84,7 @@ - 1.4.24 + 1.4.25 UTF-8 From 89ac77e28a3f1a0726286dc9476aff37ba0ab925 Mon Sep 17 00:00:00 2001 From: igoudt Date: Sat, 29 Jul 2017 23:55:11 +0200 Subject: [PATCH 4/6] clean ups, talk to interface rather than implementation --- Mage.Sets/src/mage/cards/a/Aetherspouts.java | 12 +++--- .../src/mage/cards/a/ArsenalThresher.java | 8 ++-- Mage.Sets/src/mage/cards/b/Balance.java | 8 ++-- Mage.Sets/src/mage/cards/b/BlastfireBolt.java | 8 ++-- .../src/mage/cards/b/BorderlandExplorer.java | 5 ++- .../src/mage/cards/c/CallToTheKindred.java | 8 ++-- .../src/mage/cards/c/CapriciousEfreet.java | 8 ++-- .../src/mage/cards/c/CarpetOfFlowers.java | 8 ++-- Mage.Sets/src/mage/cards/c/Counterlash.java | 8 ++-- Mage.Sets/src/mage/cards/c/CracklingDoom.java | 8 ++-- .../src/mage/cards/c/CryptOfTheEternals.java | 8 ++-- .../src/mage/cards/c/CrypticGateway.java | 9 ++-- Mage.Sets/src/mage/cards/c/CustodiSquire.java | 8 ++-- Mage.Sets/src/mage/cards/d/DeadlyTempest.java | 12 +++--- .../src/mage/cards/d/DescentOfTheDragons.java | 8 ++-- Mage.Sets/src/mage/cards/d/DroidFactory.java | 8 ++-- .../src/mage/cards/d/DwarvenArmorer.java | 8 ++-- .../src/mage/cards/e/EmptyShrineKannushi.java | 8 ++-- .../src/mage/cards/e/EndHostilities.java | 8 ++-- .../src/mage/cards/e/ErdwalIlluminator.java | 8 ++-- .../src/mage/cards/e/EyeOfSingularity.java | 14 ++++--- Mage.Sets/src/mage/cards/f/FaithsReward.java | 8 ++-- .../src/mage/cards/f/FalkenrathGorger.java | 12 +++--- Mage.Sets/src/mage/cards/f/Fatespinner.java | 8 ++-- Mage.Sets/src/mage/cards/f/FiveAlarmFire.java | 8 ++-- .../src/mage/cards/f/FlowstoneSculpture.java | 8 ++-- .../src/mage/cards/f/ForgottenAncient.java | 8 ++-- .../src/mage/cards/g/GazeOfTheGorgon.java | 8 ++-- .../src/mage/cards/g/GhastlyConscription.java | 5 ++- .../src/mage/cards/h/HarmonicConvergence.java | 7 +--- .../src/mage/cards/h/HedonistsTrove.java | 14 +++---- .../mage/cards/i/IndomitableCreativity.java | 16 +++----- Mage.Sets/src/mage/cards/j/JediEnclave.java | 8 ++-- Mage.Sets/src/mage/cards/j/JodahsAvenger.java | 15 +++---- Mage.Sets/src/mage/cards/j/JungleVillage.java | 8 ++-- Mage.Sets/src/mage/cards/k/KillingWave.java | 10 ++--- .../mage/cards/k/KynaiosAndTiroOfMeletis.java | 10 +++-- Mage.Sets/src/mage/cards/l/LunarAvenger.java | 8 ++-- .../src/mage/cards/m/MaintenanceDroid.java | 8 ++-- Mage.Sets/src/mage/cards/m/MarchOfSouls.java | 10 +++-- Mage.Sets/src/mage/cards/m/MartyrsBond.java | 9 ++-- Mage.Sets/src/mage/cards/m/MenacingOgre.java | 8 ++-- Mage.Sets/src/mage/cards/m/Mindblaze.java | 8 ++-- .../src/mage/cards/m/MitoticManipulation.java | 10 +++-- .../src/mage/cards/m/MultiformWonder.java | 15 +++---- .../mage/cards/n/NecromanticSelection.java | 14 +++---- .../mage/cards/n/NicolBolasGodPharaoh.java | 21 ++++------ .../src/mage/cards/n/NoRestForTheWicked.java | 14 +++---- .../src/mage/cards/n/NyleasPresence.java | 41 ++++++++----------- .../src/mage/cards/o/OrzhovAdvokist.java | 12 +++--- Mage.Sets/src/mage/cards/p/PlanarOverlay.java | 11 ++--- Mage.Sets/src/mage/cards/p/PrismaticOmen.java | 37 +++++++---------- .../src/mage/cards/r/RallyTheAncestors.java | 10 +++-- Mage.Sets/src/mage/cards/r/ReapIntellect.java | 15 +++---- .../src/mage/cards/r/ReinsOfTheVinesteed.java | 8 ++-- .../src/mage/cards/r/RestoreBalance.java | 14 +++---- Mage.Sets/src/mage/cards/r/RiteOfRuin.java | 9 ++-- .../src/mage/cards/s/SavageSummoning.java | 19 +++------ Mage.Sets/src/mage/cards/s/ScytheSpecter.java | 10 +++-- Mage.Sets/src/mage/cards/s/SecondSunrise.java | 8 ++-- Mage.Sets/src/mage/cards/s/Shapeshifter.java | 24 +++++------ .../src/mage/cards/s/SharedAnimosity.java | 8 ++-- .../src/mage/cards/s/SilenceTheBelievers.java | 8 ++-- Mage.Sets/src/mage/cards/s/SithEvoker.java | 8 ++-- Mage.Sets/src/mage/cards/s/SithRuins.java | 8 ++-- Mage.Sets/src/mage/cards/s/SoulOfRavnica.java | 8 ++-- .../src/mage/cards/s/SpiritOfResistance.java | 8 ++-- .../mage/cards/s/SpiritOfTheLabyrinth.java | 8 ++-- Mage.Sets/src/mage/cards/s/StorageMatrix.java | 8 ++-- .../src/mage/cards/s/SunderingTitan.java | 11 ++--- .../mage/cards/t/TamiyoFieldResearcher.java | 9 ++-- Mage.Sets/src/mage/cards/t/Tarmogoyf.java | 15 +++---- Mage.Sets/src/mage/cards/t/TeferisRealm.java | 8 ++-- Mage.Sets/src/mage/cards/t/Terastodon.java | 10 +++-- .../src/mage/cards/t/ThatcherRevolt.java | 8 ++-- Mage.Sets/src/mage/cards/t/ThranTurbine.java | 8 ++-- Mage.Sets/src/mage/cards/t/Turnabout.java | 10 +++-- Mage.Sets/src/mage/cards/t/Twinflame.java | 8 ++-- .../src/mage/cards/t/TymnaTheWeaver.java | 10 ++--- Mage.Sets/src/mage/cards/u/UbaMask.java | 15 ++----- .../src/mage/cards/u/UnderworldSlums.java | 8 ++-- Mage.Sets/src/mage/cards/u/UrzasMiter.java | 8 ++-- Mage.Sets/src/mage/cards/v/VileRedeemer.java | 8 ++-- .../src/mage/cards/v/VoraciousDragon.java | 7 ++-- Mage.Sets/src/mage/cards/w/WakeTheDead.java | 8 ++-- Mage.Sets/src/mage/cards/w/WitchbaneOrb.java | 8 ++-- Mage.Sets/src/mage/cards/w/WorldQueller.java | 9 ++-- .../src/main/java/mage/constants/SubType.java | 7 ++-- .../main/java/mage/filter/StaticFilters.java | 23 +++++++++++ Mage/src/main/java/mage/game/GameImpl.java | 28 +++---------- 90 files changed, 509 insertions(+), 457 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/Aetherspouts.java b/Mage.Sets/src/mage/cards/a/Aetherspouts.java index f4d11cda396..3e8466c2064 100644 --- a/Mage.Sets/src/mage/cards/a/Aetherspouts.java +++ b/Mage.Sets/src/mage/cards/a/Aetherspouts.java @@ -27,8 +27,6 @@ */ package mage.cards.a; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.*; @@ -44,6 +42,10 @@ import mage.players.Player; import mage.players.PlayerList; import mage.target.TargetCard; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -102,8 +104,8 @@ class AetherspoutsEffect extends OneShotEffect { Player player = game.getPlayer(game.getActivePlayerId()); Player activePlayer = player; do { - ArrayList permanentsToTop = new ArrayList<>(); - ArrayList permanentsToBottom = new ArrayList<>(); + List permanentsToTop = new ArrayList<>(); + List permanentsToBottom = new ArrayList<>(); for (Permanent permanent:game.getState().getBattlefield().getActivePermanents(new FilterAttackingCreature(), player.getId(), source.getSourceId(), game)) { if (permanent.getOwnerId().equals(player.getId())) { if (player.chooseUse(outcome, "Put " + permanent.getLogName() + " to the top? (else it goes to bottom)", source, game)) { @@ -117,7 +119,7 @@ class AetherspoutsEffect extends OneShotEffect { } // cards to top Cards cards = new CardsImpl(); - ArrayList toLibrary = new ArrayList<>(); + List toLibrary = new ArrayList<>(); for (Permanent permanent: permanentsToTop) { if (permanent instanceof PermanentToken) { toLibrary.add(permanent); diff --git a/Mage.Sets/src/mage/cards/a/ArsenalThresher.java b/Mage.Sets/src/mage/cards/a/ArsenalThresher.java index 925ac2da937..4ec764a971c 100644 --- a/Mage.Sets/src/mage/cards/a/ArsenalThresher.java +++ b/Mage.Sets/src/mage/cards/a/ArsenalThresher.java @@ -27,8 +27,6 @@ */ package mage.cards.a; -import java.util.ArrayList; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AsEntersBattlefieldAbility; @@ -48,6 +46,10 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCardInHand; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -110,7 +112,7 @@ class ArsenalThresherEffect extends OneShotEffect { } if (arsenalThresher != null) { controller.revealCards(arsenalThresher.getIdName(), cards, game); - ArrayList appliedEffects = (ArrayList) this.getValue("appliedEffects"); // the basic event is the EntersBattlefieldEvent, so use already applied replacement effects from that event + List appliedEffects = (ArrayList) this.getValue("appliedEffects"); // the basic event is the EntersBattlefieldEvent, so use already applied replacement effects from that event arsenalThresher.addCounters(CounterType.P1P1.createInstance(cards.size()), source, game, appliedEffects); } } diff --git a/Mage.Sets/src/mage/cards/b/Balance.java b/Mage.Sets/src/mage/cards/b/Balance.java index f44a8a49f29..8bb7ed6ded1 100644 --- a/Mage.Sets/src/mage/cards/b/Balance.java +++ b/Mage.Sets/src/mage/cards/b/Balance.java @@ -27,8 +27,6 @@ */ package mage.cards.b; -import java.util.HashMap; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.*; @@ -43,6 +41,10 @@ import mage.players.Player; import mage.target.common.TargetCardInHand; import mage.target.common.TargetControlledPermanent; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author emerald000 @@ -156,7 +158,7 @@ class BalanceEffect extends OneShotEffect { //Cards in hand int minCard = Integer.MAX_VALUE; - HashMap cardsToDiscard = new HashMap<>(2); + Map cardsToDiscard = new HashMap<>(2); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/cards/b/BlastfireBolt.java b/Mage.Sets/src/mage/cards/b/BlastfireBolt.java index ea0ce6df855..723e0243687 100644 --- a/Mage.Sets/src/mage/cards/b/BlastfireBolt.java +++ b/Mage.Sets/src/mage/cards/b/BlastfireBolt.java @@ -27,8 +27,6 @@ */ package mage.cards.b; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -41,6 +39,10 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Quercitron @@ -89,7 +91,7 @@ class DestroyAllAttachedEquipmentEffect extends OneShotEffect { if (controller != null) { Permanent target = game.getPermanent(source.getFirstTarget()); if (target != null) { - ArrayList attachments = new ArrayList<>(target.getAttachments()); + List attachments = new ArrayList<>(target.getAttachments()); for (UUID attachmentId : attachments) { Permanent attachment = game.getPermanent(attachmentId); if (attachment != null && attachment.getSubtype(game).contains("Equipment")) { diff --git a/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java b/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java index c45fe1d49ad..45d4e97e353 100644 --- a/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java +++ b/Mage.Sets/src/mage/cards/b/BorderlandExplorer.java @@ -44,6 +44,7 @@ import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetDiscard; import java.util.HashMap; +import java.util.Map; import java.util.UUID; /** @@ -95,9 +96,9 @@ class BorderlandExplorerEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); // Store for each player the cards to discard, that's important because all discard shall happen at the same time - HashMap cardsToDiscard = new HashMap<>(); + Map cardsToDiscard = new HashMap<>(); // Store for each player the lands to reveal, that's important because all reveals shall happen at the same time - HashMap cardsToReveal = new HashMap<>(); + Map cardsToReveal = new HashMap<>(); if (controller != null) { // choose cards to discard for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { diff --git a/Mage.Sets/src/mage/cards/c/CallToTheKindred.java b/Mage.Sets/src/mage/cards/c/CallToTheKindred.java index 7e2d3a616ec..84aefe9db62 100644 --- a/Mage.Sets/src/mage/cards/c/CallToTheKindred.java +++ b/Mage.Sets/src/mage/cards/c/CallToTheKindred.java @@ -27,8 +27,6 @@ */ package mage.cards.c; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.OnEventTriggeredAbility; @@ -53,6 +51,10 @@ import mage.target.TargetCard; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author North @@ -122,7 +124,7 @@ class CallToTheKindredEffect extends OneShotEffect { if (!creature.getAbilities().contains(ChangelingAbility.getInstance())) { StringBuilder sb = new StringBuilder("creature card with at least one subtype from: "); - ArrayList> subtypes = new ArrayList<>(); + List> subtypes = new ArrayList<>(); for (SubType subtype : creature.getSubtype(game)) { subtypes.add(new SubtypePredicate(subtype)); sb.append(subtype).append(", "); diff --git a/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java b/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java index 08ef7263b5c..3e271eb297c 100644 --- a/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java +++ b/Mage.Sets/src/mage/cards/c/CapriciousEfreet.java @@ -27,8 +27,6 @@ */ package mage.cards.c; -import java.util.ArrayList; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -45,6 +43,10 @@ import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.util.RandomUtil; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author North @@ -101,7 +103,7 @@ class CapriciousEfreetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - ArrayList targetPermanents = new ArrayList<>(); + List targetPermanents = new ArrayList<>(); Permanent permanent = game.getPermanent(source.getTargets().get(0).getFirstTarget()); if (permanent != null) { targetPermanents.add(permanent); diff --git a/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java b/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java index 3471e7dd525..d320f00f067 100644 --- a/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java +++ b/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java @@ -27,8 +27,6 @@ */ package mage.cards.c; -import java.util.LinkedHashSet; -import java.util.UUID; import mage.Mana; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; @@ -50,6 +48,10 @@ import mage.game.events.GameEvent.EventType; import mage.players.Player; import mage.target.common.TargetOpponent; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Plopman @@ -163,7 +165,7 @@ class CarpetOfFlowersEffect extends ManaEffect { } int countMax = game.getBattlefield().count(filter, source.getSourceId(), source.getTargets().getFirstTarget(), game); ChoiceImpl choiceCount = new ChoiceImpl(true); - LinkedHashSet set = new LinkedHashSet<>(countMax + 1); + Set set = new LinkedHashSet<>(countMax + 1); for (int i = 0; i <= countMax; i++) { set.add(Integer.toString(i)); } diff --git a/Mage.Sets/src/mage/cards/c/Counterlash.java b/Mage.Sets/src/mage/cards/c/Counterlash.java index 802ae542bde..b1ad8d92250 100644 --- a/Mage.Sets/src/mage/cards/c/Counterlash.java +++ b/Mage.Sets/src/mage/cards/c/Counterlash.java @@ -27,8 +27,6 @@ */ package mage.cards.c; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -47,6 +45,10 @@ import mage.players.Player; import mage.target.TargetSpell; import mage.target.common.TargetCardInHand; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author BetaSteward @@ -96,7 +98,7 @@ class CounterlashEffect extends OneShotEffect { game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game); if (player.chooseUse(Outcome.PutCardInPlay, "Cast a nonland card in your hand that shares a card type with that spell without paying its mana cost?", source, game)) { FilterCard filter = new FilterCard(); - ArrayList> types = new ArrayList<>(); + List> types = new ArrayList<>(); for (CardType type: stackObject.getCardType()) { if (type != CardType.LAND) { types.add(new CardTypePredicate(type)); diff --git a/Mage.Sets/src/mage/cards/c/CracklingDoom.java b/Mage.Sets/src/mage/cards/c/CracklingDoom.java index 4642bf780b5..2b0f5b81874 100644 --- a/Mage.Sets/src/mage/cards/c/CracklingDoom.java +++ b/Mage.Sets/src/mage/cards/c/CracklingDoom.java @@ -27,8 +27,6 @@ */ package mage.cards.c; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamagePlayersEffect; @@ -47,6 +45,10 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetControlledCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -92,7 +94,7 @@ class CracklingDoomEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - ArrayList toSacrifice = new ArrayList<>(); + List toSacrifice = new ArrayList<>(); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { if (controller.hasOpponent(playerId, game)) { Player opponent = game.getPlayer(playerId); diff --git a/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java b/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java index 649261c106f..ffd18b00e59 100644 --- a/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java +++ b/Mage.Sets/src/mage/cards/c/CryptOfTheEternals.java @@ -1,7 +1,5 @@ package mage.cards.c; -import java.util.ArrayList; -import java.util.UUID; import mage.Mana; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.costs.common.TapSourceCost; @@ -14,6 +12,10 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + public class CryptOfTheEternals extends CardImpl { public CryptOfTheEternals(UUID ownerId, CardSetInfo setInfo) { @@ -26,7 +28,7 @@ public class CryptOfTheEternals extends CardImpl { this.addAbility(new ColorlessManaAbility()); // {1}, {T}: Add {U}, {B}, or {R} to your mana pool. - ArrayList list = new ArrayList() {{ + List list = new ArrayList() {{ add(Mana.BlueMana(1)); add(Mana.BlackMana(1)); add(Mana.RedMana(1)); diff --git a/Mage.Sets/src/mage/cards/c/CrypticGateway.java b/Mage.Sets/src/mage/cards/c/CrypticGateway.java index 475caa9114f..8c17e28e5d1 100644 --- a/Mage.Sets/src/mage/cards/c/CrypticGateway.java +++ b/Mage.Sets/src/mage/cards/c/CrypticGateway.java @@ -27,9 +27,6 @@ */ package mage.cards.c; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.Cost; @@ -55,6 +52,10 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetControlledPermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author spjspj @@ -199,7 +200,7 @@ class CrypticGatewayEffect extends OneShotEffect { changeling2 = true; } - ArrayList subtypes = new ArrayList<>(); + List subtypes = new ArrayList<>(); for (SubType subtype : creature.getSubtype(game)) { if (creature2.getSubtype(game).contains(subtype) || changeling2) { diff --git a/Mage.Sets/src/mage/cards/c/CustodiSquire.java b/Mage.Sets/src/mage/cards/c/CustodiSquire.java index 6e8df4337ab..ef9e3e62520 100644 --- a/Mage.Sets/src/mage/cards/c/CustodiSquire.java +++ b/Mage.Sets/src/mage/cards/c/CustodiSquire.java @@ -27,8 +27,6 @@ */ package mage.cards.c; -import java.util.HashMap; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -45,6 +43,10 @@ import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author LevelX2 @@ -105,7 +107,7 @@ class CustodiSquireVoteEffect extends OneShotEffect { Cards possibleCards = new CardsImpl(); possibleCards.addAll(controller.getGraveyard().getCards(filter, game)); if (!possibleCards.isEmpty()) { - HashMap cardCounter = new HashMap<>(); + Map cardCounter = new HashMap<>(); TargetCard target = new TargetCard(1, 1, Zone.GRAVEYARD, filter); int maxCount = 1; for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { diff --git a/Mage.Sets/src/mage/cards/d/DeadlyTempest.java b/Mage.Sets/src/mage/cards/d/DeadlyTempest.java index 2ebdd3028fa..c7ee54d48c8 100644 --- a/Mage.Sets/src/mage/cards/d/DeadlyTempest.java +++ b/Mage.Sets/src/mage/cards/d/DeadlyTempest.java @@ -27,8 +27,6 @@ */ package mage.cards.d; -import java.util.HashMap; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -40,6 +38,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author LevelX2 @@ -83,15 +85,15 @@ class DeadlyTempestEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - HashMap destroyedCreatures = new HashMap<>(); + Map destroyedCreatures = new HashMap<>(); for (Permanent permanent : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getControllerId(), source.getSourceId(), game)) { if (permanent.destroy(source.getSourceId(), game, false)) { - int count = destroyedCreatures.containsKey(permanent.getControllerId()) ? destroyedCreatures.get(permanent.getControllerId()) : 0; + int count = destroyedCreatures.getOrDefault(permanent.getControllerId(), 0); destroyedCreatures.put(permanent.getControllerId(), count + 1); } } for (UUID playerId : game.getState().getPlayerList(source.getControllerId())) { - int count = destroyedCreatures.containsKey(playerId) ? destroyedCreatures.get(playerId) : 0; + int count = destroyedCreatures.getOrDefault(playerId, 0); if (count > 0) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java b/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java index 4367a6a7b0e..da4c02d0cd1 100644 --- a/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java +++ b/Mage.Sets/src/mage/cards/d/DescentOfTheDragons.java @@ -27,8 +27,6 @@ */ package mage.cards.d; -import java.util.HashMap; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -42,6 +40,10 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetCreaturePermanent; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * @author jeffwadsworth */ @@ -86,7 +88,7 @@ class DescentOfTheDragonsEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - HashMap playersWithTargets = new HashMap<>(); + Map playersWithTargets = new HashMap<>(); for (Target target : source.getTargets()) { for (UUID permanentId : target.getTargets()) { Permanent permanent = game.getPermanent(permanentId); diff --git a/Mage.Sets/src/mage/cards/d/DroidFactory.java b/Mage.Sets/src/mage/cards/d/DroidFactory.java index 3078de3ca5b..e24e4ab60b6 100644 --- a/Mage.Sets/src/mage/cards/d/DroidFactory.java +++ b/Mage.Sets/src/mage/cards/d/DroidFactory.java @@ -27,8 +27,6 @@ */ package mage.cards.d; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.SacrificeSourceCost; @@ -46,6 +44,10 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Styxo @@ -84,7 +86,7 @@ public class DroidFactory extends CardImpl { addCost(new SacrificeSourceCost()); FilterCard filter = new FilterCard("basic Plains, Island or Swamp"); filter.add(new CardTypePredicate(CardType.LAND)); - ArrayList> subtypePredicates = new ArrayList<>(); + List> subtypePredicates = new ArrayList<>(); subtypePredicates.add(new SubtypePredicate(SubType.SWAMP)); subtypePredicates.add(new SubtypePredicate(SubType.PLAINS)); subtypePredicates.add(new SubtypePredicate(SubType.ISLAND)); diff --git a/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java b/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java index e0080af8131..2fe3a19de7c 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenArmorer.java @@ -27,8 +27,6 @@ */ package mage.cards.d; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -52,6 +50,10 @@ import mage.players.Player; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LoneFox @@ -84,7 +86,7 @@ public class DwarvenArmorer extends CardImpl { class DwarvenArmorerEffect extends OneShotEffect { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add("+0/+1"); diff --git a/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java b/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java index 22927ff883f..5c76c4c55ba 100644 --- a/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java +++ b/Mage.Sets/src/mage/cards/e/EmptyShrineKannushi.java @@ -27,8 +27,6 @@ */ package mage.cards.e; -import java.util.ArrayList; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.ObjectColor; @@ -45,6 +43,10 @@ import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -113,7 +115,7 @@ class EmptyShrineKannushiProtectionAbility extends ProtectionAbility { } } - ArrayList> colorPredicates = new ArrayList<>(); + List> colorPredicates = new ArrayList<>(); if (color.isBlack()) { colorPredicates.add(new ColorPredicate(ObjectColor.BLACK)); } diff --git a/Mage.Sets/src/mage/cards/e/EndHostilities.java b/Mage.Sets/src/mage/cards/e/EndHostilities.java index 2f21308aca2..e3ec1656e4f 100644 --- a/Mage.Sets/src/mage/cards/e/EndHostilities.java +++ b/Mage.Sets/src/mage/cards/e/EndHostilities.java @@ -27,8 +27,6 @@ */ package mage.cards.e; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -39,6 +37,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -83,7 +85,7 @@ class EndHostilitiesEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - ArrayList toDestroy = new ArrayList<>(); + List toDestroy = new ArrayList<>(); for (Permanent permanent : game.getBattlefield().getActivePermanents(controller.getId(), game)) { if (permanent.isCreature()) { toDestroy.add(permanent); diff --git a/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java b/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java index a44bf45d044..0f7112442b9 100644 --- a/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java +++ b/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java @@ -27,8 +27,6 @@ */ package mage.cards.e; -import java.util.HashMap; -import java.util.UUID; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.keyword.InvestigateEffect; @@ -43,6 +41,10 @@ import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.watchers.Watcher; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * @author LevelX2 */ @@ -106,7 +108,7 @@ class ErdwalIlluminatorTriggeredAbility extends TriggeredAbilityImpl { class InvestigatedWatcher extends Watcher { - private final HashMap timesInvestigated = new HashMap<>(); + private final Map timesInvestigated = new HashMap<>(); public InvestigatedWatcher() { super(InvestigatedWatcher.class.getSimpleName(), WatcherScope.GAME); diff --git a/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java b/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java index 18fae6cbd0d..229c7ae338f 100644 --- a/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java +++ b/Mage.Sets/src/mage/cards/e/EyeOfSingularity.java @@ -27,9 +27,6 @@ */ package mage.cards.e; -import java.util.HashMap; -import java.util.Objects; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -49,6 +46,11 @@ import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.target.targetpointer.FixedTarget; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + /** * * @author spjspj @@ -101,8 +103,8 @@ class EyeOfSingularityETBEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - HashMap cardNames = new HashMap<>(); - HashMap toDestroy = new HashMap<>(); + Map cardNames = new HashMap<>(); + Map toDestroy = new HashMap<>(); for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { String cardName = permanent.getName(); @@ -183,7 +185,7 @@ class EyeOfSingularityTriggeredEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - HashMap toDestroy = new HashMap<>(); + Map toDestroy = new HashMap<>(); Permanent etbPermanent = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source)); if (etbPermanent == null) { diff --git a/Mage.Sets/src/mage/cards/f/FaithsReward.java b/Mage.Sets/src/mage/cards/f/FaithsReward.java index f0015b4a7fd..fb413646831 100644 --- a/Mage.Sets/src/mage/cards/f/FaithsReward.java +++ b/Mage.Sets/src/mage/cards/f/FaithsReward.java @@ -27,8 +27,6 @@ */ package mage.cards.f; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; @@ -43,6 +41,10 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.watchers.Watcher; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Loki @@ -101,7 +103,7 @@ class FaithsRewardEffect extends OneShotEffect { } class FaithsRewardWatcher extends Watcher { - ArrayList cards = new ArrayList<>(); + List cards = new ArrayList<>(); public FaithsRewardWatcher() { super(FaithsRewardWatcher.class.getSimpleName(), WatcherScope.GAME); diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java b/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java index d249cf59642..cd3d3c33079 100644 --- a/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java +++ b/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java @@ -27,8 +27,6 @@ */ package mage.cards.f; -import java.util.HashMap; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -43,6 +41,10 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author LevelX2 @@ -90,7 +92,7 @@ class FalkenrathGorgerEffect extends ContinuousEffectImpl { } - HashMap madnessAbilities = new HashMap<>(); // reuse the same ability for the same object + Map madnessAbilities = new HashMap<>(); // reuse the same ability for the same object public FalkenrathGorgerEffect() { super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility); @@ -111,7 +113,7 @@ class FalkenrathGorgerEffect extends ContinuousEffectImpl { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - HashMap usedMadnessAbilities = new HashMap<>(); + Map usedMadnessAbilities = new HashMap<>(); // hand for (Card card : controller.getHand().getCards(filter, game)) { addMadnessToCard(game, card, usedMadnessAbilities); @@ -136,7 +138,7 @@ class FalkenrathGorgerEffect extends ContinuousEffectImpl { return false; } - private void addMadnessToCard(Game game, Card card, HashMap usedMadnessAbilities) { + private void addMadnessToCard(Game game, Card card, Map usedMadnessAbilities) { MadnessAbility ability = madnessAbilities.get(card.getId()); if (ability == null) { ability = new MadnessAbility(card, card.getSpellAbility().getManaCosts()); diff --git a/Mage.Sets/src/mage/cards/f/Fatespinner.java b/Mage.Sets/src/mage/cards/f/Fatespinner.java index ae7794fb38c..e14082372bb 100644 --- a/Mage.Sets/src/mage/cards/f/Fatespinner.java +++ b/Mage.Sets/src/mage/cards/f/Fatespinner.java @@ -27,8 +27,6 @@ */ package mage.cards.f; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -44,6 +42,10 @@ import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LoneFox @@ -74,7 +76,7 @@ public class Fatespinner extends CardImpl { class FatespinnerChooseEffect extends OneShotEffect { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add("Draw step"); diff --git a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java index 9340a64f307..e78f9ce457e 100644 --- a/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java +++ b/Mage.Sets/src/mage/cards/f/FiveAlarmFire.java @@ -27,8 +27,6 @@ */ package mage.cards.f; -import java.util.HashSet; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleActivatedAbility; @@ -48,6 +46,10 @@ import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.target.common.TargetCreatureOrPlayer; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Plopman @@ -82,7 +84,7 @@ class FiveAlarmFireTriggeredAbility extends TriggeredAbilityImpl { // Because a creature that is blocked by multiple creatures it deals damage to, only causes to add one counter to , // it's neccessary to remember which creature already triggered - HashSet triggeringCreatures = new HashSet<>(); + Set triggeringCreatures = new HashSet<>(); private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); diff --git a/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java b/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java index 69507915eeb..0d80865b79f 100644 --- a/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java +++ b/Mage.Sets/src/mage/cards/f/FlowstoneSculpture.java @@ -27,8 +27,6 @@ */ package mage.cards.f; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -52,6 +50,10 @@ import mage.counters.CounterType; import mage.game.Game; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LoneFox @@ -82,7 +84,7 @@ public class FlowstoneSculpture extends CardImpl { class FlowstoneSculptureEffect extends OneShotEffect { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add("+1/+1 counter"); diff --git a/Mage.Sets/src/mage/cards/f/ForgottenAncient.java b/Mage.Sets/src/mage/cards/f/ForgottenAncient.java index 7513d62d574..e8fd0ea9749 100644 --- a/Mage.Sets/src/mage/cards/f/ForgottenAncient.java +++ b/Mage.Sets/src/mage/cards/f/ForgottenAncient.java @@ -27,8 +27,6 @@ */ package mage.cards.f; -import java.util.ArrayList; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -51,6 +49,10 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Blinke @@ -116,7 +118,7 @@ public class ForgottenAncient extends CardImpl { } int numCounters = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); - ArrayList counterMovements = new ArrayList<>(); + List counterMovements = new ArrayList<>(); do { Target target = new TargetCreaturePermanent(1, 1, filter, true); diff --git a/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java b/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java index 574af0a47a6..201d44b02bd 100644 --- a/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java +++ b/Mage.Sets/src/mage/cards/g/GazeOfTheGorgon.java @@ -27,8 +27,6 @@ */ package mage.cards.g; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -45,6 +43,10 @@ import mage.players.Player; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.BlockedAttackerWatcher; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -96,7 +98,7 @@ class GazeOfTheGorgonEffect extends OneShotEffect { if (controller != null && targetCreature != null) { BlockedAttackerWatcher watcher = (BlockedAttackerWatcher) game.getState().getWatchers().get(BlockedAttackerWatcher.class.getSimpleName()); if (watcher != null) { - ArrayList toDestroy = new ArrayList<>(); + List toDestroy = new ArrayList<>(); for (Permanent creature : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, source.getControllerId(), source.getSourceId(), game)) { if (!creature.getId().equals(targetCreature.getId())) { if (watcher.creatureHasBlockedAttacker(creature, targetCreature, game) || watcher.creatureHasBlockedAttacker(targetCreature, creature, game)) { diff --git a/Mage.Sets/src/mage/cards/g/GhastlyConscription.java b/Mage.Sets/src/mage/cards/g/GhastlyConscription.java index 7db5f358670..cb18627fe33 100644 --- a/Mage.Sets/src/mage/cards/g/GhastlyConscription.java +++ b/Mage.Sets/src/mage/cards/g/GhastlyConscription.java @@ -27,7 +27,6 @@ */ package mage.cards.g; -import java.util.*; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.costs.mana.ManaCosts; @@ -47,6 +46,8 @@ import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; +import java.util.*; + /** * * @author LevelX2 @@ -92,7 +93,7 @@ class GhastlyConscriptionEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); if (controller != null && targetPlayer != null) { - ArrayList cardsToManifest = new ArrayList<>(); + List cardsToManifest = new ArrayList<>(); for (Card card : targetPlayer.getGraveyard().getCards(new FilterCreatureCard(), game)) { cardsToManifest.add(card); controller.moveCardToExileWithInfo(card, null, "", source.getSourceId(), game, Zone.GRAVEYARD, true); diff --git a/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java b/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java index d62687d8362..a88d888181a 100644 --- a/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java +++ b/Mage.Sets/src/mage/cards/h/HarmonicConvergence.java @@ -42,10 +42,7 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetCard; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; +import java.util.*; /** * @@ -94,7 +91,7 @@ class HarmonicConvergenceEffect extends OneShotEffect { source.getSourceId(), game); - HashMap> moveList = new HashMap<>(); + Map> moveList = new HashMap<>(); for (Permanent permanent : enchantments) { List list = moveList.computeIfAbsent(permanent.getControllerId(), k -> new ArrayList<>()); list.add(permanent); diff --git a/Mage.Sets/src/mage/cards/h/HedonistsTrove.java b/Mage.Sets/src/mage/cards/h/HedonistsTrove.java index 0be70c68bb9..a024d4458a2 100644 --- a/Mage.Sets/src/mage/cards/h/HedonistsTrove.java +++ b/Mage.Sets/src/mage/cards/h/HedonistsTrove.java @@ -27,8 +27,6 @@ */ package mage.cards.h; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -38,17 +36,17 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AsThoughEffectType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.game.ExileZone; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetOpponent; import mage.util.CardUtil; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -100,7 +98,7 @@ class HedonistsTroveExileEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && targetPlayer != null && sourceObject != null) { UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); - ArrayList graveyard = new ArrayList<>(targetPlayer.getGraveyard()); + List graveyard = new ArrayList<>(targetPlayer.getGraveyard()); for (UUID cardId : graveyard) { Card card = game.getCard(cardId); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java b/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java index cbbf3d80927..733e4d19c40 100644 --- a/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java +++ b/Mage.Sets/src/mage/cards/i/IndomitableCreativity.java @@ -27,19 +27,11 @@ */ package mage.cards.i; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Set; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.SpellAbility; import mage.abilities.effects.OneShotEffect; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.cards.Cards; -import mage.cards.CardsImpl; +import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; @@ -52,6 +44,8 @@ import mage.players.Library; import mage.players.Player; import mage.target.TargetPermanent; +import java.util.*; + /** * * @author LevelX2 @@ -112,7 +106,7 @@ class IndomitableCreativityEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { - ArrayList destroyedPermanents = new ArrayList<>(); + List destroyedPermanents = new ArrayList<>(); for (UUID targetId : getTargetPointer().getTargets(game, source)) { Permanent target = game.getPermanent(targetId); if (target != null) { @@ -121,7 +115,7 @@ class IndomitableCreativityEffect extends OneShotEffect { } } } - HashMap cardsToReveal = new HashMap<>(); + Map cardsToReveal = new HashMap<>(); for (Permanent permanent : destroyedPermanents) { Player controllerOfDestroyedCreature = game.getPlayer(permanent.getControllerId()); diff --git a/Mage.Sets/src/mage/cards/j/JediEnclave.java b/Mage.Sets/src/mage/cards/j/JediEnclave.java index d14aeee4e44..3d8de85f884 100644 --- a/Mage.Sets/src/mage/cards/j/JediEnclave.java +++ b/Mage.Sets/src/mage/cards/j/JediEnclave.java @@ -27,8 +27,6 @@ */ package mage.cards.j; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.SacrificeSourceCost; @@ -46,6 +44,10 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Styxo @@ -84,7 +86,7 @@ public class JediEnclave extends CardImpl { addCost(new SacrificeSourceCost()); FilterCard filter = new FilterCard("basic Forest, Plains or Island"); filter.add(new CardTypePredicate(CardType.LAND)); - ArrayList> subtypePredicates = new ArrayList<>(); + List> subtypePredicates = new ArrayList<>(); subtypePredicates.add(new SubtypePredicate(SubType.FOREST)); subtypePredicates.add(new SubtypePredicate(SubType.PLAINS)); subtypePredicates.add(new SubtypePredicate(SubType.ISLAND)); diff --git a/Mage.Sets/src/mage/cards/j/JodahsAvenger.java b/Mage.Sets/src/mage/cards/j/JodahsAvenger.java index 688c4132a62..f8aa0ac350b 100644 --- a/Mage.Sets/src/mage/cards/j/JodahsAvenger.java +++ b/Mage.Sets/src/mage/cards/j/JodahsAvenger.java @@ -27,8 +27,6 @@ */ package mage.cards.j; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -44,16 +42,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.choices.Choice; import mage.choices.ChoiceImpl; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Styxo @@ -83,7 +80,7 @@ public class JodahsAvenger extends CardImpl { class JodahsAvengerEffect extends ContinuousEffectImpl { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); private Ability gainedAbility; static { diff --git a/Mage.Sets/src/mage/cards/j/JungleVillage.java b/Mage.Sets/src/mage/cards/j/JungleVillage.java index ef0485f7977..de3d303fc07 100644 --- a/Mage.Sets/src/mage/cards/j/JungleVillage.java +++ b/Mage.Sets/src/mage/cards/j/JungleVillage.java @@ -27,8 +27,6 @@ */ package mage.cards.j; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.SacrificeSourceCost; @@ -46,6 +44,10 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Styxo @@ -84,7 +86,7 @@ public class JungleVillage extends CardImpl { addCost(new SacrificeSourceCost()); FilterCard filter = new FilterCard("basic Mountain, Forest or Plains"); filter.add(new CardTypePredicate(CardType.LAND)); - ArrayList> subtypePredicates = new ArrayList<>(); + List> subtypePredicates = new ArrayList<>(); subtypePredicates.add(new SubtypePredicate(SubType.PLAINS)); subtypePredicates.add(new SubtypePredicate(SubType.MOUNTAIN)); subtypePredicates.add(new SubtypePredicate(SubType.FAERIE)); diff --git a/Mage.Sets/src/mage/cards/k/KillingWave.java b/Mage.Sets/src/mage/cards/k/KillingWave.java index b5518f9d6ec..5624f39f0cc 100644 --- a/Mage.Sets/src/mage/cards/k/KillingWave.java +++ b/Mage.Sets/src/mage/cards/k/KillingWave.java @@ -27,10 +27,6 @@ */ package mage.cards.k; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.dynamicvalue.common.ManacostVariableValue; import mage.abilities.effects.OneShotEffect; @@ -43,6 +39,8 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.*; + /** * * @author North @@ -92,8 +90,8 @@ class KillingWaveEffect extends OneShotEffect { int amount = (new ManacostVariableValue()).calculate(game, source, this); if (amount > 0) { - LinkedList sacrifices = new LinkedList<>(); - HashMap lifePaidAmounts = new HashMap<>(); + List sacrifices = new LinkedList<>(); + Map lifePaidAmounts = new HashMap<>(); FilterCreaturePermanent filter = new FilterCreaturePermanent(); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { diff --git a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java index 7bc07d76160..08e51eed354 100644 --- a/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java +++ b/Mage.Sets/src/mage/cards/k/KynaiosAndTiroOfMeletis.java @@ -27,9 +27,6 @@ */ package mage.cards.k; -import java.util.ArrayList; -import java.util.Objects; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; @@ -46,6 +43,11 @@ import mage.players.PlayerList; import mage.target.Target; import mage.target.common.TargetCardInHand; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; + /** * @author spjspj */ @@ -104,7 +106,7 @@ class KynaiosAndTirosEffect extends OneShotEffect { Player currentPlayer = game.getPlayer(playerList.get()); UUID firstInactivePlayer = null; Target target = new TargetCardInHand(filter); - ArrayList noLandPlayers = new ArrayList<>(); + List noLandPlayers = new ArrayList<>(); while (controller.canRespond()) { if (currentPlayer != null && currentPlayer.canRespond() && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) { diff --git a/Mage.Sets/src/mage/cards/l/LunarAvenger.java b/Mage.Sets/src/mage/cards/l/LunarAvenger.java index 232b503747b..898c98f150f 100644 --- a/Mage.Sets/src/mage/cards/l/LunarAvenger.java +++ b/Mage.Sets/src/mage/cards/l/LunarAvenger.java @@ -27,8 +27,6 @@ */ package mage.cards.l; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -51,6 +49,10 @@ import mage.counters.CounterType; import mage.game.Game; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LoneFox @@ -82,7 +84,7 @@ public class LunarAvenger extends CardImpl { class LunarAvengerEffect extends OneShotEffect { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add("Flying"); diff --git a/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java b/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java index 3838f98de75..d609df426f4 100644 --- a/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java +++ b/Mage.Sets/src/mage/cards/m/MaintenanceDroid.java @@ -27,8 +27,6 @@ */ package mage.cards.m; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -51,6 +49,10 @@ import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInYourGraveyard; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Styxo @@ -90,7 +92,7 @@ public class MaintenanceDroid extends CardImpl { class MaintenanceDroidEffect extends OneShotEffect { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add("Remove a repair counter"); diff --git a/Mage.Sets/src/mage/cards/m/MarchOfSouls.java b/Mage.Sets/src/mage/cards/m/MarchOfSouls.java index 95a5389873a..85c5f0b9224 100644 --- a/Mage.Sets/src/mage/cards/m/MarchOfSouls.java +++ b/Mage.Sets/src/mage/cards/m/MarchOfSouls.java @@ -27,9 +27,6 @@ */ package mage.cards.m; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -41,6 +38,11 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.SpiritWhiteToken; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + /** * * @author LoneFox @@ -85,7 +87,7 @@ class MarchOfSoulsEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { List creatures = game.getBattlefield().getActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURES, source.getControllerId(), source.getSourceId(), game); - HashMap playersWithCreatures = new HashMap<>(); + Map playersWithCreatures = new HashMap<>(); for(Permanent p : creatures) { UUID controllerId = p.getControllerId(); if(p.destroy(source.getSourceId(), game, true)) { diff --git a/Mage.Sets/src/mage/cards/m/MartyrsBond.java b/Mage.Sets/src/mage/cards/m/MartyrsBond.java index 0e59377abdd..a453d4c548a 100644 --- a/Mage.Sets/src/mage/cards/m/MartyrsBond.java +++ b/Mage.Sets/src/mage/cards/m/MartyrsBond.java @@ -27,9 +27,6 @@ */ package mage.cards.m; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; @@ -51,6 +48,10 @@ import mage.players.Player; import mage.target.common.TargetControlledPermanent; import mage.target.targetpointer.FixedTarget; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author spjspj @@ -143,7 +144,7 @@ class MartyrsBondEffect extends OneShotEffect { String message = "permanent with type ("; boolean firstType = true; - ArrayList cardTypes = new ArrayList<>(); + List cardTypes = new ArrayList<>(); for (CardType type : saccedPermanent.getCardType()) { cardTypes.add(new CardTypePredicate(type)); diff --git a/Mage.Sets/src/mage/cards/m/MenacingOgre.java b/Mage.Sets/src/mage/cards/m/MenacingOgre.java index 8e35302ace0..8b87182ea86 100644 --- a/Mage.Sets/src/mage/cards/m/MenacingOgre.java +++ b/Mage.Sets/src/mage/cards/m/MenacingOgre.java @@ -27,8 +27,6 @@ */ package mage.cards.m; -import java.util.HashMap; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -44,6 +42,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -100,7 +102,7 @@ class MenacingOgreEffect extends OneShotEffect { int number = 0; Permanent menacingOgre = game.getPermanent(source.getSourceId()); String message = "Choose a number."; - HashMap numberChosen = new HashMap<>(); + Map numberChosen = new HashMap<>(); //players choose numbers for (Player player : game.getPlayers().values()) { diff --git a/Mage.Sets/src/mage/cards/m/Mindblaze.java b/Mage.Sets/src/mage/cards/m/Mindblaze.java index 6bb549849ba..4745590f119 100644 --- a/Mage.Sets/src/mage/cards/m/Mindblaze.java +++ b/Mage.Sets/src/mage/cards/m/Mindblaze.java @@ -27,8 +27,6 @@ */ package mage.cards.m; -import java.util.HashSet; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -46,6 +44,10 @@ import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Loki @@ -95,7 +97,7 @@ class MindblazeEffect extends OneShotEffect { cardChoice.clearChoice(); Choice numberChoice = new ChoiceImpl(); numberChoice.setMessage("Choose a number greater than 0"); - HashSet numbers = new HashSet<>(); + Set numbers = new HashSet<>(); for (int i = 1; i <= 4; i++) { numbers.add(Integer.toString(i)); } diff --git a/Mage.Sets/src/mage/cards/m/MitoticManipulation.java b/Mage.Sets/src/mage/cards/m/MitoticManipulation.java index f22f373c828..350ea417fc2 100644 --- a/Mage.Sets/src/mage/cards/m/MitoticManipulation.java +++ b/Mage.Sets/src/mage/cards/m/MitoticManipulation.java @@ -27,9 +27,6 @@ */ package mage.cards.m; -import java.util.HashSet; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.*; @@ -43,6 +40,11 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetCard; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + /** * * @author North @@ -85,7 +87,7 @@ class MitoticManipulationEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { List permanents = game.getBattlefield().getActivePermanents(source.getControllerId(), game); - HashSet permanentNames = new HashSet<>(); + Set permanentNames = new HashSet<>(); FilterCard filter = new FilterCard("card to put onto the battlefield"); for (Permanent permanent : permanents) { permanentNames.add(permanent.getName()); diff --git a/Mage.Sets/src/mage/cards/m/MultiformWonder.java b/Mage.Sets/src/mage/cards/m/MultiformWonder.java index 0dfc1af1f13..565a14d7cfd 100644 --- a/Mage.Sets/src/mage/cards/m/MultiformWonder.java +++ b/Mage.Sets/src/mage/cards/m/MultiformWonder.java @@ -27,8 +27,6 @@ */ package mage.cards.m; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -46,16 +44,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.choices.Choice; import mage.choices.ChoiceImpl; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LevelX2 @@ -90,7 +87,7 @@ public class MultiformWonder extends CardImpl { class MultiformWonderEffect extends OneShotEffect { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add("Flying"); diff --git a/Mage.Sets/src/mage/cards/n/NecromanticSelection.java b/Mage.Sets/src/mage/cards/n/NecromanticSelection.java index f7145aea873..028bb54964b 100644 --- a/Mage.Sets/src/mage/cards/n/NecromanticSelection.java +++ b/Mage.Sets/src/mage/cards/n/NecromanticSelection.java @@ -27,19 +27,13 @@ */ package mage.cards.n; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileSpellEffect; import mage.abilities.effects.common.continuous.BecomesBlackZombieAdditionEffect; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.cards.Cards; -import mage.cards.CardsImpl; +import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; @@ -56,6 +50,10 @@ import mage.target.Target; import mage.target.common.TargetCardInGraveyard; import mage.target.targetpointer.FixedTarget; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -110,7 +108,7 @@ class NecromanticSelectionEffect extends OneShotEffect { } } FilterCard filter = new FilterCreatureCard("creature card put into a graveyard with " + sourceObject.getLogName()); - ArrayList> cardIdPredicates = new ArrayList<>(); + List> cardIdPredicates = new ArrayList<>(); for (UUID cardId : cards) { cardIdPredicates.add(new CardIdPredicate(cardId)); } diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java b/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java index 376063b826e..8d66444e481 100644 --- a/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java +++ b/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java @@ -27,8 +27,6 @@ */ package mage.cards.n; -import java.util.HashMap; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; @@ -38,17 +36,8 @@ import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.ExileAllEffect; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.cards.Cards; -import mage.cards.CardsImpl; -import mage.constants.AsThoughEffectType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.cards.*; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.common.FilterNonlandPermanent; @@ -62,6 +51,10 @@ import mage.target.common.TargetCreatureOrPlayer; import mage.target.common.TargetOpponent; import mage.target.targetpointer.FixedTarget; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author Will @@ -126,7 +119,7 @@ class NicolBolasGodPharaohPlusOneEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { // Store for each player the cards to exile, that's important because all exile shall happen at the same time - HashMap cardsToExile = new HashMap<>(); + Map cardsToExile = new HashMap<>(); // Each player chooses 2 cards to discard for (UUID playerId : game.getOpponents(source.getControllerId())) { Player player = game.getPlayer(playerId); diff --git a/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java b/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java index 553cc5bf112..f51889150a8 100644 --- a/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java +++ b/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java @@ -27,17 +27,11 @@ */ package mage.cards.n; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.OneShotEffect; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.cards.Cards; -import mage.cards.CardsImpl; +import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.WatcherScope; @@ -48,6 +42,10 @@ import mage.game.events.ZoneChangeEvent; import mage.players.Player; import mage.watchers.Watcher; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author anonymous @@ -115,7 +113,7 @@ class NoRestForTheWickedEffect extends OneShotEffect { class NoRestForTheWickedWatcher extends Watcher { - ArrayList cards; + List cards; public NoRestForTheWickedWatcher() { super(NoRestForTheWickedWatcher.class.getSimpleName(), WatcherScope.GAME); diff --git a/Mage.Sets/src/mage/cards/n/NyleasPresence.java b/Mage.Sets/src/mage/cards/n/NyleasPresence.java index cf1df00d1b8..9e02f48aeba 100644 --- a/Mage.Sets/src/mage/cards/n/NyleasPresence.java +++ b/Mage.Sets/src/mage/cards/n/NyleasPresence.java @@ -27,9 +27,6 @@ */ package mage.cards.n; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.UUID; import mage.Mana; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -38,25 +35,19 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.keyword.EnchantAbility; -import mage.abilities.mana.BasicManaAbility; -import mage.abilities.mana.BlackManaAbility; -import mage.abilities.mana.BlueManaAbility; -import mage.abilities.mana.GreenManaAbility; -import mage.abilities.mana.RedManaAbility; -import mage.abilities.mana.WhiteManaAbility; +import mage.abilities.mana.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -77,7 +68,7 @@ public class NyleasPresence extends CardImpl { // When Nylea's Presence enters the battlefield, draw a card. this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1))); // Enchanted land is every basic land type in addition to its other types. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new NyleasPresenceLandTypeEffect("Swamp", "Mountain", "Forest", "Island", "Plains"))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new NyleasPresenceLandTypeEffect())); } @@ -93,11 +84,11 @@ public class NyleasPresence extends CardImpl { class NyleasPresenceLandTypeEffect extends ContinuousEffectImpl { - protected ArrayList landTypes = new ArrayList<>(); + protected List landTypes = new ArrayList<>(); - public NyleasPresenceLandTypeEffect(String... landNames) { + public NyleasPresenceLandTypeEffect() { super(Duration.WhileOnBattlefield, Outcome.Detriment); - landTypes.addAll(Arrays.asList(landNames)); + landTypes.addAll(SubType.getBasicLands(false)); this.staticText = "Enchanted land is every basic land type in addition to its other types"; } @@ -132,24 +123,24 @@ class NyleasPresenceLandTypeEffect extends ContinuousEffectImpl { } } } - if (mana.getGreen() == 0 && landTypes.contains("Forest")) { + if (mana.getGreen() == 0 && landTypes.contains(SubType.FOREST)) { land.addAbility(new GreenManaAbility(), source.getSourceId(), game); } - if (mana.getRed() == 0 && landTypes.contains("Mountain")) { + if (mana.getRed() == 0 && landTypes.contains(SubType.MOUNTAIN)) { land.addAbility(new RedManaAbility(), source.getSourceId(), game); } - if (mana.getBlue() == 0 && landTypes.contains("Island")) { + if (mana.getBlue() == 0 && landTypes.contains(SubType.ISLAND)) { land.addAbility(new BlueManaAbility(), source.getSourceId(), game); } - if (mana.getWhite() == 0 && landTypes.contains("Plains")) { + if (mana.getWhite() == 0 && landTypes.contains(SubType.PLAINS)) { land.addAbility(new WhiteManaAbility(), source.getSourceId(), game); } - if (mana.getBlack() == 0 && landTypes.contains("Swamp")) { + if (mana.getBlack() == 0 && landTypes.contains(SubType.SWAMP)) { land.addAbility(new BlackManaAbility(), source.getSourceId(), game); } break; case TypeChangingEffects_4: - for (String subtype : landTypes) { + for (SubType subtype : landTypes) { if (!land.getSubtype(game).contains(subtype)) { land.getSubtype(game).add(subtype); } diff --git a/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java b/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java index 1bd58d36a19..831f9cf3e66 100644 --- a/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java +++ b/Mage.Sets/src/mage/cards/o/OrzhovAdvokist.java @@ -27,9 +27,6 @@ */ package mage.cards.o; -import java.util.ArrayList; -import java.util.Objects; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -51,6 +48,11 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetControlledCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; + /** * * @author LevelX2 @@ -100,8 +102,8 @@ class OrzhovAdvokistEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - ArrayList players = new ArrayList<>(); - ArrayList creatures = new ArrayList<>(); + List players = new ArrayList<>(); + List creatures = new ArrayList<>(); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/cards/p/PlanarOverlay.java b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java index e51c8ae44cd..33e52bc2353 100644 --- a/Mage.Sets/src/mage/cards/p/PlanarOverlay.java +++ b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java @@ -27,9 +27,6 @@ */ package mage.cards.p; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; @@ -44,6 +41,10 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetLandPermanent; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Styxo @@ -91,9 +92,9 @@ class PlanarOverlayEffect extends OneShotEffect { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { - for (String landName : SubType.getBasicLands(false)) { + for (SubType landName : SubType.getBasicLands(false)) { FilterLandPermanent filter = new FilterLandPermanent(landName + " to return to hand"); - filter.add(new SubtypePredicate(SubType.byDescription(landName))); + filter.add(new SubtypePredicate(landName)); filter.add(new ControllerPredicate(TargetController.YOU)); Target target = new TargetLandPermanent(1, 1, filter, true); if (target.canChoose(source.getSourceId(), player.getId(), game)) { diff --git a/Mage.Sets/src/mage/cards/p/PrismaticOmen.java b/Mage.Sets/src/mage/cards/p/PrismaticOmen.java index c89e0f27b3b..a3b9fc199cc 100644 --- a/Mage.Sets/src/mage/cards/p/PrismaticOmen.java +++ b/Mage.Sets/src/mage/cards/p/PrismaticOmen.java @@ -27,31 +27,22 @@ */ package mage.cards.p; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.UUID; import mage.Mana; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; -import mage.abilities.mana.BasicManaAbility; -import mage.abilities.mana.BlackManaAbility; -import mage.abilities.mana.BlueManaAbility; -import mage.abilities.mana.GreenManaAbility; -import mage.abilities.mana.RedManaAbility; -import mage.abilities.mana.WhiteManaAbility; +import mage.abilities.mana.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -77,11 +68,11 @@ public class PrismaticOmen extends CardImpl { class BecomesBasicLandTypeAllEffect extends ContinuousEffectImpl { - protected ArrayList landTypes = new ArrayList<>(); + protected List landTypes = new ArrayList<>(); public BecomesBasicLandTypeAllEffect(String... landNames) { super(Duration.WhileOnBattlefield, Outcome.Detriment); - landTypes.addAll(Arrays.asList(landNames)); + landTypes.addAll(SubType.getBasicLands(false)); this.staticText = "Lands you control are every basic land type in addition to their other types"; } @@ -114,24 +105,24 @@ class BecomesBasicLandTypeAllEffect extends ContinuousEffectImpl { } } } - if (mana.getGreen() == 0 && landTypes.contains("Forest")) { + if (mana.getGreen() == 0 && landTypes.contains(SubType.FOREST)) { land.addAbility(new GreenManaAbility(), source.getSourceId(), game); } - if (mana.getRed() == 0 && landTypes.contains("Mountain")) { + if (mana.getRed() == 0 && landTypes.contains(SubType.MOUNTAIN)) { land.addAbility(new RedManaAbility(), source.getSourceId(), game); } - if (mana.getBlue() == 0 && landTypes.contains("Island")) { + if (mana.getBlue() == 0 && landTypes.contains(SubType.ISLAND)) { land.addAbility(new BlueManaAbility(), source.getSourceId(), game); } - if (mana.getWhite() == 0 && landTypes.contains("Plains")) { + if (mana.getWhite() == 0 && landTypes.contains(SubType.PLAINS)) { land.addAbility(new WhiteManaAbility(), source.getSourceId(), game); } - if (mana.getBlack() == 0 && landTypes.contains("Swamp")) { + if (mana.getBlack() == 0 && landTypes.contains(SubType.SWAMP)) { land.addAbility(new BlackManaAbility(), source.getSourceId(), game); } break; case TypeChangingEffects_4: - for (String subtype : landTypes) { + for (SubType subtype : landTypes) { if (!land.getSubtype(game).contains(subtype)) { land.getSubtype(game).add(subtype); } diff --git a/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java b/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java index 2c92b01fbde..e7c777104f1 100644 --- a/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java +++ b/Mage.Sets/src/mage/cards/r/RallyTheAncestors.java @@ -27,9 +27,6 @@ */ package mage.cards.r; -import java.util.ArrayList; -import java.util.Set; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.delayed.AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility; @@ -51,6 +48,11 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.targetpointer.FixedTargets; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.UUID; + /** * * @author emerald000 @@ -101,7 +103,7 @@ class RallyTheAncestorsEffect extends OneShotEffect { filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, xValue + 1)); Set cards = player.getGraveyard().getCards(filter, game); player.moveCards(cards, Zone.BATTLEFIELD, source, game); - ArrayList toExile = new ArrayList<>(cards.size()); + List toExile = new ArrayList<>(cards.size()); for (Card card : cards) { if (card != null) { Permanent permanent = game.getPermanent(card.getId()); diff --git a/Mage.Sets/src/mage/cards/r/ReapIntellect.java b/Mage.Sets/src/mage/cards/r/ReapIntellect.java index b6f858ca0cb..e495fc89f75 100644 --- a/Mage.Sets/src/mage/cards/r/ReapIntellect.java +++ b/Mage.Sets/src/mage/cards/r/ReapIntellect.java @@ -27,17 +27,10 @@ */ package mage.cards.r; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.cards.Cards; -import mage.cards.CardsImpl; -import mage.cards.SplitCard; +import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; @@ -52,6 +45,10 @@ import mage.target.common.TargetCardInHand; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetOpponent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -122,7 +119,7 @@ class ReapIntellectEffect extends OneShotEffect { if (!exiledCards.isEmpty()) { // Building a card filter with all names - ArrayList names = new ArrayList<>(); + List names = new ArrayList<>(); FilterCard filterNamedCards = new FilterCard(); for (Card card : exiledCards.getCards(game)) { if (exiledCards.size() == 1) { diff --git a/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java b/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java index 86c6e555bd8..636e937c4bb 100644 --- a/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java +++ b/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java @@ -27,8 +27,6 @@ */ package mage.cards.r; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.DiesAttachedTriggeredAbility; @@ -51,6 +49,10 @@ import mage.players.Player; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -110,7 +112,7 @@ class ReinsOfTheVinesteedEffect extends OneShotEffect { } FilterCreaturePermanent FILTER = new FilterCreaturePermanent(); StringBuilder sb = new StringBuilder("creature that shares a creature type with the formerly attached creature: "); - ArrayList> subtypes = new ArrayList<>(); + List> subtypes = new ArrayList<>(); for (SubType subtype : lastStateCreature.getSubtype(game)) { subtypes.add(new SubtypePredicate(subtype)); sb.append(subtype).append(", "); diff --git a/Mage.Sets/src/mage/cards/r/RestoreBalance.java b/Mage.Sets/src/mage/cards/r/RestoreBalance.java index c9ff1505573..8569f782235 100644 --- a/Mage.Sets/src/mage/cards/r/RestoreBalance.java +++ b/Mage.Sets/src/mage/cards/r/RestoreBalance.java @@ -27,17 +27,11 @@ */ package mage.cards.r; -import java.util.HashMap; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.SuspendAbility; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.cards.Cards; -import mage.cards.CardsImpl; +import mage.cards.*; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; import mage.constants.Outcome; @@ -50,6 +44,10 @@ import mage.players.Player; import mage.target.common.TargetCardInHand; import mage.target.common.TargetControlledPermanent; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author Plopman @@ -168,7 +166,7 @@ class RestoreBalanceEffect extends OneShotEffect { //Cards in hand int minCard = Integer.MAX_VALUE; - HashMap cardsToDiscard = new HashMap<>(2); + Map cardsToDiscard = new HashMap<>(2); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/cards/r/RiteOfRuin.java b/Mage.Sets/src/mage/cards/r/RiteOfRuin.java index c9c587c80d5..a2bb5c27ebe 100644 --- a/Mage.Sets/src/mage/cards/r/RiteOfRuin.java +++ b/Mage.Sets/src/mage/cards/r/RiteOfRuin.java @@ -27,9 +27,6 @@ */ package mage.cards.r; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -44,6 +41,8 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetControlledPermanent; +import java.util.*; + /** * * @author North @@ -91,7 +90,7 @@ class RiteOfRuinEffect extends OneShotEffect { return false; } - HashSet choices = new HashSet<>(); + Set choices = new HashSet<>(); choices.add("Artifacts"); choices.add("Creatures"); choices.add("Lands"); @@ -106,7 +105,7 @@ class RiteOfRuinEffect extends OneShotEffect { } order.add(getCardType(choices.iterator().next())); - LinkedList sacrifices = new LinkedList<>(); + List sacrifices = new LinkedList<>(); int count = 1; for (CardType cardType : order) { FilterControlledPermanent filter = new FilterControlledPermanent(cardType + " permanent you control"); diff --git a/Mage.Sets/src/mage/cards/s/SavageSummoning.java b/Mage.Sets/src/mage/cards/s/SavageSummoning.java index 38a715d4387..e4bc8585389 100644 --- a/Mage.Sets/src/mage/cards/s/SavageSummoning.java +++ b/Mage.Sets/src/mage/cards/s/SavageSummoning.java @@ -27,12 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.CantBeCounteredAbility; @@ -42,11 +36,7 @@ import mage.abilities.effects.ReplacementEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AsThoughEffectType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.WatcherScope; +import mage.constants.*; import mage.counters.CounterType; import mage.game.Game; import mage.game.command.Commander; @@ -57,6 +47,9 @@ import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.watchers.Watcher; +import java.util.*; +import java.util.Map.Entry; + /** * * @author LevelX2 @@ -200,7 +193,7 @@ class SavageSummoningWatcher extends Watcher { public boolean isSpellCastWithThisSavageSummoning(UUID spellId, UUID cardId, int zoneChangeCounter) { String cardKey = new StringBuilder(cardId.toString()).append('_').append(zoneChangeCounter).toString(); - HashSet savageSpells = (HashSet) spellsCastWithSavageSummoning.get(spellId); + Set savageSpells = spellsCastWithSavageSummoning.get(spellId); return savageSpells != null && savageSpells.contains(cardKey); } @@ -208,7 +201,7 @@ class SavageSummoningWatcher extends Watcher { String creatureCardKey = card.getId().toString() + '_' + (card.getZoneChangeCounter(game)); // add one because card is now gone to battlefield as creature String cardKey = cardId.toString() + '_' + zoneChangeCounter; - HashSet savageSpells = (HashSet) cardsCastWithSavageSummoning.get(creatureCardKey); + Set savageSpells = cardsCastWithSavageSummoning.get(creatureCardKey); return savageSpells != null && savageSpells.contains(cardKey); } diff --git a/Mage.Sets/src/mage/cards/s/ScytheSpecter.java b/Mage.Sets/src/mage/cards/s/ScytheSpecter.java index 04a9d91a440..8e776201cc1 100644 --- a/Mage.Sets/src/mage/cards/s/ScytheSpecter.java +++ b/Mage.Sets/src/mage/cards/s/ScytheSpecter.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.HashMap; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; @@ -46,6 +44,10 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetDiscard; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -90,8 +92,8 @@ class ScytheSpecterEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - HashMap cardDiscarded = new HashMap<>(); - HashMap discardedCheck = new HashMap<>(); + Map cardDiscarded = new HashMap<>(); + Map discardedCheck = new HashMap<>(); Integer highestCMC = 0; Integer currentCMC = 0; Player controller = game.getPlayer(source.getControllerId()); diff --git a/Mage.Sets/src/mage/cards/s/SecondSunrise.java b/Mage.Sets/src/mage/cards/s/SecondSunrise.java index 80302d0aae0..8940e37f197 100644 --- a/Mage.Sets/src/mage/cards/s/SecondSunrise.java +++ b/Mage.Sets/src/mage/cards/s/SecondSunrise.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; @@ -43,6 +41,10 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.watchers.Watcher; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -103,7 +105,7 @@ class SecondSunriseEffect extends OneShotEffect { } class SecondSunriseWatcher extends Watcher { - ArrayList cards = new ArrayList<>(); + List cards = new ArrayList<>(); public SecondSunriseWatcher() { super(SecondSunriseWatcher.class.getSimpleName(), WatcherScope.GAME); diff --git a/Mage.Sets/src/mage/cards/s/Shapeshifter.java b/Mage.Sets/src/mage/cards/s/Shapeshifter.java index b803ce72bcd..b935c9dae8c 100644 --- a/Mage.Sets/src/mage/cards/s/Shapeshifter.java +++ b/Mage.Sets/src/mage/cards/s/Shapeshifter.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -41,18 +39,16 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.choices.Choice; import mage.choices.ChoiceImpl; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.util.CardUtil; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author MarcoMarin / HCrescent @@ -101,21 +97,21 @@ class ShapeshifterEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player Controller = game.getPlayer(source.getControllerId()); + Player controller = game.getPlayer(source.getControllerId()); MageObject mageObject = game.getPermanentEntering(source.getSourceId()); if (mageObject == null) { mageObject = game.getPermanent(source.getSourceId()); } - if (Controller != null) { + if (controller != null) { Choice numberChoice = new ChoiceImpl(); numberChoice.setMessage("Choose a number beween 0 and 7"); - HashSet numbers = new HashSet<>(); + Set numbers = new HashSet<>(); for (int i = 0; i <= 7; i++) { numbers.add(Integer.toString(i)); } numberChoice.setChoices(numbers); - while (!Controller.choose(Outcome.Neutral, numberChoice, game)) { - if (!Controller.canRespond()) { + while (!controller.choose(Outcome.Neutral, numberChoice, game)) { + if (!controller.canRespond()) { return false; } } diff --git a/Mage.Sets/src/mage/cards/s/SharedAnimosity.java b/Mage.Sets/src/mage/cards/s/SharedAnimosity.java index 96d0bfb6779..fd6b7dc2e62 100644 --- a/Mage.Sets/src/mage/cards/s/SharedAnimosity.java +++ b/Mage.Sets/src/mage/cards/s/SharedAnimosity.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.Mode; @@ -47,6 +45,10 @@ import mage.filter.predicate.permanent.PermanentIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Plopman @@ -109,7 +111,7 @@ class SharedAnimosityEffect extends ContinuousEffectImpl { } } if(!allCreatureTypes){ - ArrayList> predicateList = new ArrayList<>(); + List> predicateList = new ArrayList<>(); for(SubType subtype : permanent.getSubtype(game)){ predicateList.add(new SubtypePredicate(subtype)); } diff --git a/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java b/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java index 9d6a3cf974d..6ec74cc10a9 100644 --- a/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java +++ b/Mage.Sets/src/mage/cards/s/SilenceTheBelievers.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.abilityword.StriveAbility; import mage.abilities.effects.OneShotEffect; @@ -42,6 +40,10 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** @@ -95,7 +97,7 @@ class SilenceTheBelieversExileEffect extends OneShotEffect { for (UUID targetId: this.getTargetPointer().getTargets(game, source)) { Permanent creature = game.getPermanent(targetId); if (creature != null) { - ArrayList attachments = new ArrayList<>(creature.getAttachments()); + List attachments = new ArrayList<>(creature.getAttachments()); for (UUID attachmentId: attachments) { Permanent attachment = game.getPermanent(attachmentId); if (attachment != null && attachment.getSubtype(game).contains("Aura")) { diff --git a/Mage.Sets/src/mage/cards/s/SithEvoker.java b/Mage.Sets/src/mage/cards/s/SithEvoker.java index 93224d1460e..a1e836de18d 100644 --- a/Mage.Sets/src/mage/cards/s/SithEvoker.java +++ b/Mage.Sets/src/mage/cards/s/SithEvoker.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -51,6 +49,10 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetControlledCreaturePermanent; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Styxo @@ -84,7 +86,7 @@ public class SithEvoker extends CardImpl { class SithEvokerEffect extends OneShotEffect { - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add("Gain life equal to creature's power"); diff --git a/Mage.Sets/src/mage/cards/s/SithRuins.java b/Mage.Sets/src/mage/cards/s/SithRuins.java index 588d0fc082c..05be1f30abe 100644 --- a/Mage.Sets/src/mage/cards/s/SithRuins.java +++ b/Mage.Sets/src/mage/cards/s/SithRuins.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.SacrificeSourceCost; @@ -46,6 +44,10 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Styxo @@ -84,7 +86,7 @@ public class SithRuins extends CardImpl { addCost(new SacrificeSourceCost()); FilterCard filter = new FilterCard("basic Island, Swamp or Mountain"); filter.add(new CardTypePredicate(CardType.LAND)); - ArrayList> subtypePredicates = new ArrayList<>(); + List> subtypePredicates = new ArrayList<>(); subtypePredicates.add(new SubtypePredicate(SubType.SWAMP)); subtypePredicates.add(new SubtypePredicate(SubType.MOUNTAIN)); subtypePredicates.add(new SubtypePredicate(SubType.ISLAND)); diff --git a/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java b/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java index e454cf2391a..667cf8469d0 100644 --- a/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java +++ b/Mage.Sets/src/mage/cards/s/SoulOfRavnica.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -46,6 +44,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LevelX2 @@ -100,7 +102,7 @@ class SoulOfRavnicaEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - HashSet colors = new HashSet<>(); + Set colors = new HashSet<>(); for (Permanent permanent : game.getBattlefield().getAllActivePermanents(controller.getId())) { if (permanent.getColor(game).isBlack()) { colors.add(ObjectColor.BLACK); diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java b/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java index 74994905286..2432fe360ea 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java +++ b/Mage.Sets/src/mage/cards/s/SpiritOfResistance.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.UUID; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -45,6 +43,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * @author Quercitron */ @@ -79,7 +81,7 @@ enum SpiritOfResistanceCondition implements Condition { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - HashSet colors = new HashSet<>(); + Set colors = new HashSet<>(); for (Permanent permanent : game.getBattlefield().getAllActivePermanents(controller.getId())) { if (permanent.getColor(game).isBlack()) { colors.add(ObjectColor.BLACK); diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java index 8f00bfe51f7..09298315216 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java +++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -40,6 +38,10 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.watchers.Watcher; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * @@ -71,7 +73,7 @@ public class SpiritOfTheLabyrinth extends CardImpl { class SpiritOfTheLabyrinthWatcher extends Watcher { - private final HashSet playersThatDrewCard; + private final Set playersThatDrewCard; public SpiritOfTheLabyrinthWatcher() { super(SpiritOfTheLabyrinthWatcher.class.getSimpleName(), WatcherScope.GAME); diff --git a/Mage.Sets/src/mage/cards/s/StorageMatrix.java b/Mage.Sets/src/mage/cards/s/StorageMatrix.java index 74575b5b110..45c40eb7eee 100644 --- a/Mage.Sets/src/mage/cards/s/StorageMatrix.java +++ b/Mage.Sets/src/mage/cards/s/StorageMatrix.java @@ -27,8 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -44,6 +42,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LevelX2 @@ -71,7 +73,7 @@ class StorageMatrixRestrictionEffect extends RestrictionEffect { private int turn; private boolean applies; - private static final HashSet choice = new HashSet<>(); + private static final Set choice = new HashSet<>(); static { choice.add(CardType.ARTIFACT.toString()); diff --git a/Mage.Sets/src/mage/cards/s/SunderingTitan.java b/Mage.Sets/src/mage/cards/s/SunderingTitan.java index f67ef096204..ac9dc94ff5a 100644 --- a/Mage.Sets/src/mage/cards/s/SunderingTitan.java +++ b/Mage.Sets/src/mage/cards/s/SunderingTitan.java @@ -27,9 +27,6 @@ */ package mage.cards.s; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldOrLeavesSourceTriggeredAbility; @@ -47,6 +44,10 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetLandPermanent; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LevelX2 @@ -96,9 +97,9 @@ class SunderingTitanDestroyLandEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); Set lands = new HashSet<>(); if (controller != null && sourcePermanent != null) { - for (String landName : SubType.getBasicLands(false)) { + for (SubType landName : SubType.getBasicLands(false)) { FilterLandPermanent filter = new FilterLandPermanent(landName + " to destroy"); - filter.add(new SubtypePredicate(SubType.byDescription(landName))); + filter.add(new SubtypePredicate(landName)); Target target = new TargetLandPermanent(1, 1, filter, true); if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) { controller.chooseTarget(outcome, target, source, game); diff --git a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java index 5ed5279fd90..aa64e272467 100644 --- a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java +++ b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java @@ -27,9 +27,6 @@ */ package mage.cards.t; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; @@ -58,6 +55,10 @@ import mage.players.Player; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -123,7 +124,7 @@ class TamiyoFieldResearcherEffect1 extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - ArrayList creatures = new ArrayList<>(); + List creatures = new ArrayList<>(); for (UUID uuid : getTargetPointer().getTargets(game, source)) { creatures.add(new MageObjectReference(uuid, game)); } diff --git a/Mage.Sets/src/mage/cards/t/Tarmogoyf.java b/Mage.Sets/src/mage/cards/t/Tarmogoyf.java index ee2be7559f8..ed9392855ce 100644 --- a/Mage.Sets/src/mage/cards/t/Tarmogoyf.java +++ b/Mage.Sets/src/mage/cards/t/Tarmogoyf.java @@ -27,8 +27,6 @@ */ package mage.cards.t; -import java.util.HashSet; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -37,15 +35,14 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.players.Player; +import java.util.EnumSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Plopman @@ -95,7 +92,7 @@ class TarmogoyfEffect extends ContinuousEffectImpl { if (controller != null) { MageObject target = game.getObject(source.getSourceId()); if (target != null) { - HashSet foundCardTypes = new HashSet<>(); + Set foundCardTypes = EnumSet.noneOf(CardType.class); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/cards/t/TeferisRealm.java b/Mage.Sets/src/mage/cards/t/TeferisRealm.java index 1e5dcf732b9..d74b69fcb16 100644 --- a/Mage.Sets/src/mage/cards/t/TeferisRealm.java +++ b/Mage.Sets/src/mage/cards/t/TeferisRealm.java @@ -27,8 +27,6 @@ */ package mage.cards.t; -import java.util.HashSet; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -46,6 +44,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author LevelX2 @@ -76,7 +78,7 @@ class TeferisRealmEffect extends OneShotEffect { private static final String CREATURE = "Creature"; private static final String LAND = "Land"; private static final String NON_AURA_ENCHANTMENT = "Non-Aura enchantment"; - private static final HashSet choices = new HashSet<>(); + private static final Set choices = new HashSet<>(); static { choices.add(ARTIFACT); diff --git a/Mage.Sets/src/mage/cards/t/Terastodon.java b/Mage.Sets/src/mage/cards/t/Terastodon.java index c5abdf6bcd2..5dc9734eedb 100644 --- a/Mage.Sets/src/mage/cards/t/Terastodon.java +++ b/Mage.Sets/src/mage/cards/t/Terastodon.java @@ -27,9 +27,6 @@ */ package mage.cards.t; -import java.util.HashMap; -import java.util.Map.Entry; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -47,6 +44,11 @@ import mage.game.permanent.Permanent; import mage.game.permanent.token.ElephantToken; import mage.target.TargetPermanent; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -100,7 +102,7 @@ class TerastodonEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - HashMap destroyedPermanents = new HashMap<>(); + Map destroyedPermanents = new HashMap<>(); for (UUID targetID : this.targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(targetID); if (permanent != null) { diff --git a/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java b/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java index 416907dea27..39b4fcbdac1 100644 --- a/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java +++ b/Mage.Sets/src/mage/cards/t/ThatcherRevolt.java @@ -27,8 +27,6 @@ */ package mage.cards.t; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -42,6 +40,10 @@ import mage.game.permanent.Permanent; import mage.game.permanent.token.ThatcherHumanToken; import mage.target.targetpointer.FixedTargets; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author North @@ -85,7 +87,7 @@ class ThatcherRevoltEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { ThatcherHumanToken token = new ThatcherHumanToken(); token.putOntoBattlefield(3, game, source.getSourceId(), source.getControllerId()); - ArrayList toSacrifice = new ArrayList<>(); + List toSacrifice = new ArrayList<>(); for (UUID tokenId : token.getLastAddedTokenIds()) { Permanent tokenPermanent = game.getPermanent(tokenId); if (tokenPermanent != null) { diff --git a/Mage.Sets/src/mage/cards/t/ThranTurbine.java b/Mage.Sets/src/mage/cards/t/ThranTurbine.java index d3575db0803..b2480d4a6d4 100644 --- a/Mage.Sets/src/mage/cards/t/ThranTurbine.java +++ b/Mage.Sets/src/mage/cards/t/ThranTurbine.java @@ -27,8 +27,6 @@ */ package mage.cards.t; -import java.util.HashSet; -import java.util.UUID; import mage.ConditionalMana; import mage.Mana; import mage.abilities.Ability; @@ -52,6 +50,10 @@ import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author spjspjs @@ -97,7 +99,7 @@ class ThranTurbineEffect extends OneShotEffect { if (player != null) { Choice numberChoice = new ChoiceImpl(); - HashSet numbers = new HashSet<>(); + Set numbers = new HashSet<>(); numbers.add(Integer.toString(1)); numbers.add(Integer.toString(2)); numberChoice.setChoices(numbers); diff --git a/Mage.Sets/src/mage/cards/t/Turnabout.java b/Mage.Sets/src/mage/cards/t/Turnabout.java index 45aaa8cc2dc..e15011b9e42 100644 --- a/Mage.Sets/src/mage/cards/t/Turnabout.java +++ b/Mage.Sets/src/mage/cards/t/Turnabout.java @@ -27,8 +27,6 @@ */ package mage.cards.t; -import java.util.HashSet; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -46,6 +44,10 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetPlayer; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author Plopman @@ -73,7 +75,7 @@ public class Turnabout extends CardImpl { class TurnaboutEffect extends OneShotEffect { - private static final HashSet choice = new HashSet<>(); + private static final Set choice = new HashSet<>(); static { choice.add(CardType.ARTIFACT.toString()); @@ -81,7 +83,7 @@ class TurnaboutEffect extends OneShotEffect { choice.add(CardType.LAND.toString()); } - private static final HashSet choice2 = new HashSet<>(); + private static final Set choice2 = new HashSet<>(); static { choice2.add("Untap"); diff --git a/Mage.Sets/src/mage/cards/t/Twinflame.java b/Mage.Sets/src/mage/cards/t/Twinflame.java index 46cb4855962..565e9b91b3f 100644 --- a/Mage.Sets/src/mage/cards/t/Twinflame.java +++ b/Mage.Sets/src/mage/cards/t/Twinflame.java @@ -27,8 +27,6 @@ */ package mage.cards.t; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.abilityword.StriveAbility; @@ -48,6 +46,10 @@ import mage.target.common.TargetControlledCreaturePermanent; import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTargets; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -95,7 +97,7 @@ class TwinflameCopyEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - ArrayList toExile = new ArrayList<>(); + List toExile = new ArrayList<>(); for (UUID creatureId : this.getTargetPointer().getTargets(game, source)) { Permanent creature = game.getPermanentOrLKIBattlefield(creatureId); if (creature != null) { diff --git a/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java b/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java index 015816d825e..1ed1d1883d2 100644 --- a/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java +++ b/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java @@ -27,10 +27,6 @@ */ package mage.cards.t; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfPostCombatMainTriggeredAbility; @@ -49,6 +45,8 @@ import mage.game.events.GameEvent.EventType; import mage.players.Player; import mage.watchers.Watcher; +import java.util.*; + /** * * @author LevelX2 @@ -122,7 +120,7 @@ class TymnaTheWeaverEffect extends OneShotEffect { class TymnaTheWeaverWatcher extends Watcher { // private final Set players = new HashSet<>(); - private final HashMap> players = new HashMap<>(); + private final Map> players = new HashMap<>(); public TymnaTheWeaverWatcher() { super(TymnaTheWeaverWatcher.class.getSimpleName(), WatcherScope.GAME); @@ -131,7 +129,7 @@ class TymnaTheWeaverWatcher extends Watcher { public TymnaTheWeaverWatcher(final TymnaTheWeaverWatcher watcher) { super(watcher); for (UUID playerId : watcher.players.keySet()) { - HashSet opponents = new HashSet<>(); + Set opponents = new HashSet<>(); opponents.addAll(watcher.players.get(playerId)); players.put(playerId, opponents); } diff --git a/Mage.Sets/src/mage/cards/u/UbaMask.java b/Mage.Sets/src/mage/cards/u/UbaMask.java index 32f7a1a1732..7581d6bb08c 100644 --- a/Mage.Sets/src/mage/cards/u/UbaMask.java +++ b/Mage.Sets/src/mage/cards/u/UbaMask.java @@ -27,10 +27,6 @@ */ package mage.cards.u; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; import mage.MageObject; import mage.MageObjectReference; import mage.abilities.Ability; @@ -40,17 +36,14 @@ import mage.abilities.effects.ReplacementEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AsThoughEffectType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.WatcherScope; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; import mage.watchers.Watcher; +import java.util.*; + /** * * @author LevelX2 @@ -162,7 +155,7 @@ class UbaMaskPlayEffect extends AsThoughEffectImpl { class UbaMaskExiledCardsWatcher extends Watcher { - private final HashMap> exiledCards = new HashMap<>(); + private final Map> exiledCards = new HashMap<>(); public UbaMaskExiledCardsWatcher() { super(UbaMaskExiledCardsWatcher.class.getSimpleName(), WatcherScope.GAME); diff --git a/Mage.Sets/src/mage/cards/u/UnderworldSlums.java b/Mage.Sets/src/mage/cards/u/UnderworldSlums.java index 7b2ef7a4b10..1a31ec8e0fd 100644 --- a/Mage.Sets/src/mage/cards/u/UnderworldSlums.java +++ b/Mage.Sets/src/mage/cards/u/UnderworldSlums.java @@ -27,8 +27,6 @@ */ package mage.cards.u; -import java.util.ArrayList; -import java.util.UUID; import mage.MageObject; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.SacrificeSourceCost; @@ -46,6 +44,10 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author Styxo @@ -84,7 +86,7 @@ public class UnderworldSlums extends CardImpl { addCost(new SacrificeSourceCost()); FilterCard filter = new FilterCard("basic Swamp, Mountain or Forest"); filter.add(new CardTypePredicate(CardType.LAND)); - ArrayList> subtypePredicates = new ArrayList<>(); + List> subtypePredicates = new ArrayList<>(); subtypePredicates.add(new SubtypePredicate(SubType.SWAMP)); subtypePredicates.add(new SubtypePredicate(SubType.MOUNTAIN)); subtypePredicates.add(new SubtypePredicate(SubType.FOREST)); diff --git a/Mage.Sets/src/mage/cards/u/UrzasMiter.java b/Mage.Sets/src/mage/cards/u/UrzasMiter.java index 2a80ece079a..17e5068e76b 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasMiter.java +++ b/Mage.Sets/src/mage/cards/u/UrzasMiter.java @@ -27,8 +27,6 @@ */ package mage.cards.u; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.ZoneChangeAllTriggeredAbility; import mage.abilities.costs.Cost; @@ -46,6 +44,10 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.watchers.Watcher; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author MarcoMarin @@ -95,7 +97,7 @@ class UrzasMiterDoIfCostPaid extends DoIfCostPaid { class UrzasMiterWatcher extends Watcher { - ArrayList cards; + List cards; public UrzasMiterWatcher() { super(UrzasMiterWatcher.class.getSimpleName(), WatcherScope.PLAYER); diff --git a/Mage.Sets/src/mage/cards/v/VileRedeemer.java b/Mage.Sets/src/mage/cards/v/VileRedeemer.java index 41661d91c38..505f8920134 100644 --- a/Mage.Sets/src/mage/cards/v/VileRedeemer.java +++ b/Mage.Sets/src/mage/cards/v/VileRedeemer.java @@ -27,8 +27,6 @@ */ package mage.cards.v; -import java.util.HashMap; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.costs.mana.ManaCostsImpl; @@ -51,6 +49,10 @@ import mage.game.permanent.token.EldraziScionToken; import mage.players.Player; import mage.watchers.Watcher; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * @author LevelX2 */ @@ -117,7 +119,7 @@ class VileRedeemerEffect extends OneShotEffect { class VileRedeemerNonTokenCreaturesDiedWatcher extends Watcher { - private final HashMap amountOfCreaturesThatDied = new HashMap<>(); + private final Map amountOfCreaturesThatDied = new HashMap<>(); public VileRedeemerNonTokenCreaturesDiedWatcher() { super(VileRedeemerNonTokenCreaturesDiedWatcher.class.getSimpleName(), WatcherScope.GAME); diff --git a/Mage.Sets/src/mage/cards/v/VoraciousDragon.java b/Mage.Sets/src/mage/cards/v/VoraciousDragon.java index b2738dd0f49..152e1ca10b3 100644 --- a/Mage.Sets/src/mage/cards/v/VoraciousDragon.java +++ b/Mage.Sets/src/mage/cards/v/VoraciousDragon.java @@ -27,8 +27,6 @@ */ package mage.cards.v; -import java.util.ArrayList; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -46,6 +44,9 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreatureOrPlayer; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -93,7 +94,7 @@ class TwiceDevouredGoblins implements DynamicValue { if (abilityEffect instanceof DevourEffect) { DevourEffect devourEffect = (DevourEffect) abilityEffect; int amountGoblins = 0; - for (ArrayList subtypesItem :devourEffect.getSubtypes(game, sourcePermanent.getId())) { + for (List subtypesItem :devourEffect.getSubtypes(game, sourcePermanent.getId())) { if (subtypesItem.contains("Goblin")) { ++amountGoblins; } diff --git a/Mage.Sets/src/mage/cards/w/WakeTheDead.java b/Mage.Sets/src/mage/cards/w/WakeTheDead.java index 725b1ea4ba1..10a11edab4e 100644 --- a/Mage.Sets/src/mage/cards/w/WakeTheDead.java +++ b/Mage.Sets/src/mage/cards/w/WakeTheDead.java @@ -27,8 +27,6 @@ */ package mage.cards.w; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.SpellAbility; @@ -53,6 +51,10 @@ import mage.players.Player; import mage.target.common.TargetCardInYourGraveyard; import mage.target.targetpointer.FixedTargets; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author LevelX2 @@ -111,7 +113,7 @@ class WakeTheDeadReturnFromGraveyardToBattlefieldTargetEffect extends OneShotEff if (controller != null) { Cards cards = new CardsImpl(getTargetPointer().getTargets(game, source)); controller.moveCards(cards, Zone.BATTLEFIELD, source, game); - ArrayList toSacrifice = new ArrayList<>(cards.size()); + List toSacrifice = new ArrayList<>(cards.size()); for (UUID targetId : cards) { Permanent creature = game.getPermanent(targetId); if (creature != null) { diff --git a/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java b/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java index 6757e42704a..2eeb027bb3e 100644 --- a/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java +++ b/Mage.Sets/src/mage/cards/w/WitchbaneOrb.java @@ -27,8 +27,6 @@ */ package mage.cards.w; -import java.util.ArrayList; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -44,6 +42,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** * * @author BetaSteward @@ -86,7 +88,7 @@ class WitchbaneOrbEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - ArrayList toDestroy = new ArrayList<>(); + List toDestroy = new ArrayList<>(); for (UUID attachmentId : controller.getAttachments()) { Permanent attachment = game.getPermanent(attachmentId); if (attachment != null && attachment.getSubtype(game).contains("Curse")) { diff --git a/Mage.Sets/src/mage/cards/w/WorldQueller.java b/Mage.Sets/src/mage/cards/w/WorldQueller.java index a96b5742980..ede1c4738b0 100644 --- a/Mage.Sets/src/mage/cards/w/WorldQueller.java +++ b/Mage.Sets/src/mage/cards/w/WorldQueller.java @@ -27,11 +27,6 @@ */ package mage.cards.w; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -52,6 +47,8 @@ import mage.players.Player; import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; +import java.util.*; + /** * * @author jeffwadsworth @@ -82,7 +79,7 @@ public class WorldQueller extends CardImpl { class WorldQuellerEffect extends OneShotEffect { - private static final HashSet choice = new LinkedHashSet<>(); + private static final Set choice = new LinkedHashSet<>(); static { choice.add(CardType.ARTIFACT.toString()); diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index efe2eca536f..bb7a8e8f9b9 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -1,9 +1,10 @@ package mage.constants; +import mage.util.SubTypeList; + import java.util.Arrays; import java.util.Set; import java.util.stream.Collectors; -import mage.util.SubTypeList; public enum SubType { @@ -427,8 +428,8 @@ public enum SubType { return subTypes; } - public static Set getBasicLands(boolean customSet) { - return Arrays.stream(values()).filter(s -> s.customSet == customSet).filter(p -> p.getSubTypeSet() == SubTypeSet.BasicLandType).map(SubType::getDescription).collect(Collectors.toSet()); + public static Set getBasicLands(boolean customSet) { + return Arrays.stream(values()).filter(s -> s.customSet == customSet).filter(p -> p.getSubTypeSet() == SubTypeSet.BasicLandType).collect(Collectors.toSet()); } public static SubTypeList getLandTypes(boolean customSet) { diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 46a58672999..6cfc22b324c 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -7,9 +7,12 @@ package mage.filter; import mage.constants.CardType; import mage.constants.SubType; +import mage.constants.SuperType; import mage.filter.common.*; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.TokenPredicate; @@ -64,6 +67,26 @@ public final class StaticFilters { public static final FilterPermanent FILTER_ATTACKING_CREATURES = new FilterCreaturePermanent("attacking creatures"); + + + public static final FilterPermanent FILTER_AURA = new FilterPermanent(); + public static final FilterPermanent FILTER_EQUIPMENT = new FilterPermanent(); + public static final FilterPermanent FILTER_FORTIFICATION = new FilterPermanent(); + public static final FilterPermanent FILTER_LEGENDARY = new FilterPermanent(); + + static { + FILTER_AURA.add(new CardTypePredicate(CardType.ENCHANTMENT)); + FILTER_AURA.add(new SubtypePredicate(SubType.AURA)); + + FILTER_EQUIPMENT.add(new CardTypePredicate(CardType.ARTIFACT)); + FILTER_EQUIPMENT.add(new SubtypePredicate(SubType.EQUIPMENT)); + + FILTER_FORTIFICATION.add(new CardTypePredicate(CardType.ARTIFACT)); + FILTER_FORTIFICATION.add(new SubtypePredicate(SubType.FORTIFICATION)); + + FILTER_LEGENDARY.add(new SupertypePredicate(SuperType.LEGENDARY)); + } + static { FILTER_CONTROLLED_PERMANENT_NON_LAND.add( Predicates.not(new CardTypePredicate(CardType.LAND))); diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index bf327ab6786..41d2996498a 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -54,9 +54,9 @@ import mage.designations.Monarch; import mage.filter.Filter; import mage.filter.FilterCard; import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterPlaneswalkerPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.NamePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; @@ -103,24 +103,6 @@ public abstract class GameImpl implements Game, Serializable { private static final Logger logger = Logger.getLogger(GameImpl.class); - private static final FilterPermanent FILTER_AURA = new FilterPermanent(); - private static final FilterPermanent FILTER_EQUIPMENT = new FilterPermanent(); - private static final FilterPermanent FILTER_FORTIFICATION = new FilterPermanent(); - private static final FilterPermanent FILTER_LEGENDARY = new FilterPermanent(); - - static { - FILTER_AURA.add(new CardTypePredicate(CardType.ENCHANTMENT)); - FILTER_AURA.add(new SubtypePredicate(SubType.AURA)); - - FILTER_EQUIPMENT.add(new CardTypePredicate(CardType.ARTIFACT)); - FILTER_EQUIPMENT.add(new SubtypePredicate(SubType.EQUIPMENT)); - - FILTER_FORTIFICATION.add(new CardTypePredicate(CardType.ARTIFACT)); - FILTER_FORTIFICATION.add(new SubtypePredicate(SubType.FORTIFICATION)); - - FILTER_LEGENDARY.add(new SupertypePredicate(SuperType.LEGENDARY)); - } - private transient Object customData; protected boolean simulation = false; @@ -1784,7 +1766,7 @@ public abstract class GameImpl implements Game, Serializable { if (perm.isWorld()) { worldEnchantment.add(perm); } - if (FILTER_AURA.match(perm, this)) { + if (StaticFilters.FILTER_AURA.match(perm, this)) { //20091005 - 704.5n, 702.14c if (perm.getAttachedTo() == null) { Card card = this.getCard(perm.getId()); @@ -1862,10 +1844,10 @@ public abstract class GameImpl implements Game, Serializable { } } } - if (this.getState().isLegendaryRuleActive() && FILTER_LEGENDARY.match(perm, this)) { + if (this.getState().isLegendaryRuleActive() && StaticFilters.FILTER_LEGENDARY.match(perm, this)) { legendary.add(perm); } - if (FILTER_EQUIPMENT.match(perm, this)) { + if (StaticFilters.FILTER_EQUIPMENT.match(perm, this)) { //20091005 - 704.5p, 702.14d if (perm.getAttachedTo() != null) { Permanent attachedTo = getPermanent(perm.getAttachedTo()); @@ -1890,7 +1872,7 @@ public abstract class GameImpl implements Game, Serializable { } } } - if (FILTER_FORTIFICATION.match(perm, this)) { + if (StaticFilters.FILTER_FORTIFICATION.match(perm, this)) { if (perm.getAttachedTo() != null) { Permanent land = getPermanent(perm.getAttachedTo()); if (land == null || !land.getAttachments().contains(perm.getId())) { From d484991818d153e8a332993394a76d7e04fc0f84 Mon Sep 17 00:00:00 2001 From: ciaccona007 Date: Sat, 29 Jul 2017 19:07:25 -0400 Subject: [PATCH 5/6] Fix problem in Permanent.destroy() --- Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java | 3 ++- .../test/cards/single/KalitasBloodchiefOfGhetTest.java | 1 + .../src/main/java/mage/game/permanent/PermanentImpl.java | 9 +++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java b/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java index 353bc8682e6..6398d8d338a 100644 --- a/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java +++ b/Mage.Sets/src/mage/cards/k/KalitasBloodchiefOfGhet.java @@ -27,7 +27,6 @@ */ package mage.cards.k; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -46,6 +45,8 @@ import mage.game.permanent.Permanent; import mage.game.permanent.token.KalitasVampireToken; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author LevelX2 diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/KalitasBloodchiefOfGhetTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/KalitasBloodchiefOfGhetTest.java index ce58ce1b55d..359d4ee1803 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/KalitasBloodchiefOfGhetTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/KalitasBloodchiefOfGhetTest.java @@ -20,6 +20,7 @@ public class KalitasBloodchiefOfGhetTest extends CardTestPlayerBase { execute(); assertPermanentCount(playerA, 5); + assertPermanentCount(playerA, "Vampire", 0); assertPermanentCount(playerB, 0); } } diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index 7152b7c68dc..2cd47edadc5 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -27,7 +27,6 @@ */ package mage.game.permanent; -import java.util.*; import mage.MageObject; import mage.MageObjectReference; import mage.ObjectColor; @@ -56,6 +55,8 @@ import mage.players.Player; import mage.util.GameLog; import mage.util.ThreadLocalStringBuilder; +import java.util.*; + /** * @author BetaSteward_at_googlemail.com */ @@ -953,8 +954,8 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { } if (!game.replaceEvent(GameEvent.getEvent(EventType.DESTROY_PERMANENT, objectId, sourceId, controllerId, noRegen ? 1 : 0))) { - // this means destroy was successfull, if object movement to graveyard will be replaced (e.g. commander to command zone) does not count for - // successfull destroying. + // this means destroy was successful, if object movement to graveyard will be replaced (e.g. commander to command zone) does not count for + // successful destroying. if (moveToZone(Zone.GRAVEYARD, sourceId, game, false)) { if (!game.isSimulation()) { String logName; @@ -971,8 +972,8 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { } } game.fireEvent(GameEvent.getEvent(EventType.DESTROYED_PERMANENT, objectId, sourceId, controllerId)); + return true; } - return true; // } return false; } From d72bc323b076a861fc78a80cc276dcd244b50b17 Mon Sep 17 00:00:00 2001 From: ciaccona007 Date: Sat, 29 Jul 2017 19:45:55 -0400 Subject: [PATCH 6/6] Implement Cinder Cloud with test --- Mage.Sets/src/mage/cards/c/CinderCloud.java | 97 +++++++++++++++++++ Mage.Sets/src/mage/sets/Mirage.java | 1 + .../test/cards/single/CinderCloudTest.java | 68 +++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/c/CinderCloud.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/single/CinderCloudTest.java diff --git a/Mage.Sets/src/mage/cards/c/CinderCloud.java b/Mage.Sets/src/mage/cards/c/CinderCloud.java new file mode 100644 index 00000000000..f1c18346504 --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/CinderCloud.java @@ -0,0 +1,97 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.c; + +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; + +/** + * + * @author ciaccona007 + */ +public class CinderCloud extends CardImpl { + + public CinderCloud(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R}{R}"); + + + // Destroy target creature. If a white creature dies this way, Cinder Cloud deals damage to that creature's controller equal to the creature's power. + this.getSpellAbility().addEffect(new CinderCloudEffect()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public CinderCloud(final CinderCloud card) { + super(card); + } + + @Override + public CinderCloud copy() { + return new CinderCloud(this); + } +} + +class CinderCloudEffect extends OneShotEffect { + + public CinderCloudEffect() { + super(Outcome.Benefit); + this.staticText = "Destroy target creature. If a white creature dies this way, {this} deals damage to that creature's controller equal to the creature's power"; + } + + public CinderCloudEffect(final CinderCloudEffect effect) { + super(effect); + } + + @Override + public CinderCloudEffect copy() { + return new CinderCloudEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + if(permanent != null && permanent.destroy(source.getSourceId(), game, false) && permanent.getColor(game).equals(ObjectColor.WHITE)) { + int damage = permanent.getPower().getValue(); + Player player = game.getPlayer(permanent.getControllerId()); + if(player != null) { + player.damage(damage, source.getSourceId(), game, false, true); + } + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/Mirage.java b/Mage.Sets/src/mage/sets/Mirage.java index 0988b782eb3..af74b51bf7d 100644 --- a/Mage.Sets/src/mage/sets/Mirage.java +++ b/Mage.Sets/src/mage/sets/Mirage.java @@ -88,6 +88,7 @@ public class Mirage extends ExpansionSet { cards.add(new SetCardInfo("Chaosphere", 164, Rarity.RARE, mage.cards.c.Chaosphere.class)); cards.add(new SetCardInfo("Charcoal Diamond", 261, Rarity.UNCOMMON, mage.cards.c.CharcoalDiamond.class)); cards.add(new SetCardInfo("Choking Sands", 11, Rarity.COMMON, mage.cards.c.ChokingSands.class)); + cards.add(new SetCardInfo("Cinder Cloud", 165, Rarity.UNCOMMON, mage.cards.c.CinderCloud.class)); cards.add(new SetCardInfo("Civic Guildmage", 211, Rarity.COMMON, mage.cards.c.CivicGuildmage.class)); cards.add(new SetCardInfo("Cloak of Invisibility", 58, Rarity.COMMON, mage.cards.c.CloakOfInvisibility.class)); cards.add(new SetCardInfo("Coral Fighters", 59, Rarity.UNCOMMON, mage.cards.c.CoralFighters.class)); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/CinderCloudTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/CinderCloudTest.java new file mode 100644 index 00000000000..f083e2faac2 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/CinderCloudTest.java @@ -0,0 +1,68 @@ +package org.mage.test.cards.single; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author ciaccona007 + */ +public class CinderCloudTest extends CardTestPlayerBase { + + //Destroy target creature. If a white creature dies this way, Cinder Cloud deals damage to that creature's controller equal to the creature's power. + + @Test + public void testDamageWhenWhiteCreatureDies() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 5); + addCard(Zone.HAND, playerA, "Cinder Cloud"); + + addCard(Zone.BATTLEFIELD, playerB, "Savannah Lions"); //Creature - Cat 2/1 + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cinder Cloud", "Savannah Lions"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 18); + assertPermanentCount(playerB, 0); + } + + @Test + public void testNoDamageWhenWhiteCreatureDoesntDie() { + + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 5); + addCard(Zone.HAND, playerA, "Cinder Cloud"); + // When Rest in Peace enters the battlefield, exile all cards from all graveyards. + // If a card or token would be put into a graveyard from anywhere, exile it instead. + addCard(Zone.BATTLEFIELD, playerA, "Rest in Peace"); //Enchantment + + addCard(Zone.BATTLEFIELD, playerB, "Savannah Lions"); //Creature - Cat 2/1 + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cinder Cloud", "Savannah Lions"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + assertExileCount(playerB, 1); + assertPermanentCount(playerB, 0); + } + @Test + public void testNoDamageIfNonwhiteCreature() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 5); + addCard(Zone.HAND, playerA, "Cinder Cloud"); + addCard(Zone.BATTLEFIELD, playerB, "Gray Ogre"); //Creature - Ogre 2/2 + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cinder Cloud", "Gray Ogre"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + assertPermanentCount(playerB, 0); + } +}