mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
Draft Cubes rework (better cube from deck, dynamic data, better errors processing, actual MTGO Vintage Cube) (#13705)
- GUI, table: added dynamic data support for Cube Types (no more depends on server's config names, part of #12050); - server: replace multiple MTGO Vintage Cubes by single cube, updated to April 2025 (part of #12050); - server: fixed table freeze on starting error (related to #11285); - GUI, table: added better support of Cube From Deck (client/server side errors, additional info about loaded cards, etc);
This commit is contained in:
parent
2034b3fe59
commit
3d45a24959
13 changed files with 755 additions and 61 deletions
|
|
@ -6,12 +6,15 @@ import mage.cards.decks.DeckCardLists;
|
|||
import mage.game.draft.DraftCube;
|
||||
|
||||
/**
|
||||
* @author spjspj
|
||||
* @author spjspj, JayDi85
|
||||
*/
|
||||
public class CubeFromDeck extends DraftCube {
|
||||
|
||||
/**
|
||||
* Calls on table create, can use any names
|
||||
*/
|
||||
public CubeFromDeck(Deck cubeFromDeck) {
|
||||
super("Cube From Deck");
|
||||
this();
|
||||
|
||||
if (cubeFromDeck == null) {
|
||||
return;
|
||||
|
|
@ -21,5 +24,16 @@ public class CubeFromDeck extends DraftCube {
|
|||
for (DeckCardInfo card : cards.getCards()) {
|
||||
cubeCards.add(new CardIdentity(card.getCardName(), card.getSetCode(), card.getCardNumber()));
|
||||
}
|
||||
|
||||
// add useful info about cubes, but don't print user defined data like deck name due security reasons
|
||||
this.setUpdateInfo(String.format("%d cards", cubeCards.size()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls on server's startng, must use default name - that's name will see all users after connection
|
||||
*/
|
||||
public CubeFromDeck() {
|
||||
// don't change default name - new tourney dialog use it to choose a cube's deck
|
||||
super("Cube From Deck", "your custom cube", 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,559 @@
|
|||
package mage.tournament.cubes;
|
||||
|
||||
import mage.game.draft.DraftCube;
|
||||
|
||||
/**
|
||||
* MTGO Vintage Cube, latest version
|
||||
* <p>
|
||||
* <a href="https://scryfall.com/cubes/vintage">data source</a>
|
||||
*
|
||||
* @author JayDi85
|
||||
*/
|
||||
public class MTGOVintageCube extends DraftCube {
|
||||
|
||||
public MTGOVintageCube() {
|
||||
super("MTGO Vintage Cube", "", 2025, 4, 23);
|
||||
|
||||
cubeCards.add(new CardIdentity("\"Name Sticker\" Goblin", ""));
|
||||
cubeCards.add(new CardIdentity("Abrade", ""));
|
||||
cubeCards.add(new CardIdentity("Abrupt Decay", ""));
|
||||
cubeCards.add(new CardIdentity("Adanto Vanguard", ""));
|
||||
cubeCards.add(new CardIdentity("Adeline, Resplendent Cathar", ""));
|
||||
cubeCards.add(new CardIdentity("Aether Spellbomb", ""));
|
||||
cubeCards.add(new CardIdentity("Aetherflux Reservoir", ""));
|
||||
cubeCards.add(new CardIdentity("Agatha's Soul Cauldron", ""));
|
||||
cubeCards.add(new CardIdentity("Akal Pakal, First Among Equals", ""));
|
||||
cubeCards.add(new CardIdentity("Ancestral Recall", ""));
|
||||
cubeCards.add(new CardIdentity("Ancient Tomb", ""));
|
||||
cubeCards.add(new CardIdentity("Animate Dead", ""));
|
||||
cubeCards.add(new CardIdentity("Arbor Elf", ""));
|
||||
cubeCards.add(new CardIdentity("Arc Trail", ""));
|
||||
cubeCards.add(new CardIdentity("Archon of Cruelty", ""));
|
||||
cubeCards.add(new CardIdentity("Arid Mesa", ""));
|
||||
cubeCards.add(new CardIdentity("Arwen, Mortal Queen", ""));
|
||||
cubeCards.add(new CardIdentity("Ashen Rider", ""));
|
||||
cubeCards.add(new CardIdentity("Assimilation Aegis", ""));
|
||||
cubeCards.add(new CardIdentity("Atraxa, Grand Unifier", ""));
|
||||
cubeCards.add(new CardIdentity("Augur of Autumn", ""));
|
||||
cubeCards.add(new CardIdentity("Avacyn's Pilgrim", ""));
|
||||
cubeCards.add(new CardIdentity("Aven Interrupter", ""));
|
||||
cubeCards.add(new CardIdentity("Badlands", ""));
|
||||
cubeCards.add(new CardIdentity("Balance", ""));
|
||||
cubeCards.add(new CardIdentity("Baleful Mastery", ""));
|
||||
cubeCards.add(new CardIdentity("Baleful Strix", ""));
|
||||
cubeCards.add(new CardIdentity("Basalt Monolith", ""));
|
||||
cubeCards.add(new CardIdentity("Batterskull", ""));
|
||||
cubeCards.add(new CardIdentity("Bayou", ""));
|
||||
cubeCards.add(new CardIdentity("Benevolent Bodyguard", ""));
|
||||
cubeCards.add(new CardIdentity("Beseech the Mirror", ""));
|
||||
cubeCards.add(new CardIdentity("Birds of Paradise", ""));
|
||||
cubeCards.add(new CardIdentity("Birgi, God of Storytelling", ""));
|
||||
cubeCards.add(new CardIdentity("Bitter Triumph", ""));
|
||||
cubeCards.add(new CardIdentity("Black Lotus", ""));
|
||||
cubeCards.add(new CardIdentity("Blackcleave Cliffs", ""));
|
||||
cubeCards.add(new CardIdentity("Blade Splicer", ""));
|
||||
cubeCards.add(new CardIdentity("Blightsteel Colossus", ""));
|
||||
cubeCards.add(new CardIdentity("Blood Crypt", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodstained Mire", ""));
|
||||
cubeCards.add(new CardIdentity("Bloodtithe Harvester", ""));
|
||||
cubeCards.add(new CardIdentity("Blooming Marsh", ""));
|
||||
cubeCards.add(new CardIdentity("Bolas's Citadel", ""));
|
||||
cubeCards.add(new CardIdentity("Bone Shards", ""));
|
||||
cubeCards.add(new CardIdentity("Bonecrusher Giant", ""));
|
||||
cubeCards.add(new CardIdentity("Bonehoard Dracosaur", ""));
|
||||
cubeCards.add(new CardIdentity("Boseiju, Who Endures", ""));
|
||||
cubeCards.add(new CardIdentity("Botanical Sanctum", ""));
|
||||
cubeCards.add(new CardIdentity("Brain Freeze", ""));
|
||||
cubeCards.add(new CardIdentity("Brainstorm", ""));
|
||||
cubeCards.add(new CardIdentity("Brazen Borrower", ""));
|
||||
cubeCards.add(new CardIdentity("Breeding Pool", ""));
|
||||
cubeCards.add(new CardIdentity("Bring to Light", ""));
|
||||
cubeCards.add(new CardIdentity("Bristly Bill, Spine Sower", ""));
|
||||
cubeCards.add(new CardIdentity("Broadside Bombardiers", ""));
|
||||
cubeCards.add(new CardIdentity("Bubbling Muck", ""));
|
||||
cubeCards.add(new CardIdentity("Burst Lightning", ""));
|
||||
cubeCards.add(new CardIdentity("Cabal Ritual", ""));
|
||||
cubeCards.add(new CardIdentity("Candelabra of Tawnos", ""));
|
||||
cubeCards.add(new CardIdentity("Carnage Interpreter", ""));
|
||||
cubeCards.add(new CardIdentity("Cathar Commando", ""));
|
||||
cubeCards.add(new CardIdentity("Caustic Bronco", ""));
|
||||
cubeCards.add(new CardIdentity("Celestial Colonnade", ""));
|
||||
cubeCards.add(new CardIdentity("Chain Lightning", ""));
|
||||
cubeCards.add(new CardIdentity("Chandra, Torch of Defiance", ""));
|
||||
cubeCards.add(new CardIdentity("Channel", ""));
|
||||
cubeCards.add(new CardIdentity("Chart a Course", ""));
|
||||
cubeCards.add(new CardIdentity("Chromatic Star", ""));
|
||||
cubeCards.add(new CardIdentity("Chrome Host Seedshark", ""));
|
||||
cubeCards.add(new CardIdentity("Chrome Mox", ""));
|
||||
cubeCards.add(new CardIdentity("City of Traitors", ""));
|
||||
cubeCards.add(new CardIdentity("Coalition Relic", ""));
|
||||
cubeCards.add(new CardIdentity("Collective Brutality", ""));
|
||||
cubeCards.add(new CardIdentity("Collector's Cage", ""));
|
||||
cubeCards.add(new CardIdentity("Commercial District", ""));
|
||||
cubeCards.add(new CardIdentity("Concealed Courtyard", ""));
|
||||
cubeCards.add(new CardIdentity("Concealing Curtains", ""));
|
||||
cubeCards.add(new CardIdentity("Consider", ""));
|
||||
cubeCards.add(new CardIdentity("Containment Priest", ""));
|
||||
cubeCards.add(new CardIdentity("Copperline Gorge", ""));
|
||||
cubeCards.add(new CardIdentity("Corpse Dance", ""));
|
||||
cubeCards.add(new CardIdentity("Council's Judgment", ""));
|
||||
cubeCards.add(new CardIdentity("Counterspell", ""));
|
||||
cubeCards.add(new CardIdentity("Courser of Kruphix", ""));
|
||||
cubeCards.add(new CardIdentity("Coveted Jewel", ""));
|
||||
cubeCards.add(new CardIdentity("Craterhoof Behemoth", ""));
|
||||
cubeCards.add(new CardIdentity("Creeping Tar Pit", ""));
|
||||
cubeCards.add(new CardIdentity("Crucible of Worlds", ""));
|
||||
cubeCards.add(new CardIdentity("Cruel Ultimatum", ""));
|
||||
cubeCards.add(new CardIdentity("Cryptic Coat", ""));
|
||||
cubeCards.add(new CardIdentity("Cryptic Command", ""));
|
||||
cubeCards.add(new CardIdentity("Currency Converter", ""));
|
||||
cubeCards.add(new CardIdentity("Cut Down", ""));
|
||||
cubeCards.add(new CardIdentity("Dack Fayden", ""));
|
||||
cubeCards.add(new CardIdentity("Damn", ""));
|
||||
cubeCards.add(new CardIdentity("Dark Confidant", ""));
|
||||
cubeCards.add(new CardIdentity("Dark Ritual", ""));
|
||||
cubeCards.add(new CardIdentity("Darkslick Shores", ""));
|
||||
cubeCards.add(new CardIdentity("Dauthi Voidwalker", ""));
|
||||
cubeCards.add(new CardIdentity("Daze", ""));
|
||||
cubeCards.add(new CardIdentity("Death-Greeter's Champion", ""));
|
||||
cubeCards.add(new CardIdentity("Deep-Cavern Bat", ""));
|
||||
cubeCards.add(new CardIdentity("Delayed Blast Fireball", ""));
|
||||
cubeCards.add(new CardIdentity("Delighted Halfling", ""));
|
||||
cubeCards.add(new CardIdentity("Demonic Tutor", ""));
|
||||
cubeCards.add(new CardIdentity("Dig Through Time", ""));
|
||||
cubeCards.add(new CardIdentity("Dismember", ""));
|
||||
cubeCards.add(new CardIdentity("Displacer Kitten", ""));
|
||||
cubeCards.add(new CardIdentity("Dragon's Rage Channeler", ""));
|
||||
cubeCards.add(new CardIdentity("Dreadhorde Arcanist", ""));
|
||||
cubeCards.add(new CardIdentity("Dream Halls", ""));
|
||||
cubeCards.add(new CardIdentity("Duelist of the Mind", ""));
|
||||
cubeCards.add(new CardIdentity("Duress", ""));
|
||||
cubeCards.add(new CardIdentity("Echo of Eons", ""));
|
||||
cubeCards.add(new CardIdentity("Elegant Parlor", ""));
|
||||
cubeCards.add(new CardIdentity("Elemental Eruption", ""));
|
||||
cubeCards.add(new CardIdentity("Elite Spellbinder", ""));
|
||||
cubeCards.add(new CardIdentity("Elspeth, Knight-Errant", ""));
|
||||
cubeCards.add(new CardIdentity("Elvish Mystic", ""));
|
||||
cubeCards.add(new CardIdentity("Embereth Shieldbreaker", ""));
|
||||
cubeCards.add(new CardIdentity("Emrakul, the Aeons Torn", ""));
|
||||
cubeCards.add(new CardIdentity("Endurance", ""));
|
||||
cubeCards.add(new CardIdentity("Enlightened Tutor", ""));
|
||||
cubeCards.add(new CardIdentity("Entomb", ""));
|
||||
cubeCards.add(new CardIdentity("Ephemerate", ""));
|
||||
cubeCards.add(new CardIdentity("Escape to the Wilds", ""));
|
||||
cubeCards.add(new CardIdentity("Esika's Chariot", ""));
|
||||
cubeCards.add(new CardIdentity("Esper Sentinel", ""));
|
||||
cubeCards.add(new CardIdentity("Etali, Primal Conqueror", ""));
|
||||
cubeCards.add(new CardIdentity("Eternal Witness", ""));
|
||||
cubeCards.add(new CardIdentity("Eureka", ""));
|
||||
cubeCards.add(new CardIdentity("Everflowing Chalice", ""));
|
||||
cubeCards.add(new CardIdentity("Evolved Sleeper", ""));
|
||||
cubeCards.add(new CardIdentity("Exhume", ""));
|
||||
cubeCards.add(new CardIdentity("Exploration", ""));
|
||||
cubeCards.add(new CardIdentity("Expressive Iteration", ""));
|
||||
cubeCards.add(new CardIdentity("Fable of the Mirror-Breaker", ""));
|
||||
cubeCards.add(new CardIdentity("Faerie Mastermind", ""));
|
||||
cubeCards.add(new CardIdentity("Faithless Looting", ""));
|
||||
cubeCards.add(new CardIdentity("Fallen Shinobi", ""));
|
||||
cubeCards.add(new CardIdentity("Fastbond", ""));
|
||||
cubeCards.add(new CardIdentity("Fatal Push", ""));
|
||||
cubeCards.add(new CardIdentity("Fiery Confluence", ""));
|
||||
cubeCards.add(new CardIdentity("Fiery Islet", ""));
|
||||
cubeCards.add(new CardIdentity("Figure of Destiny", ""));
|
||||
cubeCards.add(new CardIdentity("Fire Covenant", ""));
|
||||
cubeCards.add(new CardIdentity("Fireblast", ""));
|
||||
cubeCards.add(new CardIdentity("Firebolt", ""));
|
||||
cubeCards.add(new CardIdentity("Flame Slash", ""));
|
||||
cubeCards.add(new CardIdentity("Flametongue Kavu", ""));
|
||||
cubeCards.add(new CardIdentity("Flash", ""));
|
||||
cubeCards.add(new CardIdentity("Flickerwisp", ""));
|
||||
cubeCards.add(new CardIdentity("Flooded Strand", ""));
|
||||
cubeCards.add(new CardIdentity("Force of Negation", ""));
|
||||
cubeCards.add(new CardIdentity("Force of Will", ""));
|
||||
cubeCards.add(new CardIdentity("Forensic Gadgeteer", ""));
|
||||
cubeCards.add(new CardIdentity("Forth Eorlingas!", ""));
|
||||
cubeCards.add(new CardIdentity("Fractured Identity", ""));
|
||||
cubeCards.add(new CardIdentity("Frantic Search", ""));
|
||||
cubeCards.add(new CardIdentity("Fury", ""));
|
||||
cubeCards.add(new CardIdentity("Gaea's Cradle", ""));
|
||||
cubeCards.add(new CardIdentity("Garruk Wildspeaker", ""));
|
||||
cubeCards.add(new CardIdentity("Generous Ent", ""));
|
||||
cubeCards.add(new CardIdentity("Generous Plunderer", ""));
|
||||
cubeCards.add(new CardIdentity("Gitaxian Probe", ""));
|
||||
cubeCards.add(new CardIdentity("Giver of Runes", ""));
|
||||
cubeCards.add(new CardIdentity("Gix, Yawgmoth Praetor", ""));
|
||||
cubeCards.add(new CardIdentity("Glimmer Lens", ""));
|
||||
cubeCards.add(new CardIdentity("Goblin Rabblemaster", ""));
|
||||
cubeCards.add(new CardIdentity("Godless Shrine", ""));
|
||||
cubeCards.add(new CardIdentity("Goldspan Dragon", ""));
|
||||
cubeCards.add(new CardIdentity("Goldvein Hydra", ""));
|
||||
cubeCards.add(new CardIdentity("Goryo's Vengeance", ""));
|
||||
cubeCards.add(new CardIdentity("Grave Titan", ""));
|
||||
cubeCards.add(new CardIdentity("Graveyard Trespasser", ""));
|
||||
cubeCards.add(new CardIdentity("Green Sun's Zenith", ""));
|
||||
cubeCards.add(new CardIdentity("Grief", ""));
|
||||
cubeCards.add(new CardIdentity("Grim Lavamancer", ""));
|
||||
cubeCards.add(new CardIdentity("Grim Monolith", ""));
|
||||
cubeCards.add(new CardIdentity("Griselbrand", ""));
|
||||
cubeCards.add(new CardIdentity("Grist, the Hunger Tide", ""));
|
||||
cubeCards.add(new CardIdentity("Gruff Triplets", ""));
|
||||
cubeCards.add(new CardIdentity("Guardian Scalelord", ""));
|
||||
cubeCards.add(new CardIdentity("Gut, True Soul Zealot", ""));
|
||||
cubeCards.add(new CardIdentity("Hallowed Fountain", ""));
|
||||
cubeCards.add(new CardIdentity("Hard Evidence", ""));
|
||||
cubeCards.add(new CardIdentity("Harvester of Misery", ""));
|
||||
cubeCards.add(new CardIdentity("Haywire Mite", ""));
|
||||
cubeCards.add(new CardIdentity("Headliner Scarlett", ""));
|
||||
cubeCards.add(new CardIdentity("Hedge Maze", ""));
|
||||
cubeCards.add(new CardIdentity("Helm of Awakening", ""));
|
||||
cubeCards.add(new CardIdentity("Hero of Bladehold", ""));
|
||||
cubeCards.add(new CardIdentity("Hexdrinker", ""));
|
||||
cubeCards.add(new CardIdentity("High Tide", ""));
|
||||
cubeCards.add(new CardIdentity("Highway Robbery", ""));
|
||||
cubeCards.add(new CardIdentity("Horizon Canopy", ""));
|
||||
cubeCards.add(new CardIdentity("Hostile Investigator", ""));
|
||||
cubeCards.add(new CardIdentity("Huatli, Poet of Unity", ""));
|
||||
cubeCards.add(new CardIdentity("Hullbreacher", ""));
|
||||
cubeCards.add(new CardIdentity("Hymn to Tourach", ""));
|
||||
cubeCards.add(new CardIdentity("Ignoble Hierarch", ""));
|
||||
cubeCards.add(new CardIdentity("Imperial Seal", ""));
|
||||
cubeCards.add(new CardIdentity("Indatha Triome", ""));
|
||||
cubeCards.add(new CardIdentity("Infernal Grasp", ""));
|
||||
cubeCards.add(new CardIdentity("Inquisition of Kozilek", ""));
|
||||
cubeCards.add(new CardIdentity("Inspiring Vantage", ""));
|
||||
cubeCards.add(new CardIdentity("Inti, Seneschal of the Sun", ""));
|
||||
cubeCards.add(new CardIdentity("Intrepid Adversary", ""));
|
||||
cubeCards.add(new CardIdentity("Invigorate", ""));
|
||||
cubeCards.add(new CardIdentity("Jace Reawakened", ""));
|
||||
cubeCards.add(new CardIdentity("Jace, the Mind Sculptor", ""));
|
||||
cubeCards.add(new CardIdentity("Jace, Vryn's Prodigy", ""));
|
||||
cubeCards.add(new CardIdentity("Jetmir's Garden", ""));
|
||||
cubeCards.add(new CardIdentity("Kaervek, the Punisher", ""));
|
||||
cubeCards.add(new CardIdentity("Kaito Shizuki", ""));
|
||||
cubeCards.add(new CardIdentity("Kaldra Compleat", ""));
|
||||
cubeCards.add(new CardIdentity("Kappa Cannoneer", ""));
|
||||
cubeCards.add(new CardIdentity("Karakas", ""));
|
||||
cubeCards.add(new CardIdentity("Karn, Scion of Urza", ""));
|
||||
cubeCards.add(new CardIdentity("Ketria Triome", ""));
|
||||
cubeCards.add(new CardIdentity("Kinnan, Bonder Prodigy", ""));
|
||||
cubeCards.add(new CardIdentity("Kitesail Larcenist", ""));
|
||||
cubeCards.add(new CardIdentity("Kolaghan's Command", ""));
|
||||
cubeCards.add(new CardIdentity("Kozilek, Butcher of Truth", ""));
|
||||
cubeCards.add(new CardIdentity("Kutzil, Malamet Exemplar", ""));
|
||||
cubeCards.add(new CardIdentity("Laelia, the Blade Reforged", ""));
|
||||
cubeCards.add(new CardIdentity("Lava Dart", ""));
|
||||
cubeCards.add(new CardIdentity("Lazav, Wearer of Faces", ""));
|
||||
cubeCards.add(new CardIdentity("Ledger Shredder", ""));
|
||||
cubeCards.add(new CardIdentity("Legion Extruder", ""));
|
||||
cubeCards.add(new CardIdentity("Legolas's Quick Reflexes", ""));
|
||||
cubeCards.add(new CardIdentity("Leonin Relic-Warder", ""));
|
||||
cubeCards.add(new CardIdentity("Leovold, Emissary of Trest", ""));
|
||||
cubeCards.add(new CardIdentity("Leyline Binding", ""));
|
||||
cubeCards.add(new CardIdentity("Library of Alexandria", ""));
|
||||
cubeCards.add(new CardIdentity("Life // Death", ""));
|
||||
cubeCards.add(new CardIdentity("Lightning Bolt", ""));
|
||||
cubeCards.add(new CardIdentity("Liliana of the Veil", ""));
|
||||
cubeCards.add(new CardIdentity("Lim-Dul's Vault", ""));
|
||||
cubeCards.add(new CardIdentity("Lingering Souls", ""));
|
||||
cubeCards.add(new CardIdentity("Lion Sash", ""));
|
||||
cubeCards.add(new CardIdentity("Lion's Eye Diamond", ""));
|
||||
cubeCards.add(new CardIdentity("Llanowar Elves", ""));
|
||||
cubeCards.add(new CardIdentity("Long Goodbye", ""));
|
||||
cubeCards.add(new CardIdentity("Loran of the Third Path", ""));
|
||||
cubeCards.add(new CardIdentity("Lotus Cobra", ""));
|
||||
cubeCards.add(new CardIdentity("Lotus Field", ""));
|
||||
cubeCards.add(new CardIdentity("Lotus Petal", ""));
|
||||
cubeCards.add(new CardIdentity("Luminarch Aspirant", ""));
|
||||
cubeCards.add(new CardIdentity("Lurrus of the Dream-Den", ""));
|
||||
cubeCards.add(new CardIdentity("Lush Portico", ""));
|
||||
cubeCards.add(new CardIdentity("Lorien Revealed", ""));
|
||||
cubeCards.add(new CardIdentity("Magda, Brazen Outlaw", ""));
|
||||
cubeCards.add(new CardIdentity("Magda, the Hoardmaster", ""));
|
||||
cubeCards.add(new CardIdentity("Magma Opus", ""));
|
||||
cubeCards.add(new CardIdentity("Malcolm, Alluring Scoundrel", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Confluence", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Crypt", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Drain", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Leak", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Tithe", ""));
|
||||
cubeCards.add(new CardIdentity("Mana Vault", ""));
|
||||
cubeCards.add(new CardIdentity("Manamorphose", ""));
|
||||
cubeCards.add(new CardIdentity("Manifold Key", ""));
|
||||
cubeCards.add(new CardIdentity("Marsh Flats", ""));
|
||||
cubeCards.add(new CardIdentity("Memory Jar", ""));
|
||||
cubeCards.add(new CardIdentity("Memory Lapse", ""));
|
||||
cubeCards.add(new CardIdentity("Meticulous Archive", ""));
|
||||
cubeCards.add(new CardIdentity("Mind Stone", ""));
|
||||
cubeCards.add(new CardIdentity("Mind Twist", ""));
|
||||
cubeCards.add(new CardIdentity("Mind's Desire", ""));
|
||||
cubeCards.add(new CardIdentity("Mine Collapse", ""));
|
||||
cubeCards.add(new CardIdentity("Minsc & Boo, Timeless Heroes", ""));
|
||||
cubeCards.add(new CardIdentity("Miscalculation", ""));
|
||||
cubeCards.add(new CardIdentity("Mishra's Bauble", ""));
|
||||
cubeCards.add(new CardIdentity("Mishra's Research Desk", ""));
|
||||
cubeCards.add(new CardIdentity("Mishra's Workshop", ""));
|
||||
cubeCards.add(new CardIdentity("Misty Rainforest", ""));
|
||||
cubeCards.add(new CardIdentity("Mizzix's Mastery", ""));
|
||||
cubeCards.add(new CardIdentity("Monastery Mentor", ""));
|
||||
cubeCards.add(new CardIdentity("Monastery Swiftspear", ""));
|
||||
cubeCards.add(new CardIdentity("Mother of Runes", ""));
|
||||
cubeCards.add(new CardIdentity("Mox Diamond", ""));
|
||||
cubeCards.add(new CardIdentity("Mox Emerald", ""));
|
||||
cubeCards.add(new CardIdentity("Mox Jet", ""));
|
||||
cubeCards.add(new CardIdentity("Mox Opal", ""));
|
||||
cubeCards.add(new CardIdentity("Mox Pearl", ""));
|
||||
cubeCards.add(new CardIdentity("Mox Ruby", ""));
|
||||
cubeCards.add(new CardIdentity("Mox Sapphire", ""));
|
||||
cubeCards.add(new CardIdentity("Mutagenic Growth", ""));
|
||||
cubeCards.add(new CardIdentity("Myr Battlesphere", ""));
|
||||
cubeCards.add(new CardIdentity("Mystic Confluence", ""));
|
||||
cubeCards.add(new CardIdentity("Mystic Forge", ""));
|
||||
cubeCards.add(new CardIdentity("Mystical Tutor", ""));
|
||||
cubeCards.add(new CardIdentity("Narset, Parter of Veils", ""));
|
||||
cubeCards.add(new CardIdentity("Natural Order", ""));
|
||||
cubeCards.add(new CardIdentity("Nature's Claim", ""));
|
||||
cubeCards.add(new CardIdentity("Necromancy", ""));
|
||||
cubeCards.add(new CardIdentity("Nettlecyst", ""));
|
||||
cubeCards.add(new CardIdentity("Nexus of Becoming", ""));
|
||||
cubeCards.add(new CardIdentity("Night's Whisper", ""));
|
||||
cubeCards.add(new CardIdentity("Nishoba Brawler", ""));
|
||||
cubeCards.add(new CardIdentity("Nissa, Ascended Animist", ""));
|
||||
cubeCards.add(new CardIdentity("Nissa, Who Shakes the World", ""));
|
||||
cubeCards.add(new CardIdentity("Noble Hierarch", ""));
|
||||
cubeCards.add(new CardIdentity("Nurturing Peatland", ""));
|
||||
cubeCards.add(new CardIdentity("Oath of Druids", ""));
|
||||
cubeCards.add(new CardIdentity("Oko, the Ringleader", ""));
|
||||
cubeCards.add(new CardIdentity("Oko, Thief of Crowns", ""));
|
||||
cubeCards.add(new CardIdentity("Oliphaunt", ""));
|
||||
cubeCards.add(new CardIdentity("Omnath, Locus of Creation", ""));
|
||||
cubeCards.add(new CardIdentity("Once Upon a Time", ""));
|
||||
cubeCards.add(new CardIdentity("Orcish Bowmasters", ""));
|
||||
cubeCards.add(new CardIdentity("Orcish Lumberjack", ""));
|
||||
cubeCards.add(new CardIdentity("Ornery Tumblewagg", ""));
|
||||
cubeCards.add(new CardIdentity("Otawara, Soaring City", ""));
|
||||
cubeCards.add(new CardIdentity("Otharri, Suns' Glory", ""));
|
||||
cubeCards.add(new CardIdentity("Oust", ""));
|
||||
cubeCards.add(new CardIdentity("Outland Liberator", ""));
|
||||
cubeCards.add(new CardIdentity("Overgrown Tomb", ""));
|
||||
cubeCards.add(new CardIdentity("Palace Jailer", ""));
|
||||
cubeCards.add(new CardIdentity("Palantir of Orthanc", ""));
|
||||
cubeCards.add(new CardIdentity("Paradise Druid", ""));
|
||||
cubeCards.add(new CardIdentity("Parallax Wave", ""));
|
||||
cubeCards.add(new CardIdentity("Path to Exile", ""));
|
||||
cubeCards.add(new CardIdentity("Pentad Prism", ""));
|
||||
cubeCards.add(new CardIdentity("Pest Infestation", ""));
|
||||
cubeCards.add(new CardIdentity("Phantasmal Image", ""));
|
||||
cubeCards.add(new CardIdentity("Phantom Interference", ""));
|
||||
cubeCards.add(new CardIdentity("Phyrexian Fleshgorger", ""));
|
||||
cubeCards.add(new CardIdentity("Phyrexian Metamorph", ""));
|
||||
cubeCards.add(new CardIdentity("Phyrexian Revoker", ""));
|
||||
cubeCards.add(new CardIdentity("Pick Your Poison", ""));
|
||||
cubeCards.add(new CardIdentity("Pillage the Bog", ""));
|
||||
cubeCards.add(new CardIdentity("Plateau", ""));
|
||||
cubeCards.add(new CardIdentity("Polluted Delta", ""));
|
||||
cubeCards.add(new CardIdentity("Ponder", ""));
|
||||
cubeCards.add(new CardIdentity("Portable Hole", ""));
|
||||
cubeCards.add(new CardIdentity("Portal to Phyrexia", ""));
|
||||
cubeCards.add(new CardIdentity("Portent", ""));
|
||||
cubeCards.add(new CardIdentity("Preacher of the Schism", ""));
|
||||
cubeCards.add(new CardIdentity("Preordain", ""));
|
||||
cubeCards.add(new CardIdentity("Prismatic Ending", ""));
|
||||
cubeCards.add(new CardIdentity("Prismatic Vista", ""));
|
||||
cubeCards.add(new CardIdentity("Proft's Eidetic Memory", ""));
|
||||
cubeCards.add(new CardIdentity("Pyrite Spellbomb", ""));
|
||||
cubeCards.add(new CardIdentity("Pyrokinesis", ""));
|
||||
cubeCards.add(new CardIdentity("Qasali Pridemage", ""));
|
||||
cubeCards.add(new CardIdentity("Questing Beast", ""));
|
||||
cubeCards.add(new CardIdentity("Raffine's Tower", ""));
|
||||
cubeCards.add(new CardIdentity("Ragavan, Nimble Pilferer", ""));
|
||||
cubeCards.add(new CardIdentity("Raging Ravine", ""));
|
||||
cubeCards.add(new CardIdentity("Railway Brawler", ""));
|
||||
cubeCards.add(new CardIdentity("Rain of Filth", ""));
|
||||
cubeCards.add(new CardIdentity("Rampaging Raptor", ""));
|
||||
cubeCards.add(new CardIdentity("Ramunap Excavator", ""));
|
||||
cubeCards.add(new CardIdentity("Ranger Class", ""));
|
||||
cubeCards.add(new CardIdentity("Raucous Theater", ""));
|
||||
cubeCards.add(new CardIdentity("Raugrin Triome", ""));
|
||||
cubeCards.add(new CardIdentity("Razorverge Thicket", ""));
|
||||
cubeCards.add(new CardIdentity("Reanimate", ""));
|
||||
cubeCards.add(new CardIdentity("Recurring Nightmare", ""));
|
||||
cubeCards.add(new CardIdentity("Regrowth", ""));
|
||||
cubeCards.add(new CardIdentity("Relic of Progenitus", ""));
|
||||
cubeCards.add(new CardIdentity("Relic of Sauron", ""));
|
||||
cubeCards.add(new CardIdentity("Remand", ""));
|
||||
cubeCards.add(new CardIdentity("Reprieve", ""));
|
||||
cubeCards.add(new CardIdentity("Restless Vents", ""));
|
||||
cubeCards.add(new CardIdentity("Retrofitter Foundry", ""));
|
||||
cubeCards.add(new CardIdentity("Rite of Flame", ""));
|
||||
cubeCards.add(new CardIdentity("Robber of the Rich", ""));
|
||||
cubeCards.add(new CardIdentity("Rofellos, Llanowar Emissary", ""));
|
||||
cubeCards.add(new CardIdentity("Runaway Steam-Kin", ""));
|
||||
cubeCards.add(new CardIdentity("Sacred Foundry", ""));
|
||||
cubeCards.add(new CardIdentity("Saheeli, Sublime Artificer", ""));
|
||||
cubeCards.add(new CardIdentity("Sail into the West", ""));
|
||||
cubeCards.add(new CardIdentity("Samwise the Stouthearted", ""));
|
||||
cubeCards.add(new CardIdentity("Sandstorm Salvager", ""));
|
||||
cubeCards.add(new CardIdentity("Sanguine Evangelist", ""));
|
||||
cubeCards.add(new CardIdentity("Savai Triome", ""));
|
||||
cubeCards.add(new CardIdentity("Savannah", ""));
|
||||
cubeCards.add(new CardIdentity("Scalding Tarn", ""));
|
||||
cubeCards.add(new CardIdentity("Scavenging Ooze", ""));
|
||||
cubeCards.add(new CardIdentity("Scrapwork Mutt", ""));
|
||||
cubeCards.add(new CardIdentity("Scrubland", ""));
|
||||
cubeCards.add(new CardIdentity("Seachrome Coast", ""));
|
||||
cubeCards.add(new CardIdentity("Seasoned Pyromancer", ""));
|
||||
cubeCards.add(new CardIdentity("Seething Song", ""));
|
||||
cubeCards.add(new CardIdentity("Selfless Spirit", ""));
|
||||
cubeCards.add(new CardIdentity("Sensei's Divining Top", ""));
|
||||
cubeCards.add(new CardIdentity("Sentinel of the Nameless City", ""));
|
||||
cubeCards.add(new CardIdentity("Serra Paragon", ""));
|
||||
cubeCards.add(new CardIdentity("Serum Visions", ""));
|
||||
cubeCards.add(new CardIdentity("Sevinne's Reclamation", ""));
|
||||
cubeCards.add(new CardIdentity("Shadowspear", ""));
|
||||
cubeCards.add(new CardIdentity("Shadowy Backstreet", ""));
|
||||
cubeCards.add(new CardIdentity("Shallow Grave", ""));
|
||||
cubeCards.add(new CardIdentity("Shelldock Isle", ""));
|
||||
cubeCards.add(new CardIdentity("Sheoldred's Edict", ""));
|
||||
cubeCards.add(new CardIdentity("Sheoldred, the Apocalypse", ""));
|
||||
cubeCards.add(new CardIdentity("Shorikai, Genesis Engine", ""));
|
||||
cubeCards.add(new CardIdentity("Show and Tell", ""));
|
||||
cubeCards.add(new CardIdentity("Showdown of the Skalds", ""));
|
||||
cubeCards.add(new CardIdentity("Silent Clearing", ""));
|
||||
cubeCards.add(new CardIdentity("Skullclamp", ""));
|
||||
cubeCards.add(new CardIdentity("Skyclave Apparition", ""));
|
||||
cubeCards.add(new CardIdentity("Slickshot Show-Off", ""));
|
||||
cubeCards.add(new CardIdentity("Smuggler's Copter", ""));
|
||||
cubeCards.add(new CardIdentity("Smuggler's Surprise", ""));
|
||||
cubeCards.add(new CardIdentity("Snap", ""));
|
||||
cubeCards.add(new CardIdentity("Snapcaster Mage", ""));
|
||||
cubeCards.add(new CardIdentity("Sneak Attack", ""));
|
||||
cubeCards.add(new CardIdentity("Snuff Out", ""));
|
||||
cubeCards.add(new CardIdentity("Sol Ring", ""));
|
||||
cubeCards.add(new CardIdentity("Solitude", ""));
|
||||
cubeCards.add(new CardIdentity("Soul-Guide Lantern", ""));
|
||||
cubeCards.add(new CardIdentity("Soul-Scar Mage", ""));
|
||||
cubeCards.add(new CardIdentity("Spara's Headquarters", ""));
|
||||
cubeCards.add(new CardIdentity("Spell Pierce", ""));
|
||||
cubeCards.add(new CardIdentity("Spellseeker", ""));
|
||||
cubeCards.add(new CardIdentity("Spirebluff Canal", ""));
|
||||
cubeCards.add(new CardIdentity("Staff of the Storyteller", ""));
|
||||
cubeCards.add(new CardIdentity("Steam Vents", ""));
|
||||
cubeCards.add(new CardIdentity("Steel Seraph", ""));
|
||||
cubeCards.add(new CardIdentity("Stern Scolding", ""));
|
||||
cubeCards.add(new CardIdentity("Stomping Ground", ""));
|
||||
cubeCards.add(new CardIdentity("Stoneforge Mystic", ""));
|
||||
cubeCards.add(new CardIdentity("Strip Mine", ""));
|
||||
cubeCards.add(new CardIdentity("Student of Warfare", ""));
|
||||
cubeCards.add(new CardIdentity("Subtlety", ""));
|
||||
cubeCards.add(new CardIdentity("Sunbaked Canyon", ""));
|
||||
cubeCards.add(new CardIdentity("Sunfall", ""));
|
||||
cubeCards.add(new CardIdentity("Sword of the Meek", ""));
|
||||
cubeCards.add(new CardIdentity("Swords to Plowshares", ""));
|
||||
cubeCards.add(new CardIdentity("Sylvan Caryatid", ""));
|
||||
cubeCards.add(new CardIdentity("Sylvan Library", ""));
|
||||
cubeCards.add(new CardIdentity("Sylvan Safekeeper", ""));
|
||||
cubeCards.add(new CardIdentity("Taiga", ""));
|
||||
cubeCards.add(new CardIdentity("Talisman of Conviction", ""));
|
||||
cubeCards.add(new CardIdentity("Talisman of Creativity", ""));
|
||||
cubeCards.add(new CardIdentity("Talisman of Curiosity", ""));
|
||||
cubeCards.add(new CardIdentity("Talisman of Dominance", ""));
|
||||
cubeCards.add(new CardIdentity("Talisman of Indulgence", ""));
|
||||
cubeCards.add(new CardIdentity("Talisman of Progress", ""));
|
||||
cubeCards.add(new CardIdentity("Tamiyo, Collector of Tales", ""));
|
||||
cubeCards.add(new CardIdentity("Tarmogoyf", ""));
|
||||
cubeCards.add(new CardIdentity("Tear Asunder", ""));
|
||||
cubeCards.add(new CardIdentity("Teferi, Hero of Dominaria", ""));
|
||||
cubeCards.add(new CardIdentity("Teferi, Time Raveler", ""));
|
||||
cubeCards.add(new CardIdentity("Temple Garden", ""));
|
||||
cubeCards.add(new CardIdentity("Tenacious Underdog", ""));
|
||||
cubeCards.add(new CardIdentity("Tendrils of Agony", ""));
|
||||
cubeCards.add(new CardIdentity("Territorial Kavu", ""));
|
||||
cubeCards.add(new CardIdentity("Thalia, Guardian of Thraben", ""));
|
||||
cubeCards.add(new CardIdentity("The Gitrog, Ravenous Ride", ""));
|
||||
cubeCards.add(new CardIdentity("The Mightstone and Weakstone", ""));
|
||||
cubeCards.add(new CardIdentity("The One Ring", ""));
|
||||
cubeCards.add(new CardIdentity("The Wandering Emperor", ""));
|
||||
cubeCards.add(new CardIdentity("Thieving Skydiver", ""));
|
||||
cubeCards.add(new CardIdentity("Third Path Iconoclast", ""));
|
||||
cubeCards.add(new CardIdentity("Thopter Foundry", ""));
|
||||
cubeCards.add(new CardIdentity("Thought Scour", ""));
|
||||
cubeCards.add(new CardIdentity("Thoughtseize", ""));
|
||||
cubeCards.add(new CardIdentity("Thraben Inspector", ""));
|
||||
cubeCards.add(new CardIdentity("Three Steps Ahead", ""));
|
||||
cubeCards.add(new CardIdentity("Through the Breach", ""));
|
||||
cubeCards.add(new CardIdentity("Thundering Falls", ""));
|
||||
cubeCards.add(new CardIdentity("Thundermaw Hellkite", ""));
|
||||
cubeCards.add(new CardIdentity("Tidehollow Sculler", ""));
|
||||
cubeCards.add(new CardIdentity("Time Spiral", ""));
|
||||
cubeCards.add(new CardIdentity("Time Walk", ""));
|
||||
cubeCards.add(new CardIdentity("Time Warp", ""));
|
||||
cubeCards.add(new CardIdentity("Timeless Dragon", ""));
|
||||
cubeCards.add(new CardIdentity("Timetwister", ""));
|
||||
cubeCards.add(new CardIdentity("Tinker", ""));
|
||||
cubeCards.add(new CardIdentity("Tireless Tracker", ""));
|
||||
cubeCards.add(new CardIdentity("Tishana's Tidebinder", ""));
|
||||
cubeCards.add(new CardIdentity("Titania, Protector of Argoth", ""));
|
||||
cubeCards.add(new CardIdentity("Tolarian Academy", ""));
|
||||
cubeCards.add(new CardIdentity("Torsten, Founder of Benalia", ""));
|
||||
cubeCards.add(new CardIdentity("Touch the Spirit Realm", ""));
|
||||
cubeCards.add(new CardIdentity("Tough Cookie", ""));
|
||||
cubeCards.add(new CardIdentity("Tourach, Dread Cantor", ""));
|
||||
cubeCards.add(new CardIdentity("Toxic Deluge", ""));
|
||||
cubeCards.add(new CardIdentity("Treachery", ""));
|
||||
cubeCards.add(new CardIdentity("Treasure Cruise", ""));
|
||||
cubeCards.add(new CardIdentity("Trinket Mage", ""));
|
||||
cubeCards.add(new CardIdentity("Triplicate Titan", ""));
|
||||
cubeCards.add(new CardIdentity("Troll of Khazad-dum", ""));
|
||||
cubeCards.add(new CardIdentity("Tropical Island", ""));
|
||||
cubeCards.add(new CardIdentity("True-Name Nemesis", ""));
|
||||
cubeCards.add(new CardIdentity("Trumpeting Carnosaur", ""));
|
||||
cubeCards.add(new CardIdentity("Tundra", ""));
|
||||
cubeCards.add(new CardIdentity("Turnabout", ""));
|
||||
cubeCards.add(new CardIdentity("Ulamog, the Infinite Gyre", ""));
|
||||
cubeCards.add(new CardIdentity("Ulvenwald Oddity", ""));
|
||||
cubeCards.add(new CardIdentity("Umezawa's Jitte", ""));
|
||||
cubeCards.add(new CardIdentity("Undercity Sewers", ""));
|
||||
cubeCards.add(new CardIdentity("Underground Mortuary", ""));
|
||||
cubeCards.add(new CardIdentity("Underground Sea", ""));
|
||||
cubeCards.add(new CardIdentity("Underworld Breach", ""));
|
||||
cubeCards.add(new CardIdentity("Unearth", ""));
|
||||
cubeCards.add(new CardIdentity("Unexpectedly Absent", ""));
|
||||
cubeCards.add(new CardIdentity("Unholy Heat", ""));
|
||||
cubeCards.add(new CardIdentity("Upheaval", ""));
|
||||
cubeCards.add(new CardIdentity("Urborg, Tomb of Yawgmoth", ""));
|
||||
cubeCards.add(new CardIdentity("Urza's Saga", ""));
|
||||
cubeCards.add(new CardIdentity("Urza, Lord High Artificer", ""));
|
||||
cubeCards.add(new CardIdentity("Usher of the Fallen", ""));
|
||||
cubeCards.add(new CardIdentity("Utopia Sprawl", ""));
|
||||
cubeCards.add(new CardIdentity("Valki, God of Lies", ""));
|
||||
cubeCards.add(new CardIdentity("Vampiric Tutor", ""));
|
||||
cubeCards.add(new CardIdentity("Vaultborn Tyrant", ""));
|
||||
cubeCards.add(new CardIdentity("Verdant Catacombs", ""));
|
||||
cubeCards.add(new CardIdentity("Vindicate", ""));
|
||||
cubeCards.add(new CardIdentity("Virtue of Loyalty", ""));
|
||||
cubeCards.add(new CardIdentity("Virtue of Persistence", ""));
|
||||
cubeCards.add(new CardIdentity("Volcanic Island", ""));
|
||||
cubeCards.add(new CardIdentity("Voldaren Epicure", ""));
|
||||
cubeCards.add(new CardIdentity("Walking Ballista", ""));
|
||||
cubeCards.add(new CardIdentity("Wasteland", ""));
|
||||
cubeCards.add(new CardIdentity("Waterlogged Grove", ""));
|
||||
cubeCards.add(new CardIdentity("Watery Grave", ""));
|
||||
cubeCards.add(new CardIdentity("Wheel of Fortune", ""));
|
||||
cubeCards.add(new CardIdentity("Winds of Abandon", ""));
|
||||
cubeCards.add(new CardIdentity("Windswept Heath", ""));
|
||||
cubeCards.add(new CardIdentity("Wishclaw Talisman", ""));
|
||||
cubeCards.add(new CardIdentity("Wooded Foothills", ""));
|
||||
cubeCards.add(new CardIdentity("Woodfall Primus", ""));
|
||||
cubeCards.add(new CardIdentity("Worldspine Wurm", ""));
|
||||
cubeCards.add(new CardIdentity("Wrath of God", ""));
|
||||
cubeCards.add(new CardIdentity("Wrenn and Six", ""));
|
||||
cubeCards.add(new CardIdentity("Xander's Lounge", ""));
|
||||
cubeCards.add(new CardIdentity("Yavimaya, Cradle of Growth", ""));
|
||||
cubeCards.add(new CardIdentity("Yawgmoth's Will", ""));
|
||||
cubeCards.add(new CardIdentity("Zagoth Triome", ""));
|
||||
cubeCards.add(new CardIdentity("Ziatora's Proving Ground", ""));
|
||||
cubeCards.add(new CardIdentity("Zirda, the Dawnwaker", ""));
|
||||
cubeCards.add(new CardIdentity("Zuran Orb", ""));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue