Merge pull request #4948 from jmharmon/master

Added new modern deck types from Old School 93/94
This commit is contained in:
Oleg Agafonov 2018-05-18 15:44:34 +04:00 committed by GitHub
commit 82fee4e5bd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 1016 additions and 180 deletions

View file

@ -0,0 +1,300 @@
/*
* Copyright 2011 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.deck;
import mage.cards.ExpansionSet;
import mage.cards.Sets;
import mage.cards.decks.Constructed;
import mage.constants.SetType;
/**
* This class validates a deck for the Old School 93/94 format, specifically for
* the Channel Fireball Rules.
*
* This was originally made to follow the deck construction rules found at the
* Old School Mtg blog found at:
* http://oldschool-mtg.blogspot.com/p/banrestriction.html
*
* There is no mana burn in this version of old school
*
* @author jmharmon
*/
public class OldSchool9394CFB extends Constructed {
public OldSchool9394CFB() {
super("Constructed - Old School 93/94 - Channel Fireball Rules");
// use the set instances to make sure that we get the correct set codes
setCodes.add(mage.sets.LimitedEditionAlpha.getInstance().getCode());
setCodes.add(mage.sets.LimitedEditionBeta.getInstance().getCode());
setCodes.add(mage.sets.UnlimitedEdition.getInstance().getCode());
setCodes.add(mage.sets.ArabianNights.getInstance().getCode());
setCodes.add(mage.sets.Antiquities.getInstance().getCode());
setCodes.add(mage.sets.Legends.getInstance().getCode());
setCodes.add(mage.sets.TheDark.getInstance().getCode());
setCodes.add(mage.sets.FallenEmpires.getInstance().getCode());
setCodes.add(mage.sets.MediaInserts.getInstance().getCode());
// ante cards and conspiracies banned, with specifically mentioned ones called out.
banned.add("Advantageous Proclamation");
banned.add("Amulet of Quoz");
banned.add("Backup Plan");
banned.add("Brago's Favor");
banned.add("Bronze Tablet"); ///
banned.add("Contract from Below"); ///
banned.add("Darkpact"); ///
banned.add("Demonic Attorney"); ///
banned.add("Double Stroke");
banned.add("Immediate Action");
banned.add("Iterative Analysis");
banned.add("Jeweled Bird"); ///
banned.add("Muzzio's Preparations");
banned.add("Power Play");
banned.add("Rebirth"); ///
banned.add("Secret Summoning");
banned.add("Secrets of Paradise");
banned.add("Sentinel Dispatch");
banned.add("Tempest Efreet"); ///
banned.add("Timmerian Fiends");
banned.add("Unexpected Potential");
banned.add("Worldknit");
//Let Media Inserts Arena and Sewers of Estark being only cards playable
banned.add("Acquire");
banned.add("Aeronaut Tinkerer");
banned.add("Ajani, Caller of the Pride");
banned.add("Ajani Steadfast");
banned.add("Alhammarret, High Arbiter");
banned.add("Angelic Skirmisher");
banned.add("Angel of Glory's Rise");
banned.add("Ankle Shanker");
banned.add("Arashin Sovereign");
banned.add("Archfiend of Depravity");
banned.add("Archfiend of Ifnir");
banned.add("Arrest");
banned.add("Assembled Alphas");
banned.add("Avalanche Tusker");
banned.add("Barrage Tyrant");
banned.add("Bloodthrone Vampire");
banned.add("Boltwing Marauder");
banned.add("Bonescythe Sliver");
banned.add("Breath of Malfegor");
banned.add("Brion Stoutarm");
banned.add("Broodmate Dragon");
banned.add("Burning Sun's Avatar");
banned.add("Canopy Vista");
banned.add("Cathedral of War");
banned.add("Celestial Colonnade");
banned.add("Chandra, Fire of Kaladesh");
banned.add("Chandra, Flamecaller");
banned.add("Chandra, Pyromaster");
banned.add("Chandra, Pyromaster");
banned.add("Chandra, Roaring Flame");
banned.add("Chandra, Torch of Defiance");
banned.add("Chandra's Fury");
banned.add("Chandra's Phoenix");
banned.add("Cinder Glade");
banned.add("Consume Spirit");
banned.add("Corrupt");
banned.add("Day of Judgment");
banned.add("Deepfathom Skulker");
banned.add("Defiant Bloodlord");
banned.add("Devil's Play");
banned.add("Dragon Fodder");
banned.add("Dragonlord's Servant");
banned.add("Dragonscale General");
banned.add("Dread Defiler");
banned.add("Dreg Mangler");
banned.add("Drogskol Cavalry");
banned.add("Dromoka, the Eternal");
banned.add("Drowner of Hope");
banned.add("Duress");
banned.add("Dwynen, Gilt-Leaf Daen");
banned.add("Eidolon of Blossoms");
banned.add("Electrolyze");
banned.add("Elusive Tormentor");
banned.add("Emrakul, the Aeons Torn");
banned.add("Evolving Wilds");
banned.add("Faithless Looting");
banned.add("Fated Conflagration");
banned.add("Feast of Blood");
banned.add("Flameblade Angel");
banned.add("Flamerush Rider");
banned.add("Foe-Razer Regent");
banned.add("Frost Titan");
banned.add("Garruk, Apex Predator");
banned.add("Garruk, Caller of Beasts");
banned.add("Garruk Wildspeaker");
banned.add("Gaze of Granite");
banned.add("Genesis Hydra");
banned.add("Giant Badger");
banned.add("Gideon of the Trials");
banned.add("Gideon, Ally of Zendikar");
banned.add("Gideon, Battle-Forged");
banned.add("Gladehart Cavalry");
banned.add("Goblin Dark-Dwellers");
banned.add("Goblin Rabblemaster");
banned.add("Gravecrawler");
banned.add("Grave Titan");
banned.add("Guul Draz Assassin");
banned.add("Hamletback Goliath");
banned.add("Harbinger of the Hunt");
banned.add("Hero of Goma Fada");
banned.add("Hixus, Prison Warden");
banned.add("Honored Hierarch");
banned.add("Honor of the Pure");
banned.add("Inferno Titan");
banned.add("Insidious Mist");
banned.add("Ivorytusk Fortress");
banned.add("Jace Beleren");
banned.add("Jace, Memory Adept");
banned.add("Jace, Telepath Unbound");
banned.add("Jace, the Living Guildpact");
banned.add("Jace, Unraveler of Secrets");
banned.add("Jace, Unraveler of Secrets");
banned.add("Jace, Vryn's Prodigy");
banned.add("Jaya Ballard, Task Mage");
banned.add("Karametra's Acolyte");
banned.add("Knight Exemplar");
banned.add("Kor Skyfisher");
banned.add("Kothophed, Soul Hoarder");
banned.add("Kytheon, Hero of Akros");
banned.add("Lightning Hounds");
banned.add("Liliana of the Dark Realms");
banned.add("Liliana, Death's Majesty");
banned.add("Liliana, Defiant Necromancer");
banned.add("Liliana, the Last Hope");
banned.add("Liliana Vess");
banned.add("Liliana Vess");
banned.add("Magister of Worth");
banned.add("Mana Crypt");
banned.add("Markov Dreadknight");
banned.add("Memoricide");
banned.add("Merfolk Mesmerist");
banned.add("Mirran Crusader");
banned.add("Munda's Vanguard");
banned.add("Nalathni Dragon");
banned.add("Necromaster Dragon");
banned.add("Nephalia Moondrakes");
banned.add("Niblis of Frost");
banned.add("Nicol Bolas, God-Pharaoh");
banned.add("Nightveil Specter");
banned.add("Nissa Revane");
banned.add("Nissa, Sage Animist");
banned.add("Nissa, Steward of Elements");
banned.add("Nissa, Vastwood Seer");
banned.add("Nissa, Voice of Zendikar");
banned.add("Nissa, Worldwaker");
banned.add("Noosegraf Mob");
banned.add("Ogre Arsonist");
banned.add("Ogre Battledriver");
banned.add("Ojutai's Command");
banned.add("Oran-Rief Hydra");
banned.add("Phyrexian Rager");
banned.add("Pia and Kiran Nalaar");
banned.add("Prairie Stream");
banned.add("Primordial Hydra");
banned.add("Pristine Skywise");
banned.add("Rakshasa Vizier");
banned.add("Ratchet Bomb");
banned.add("Rattleclaw Mystic");
banned.add("Ravenous Bloodseeker");
banned.add("Relic Seeker");
banned.add("Render Silent");
banned.add("Retaliator Griffin");
banned.add("Ruinous Path");
banned.add("Sage-Eye Avengers");
banned.add("Sage of the Inward Eye");
banned.add("Sanctifier of Souls");
banned.add("Sandsteppe Citadel");
banned.add("Scavenging Ooze");
banned.add("Scrap Trawler");
banned.add("Scythe Leopard");
banned.add("Seeker of the Way");
banned.add("Serra Avatar");
banned.add("Shamanic Revelation");
banned.add("Siege Rhino");
banned.add("Silverblade Paladin");
banned.add("Silver Drake");
banned.add("Skyship Stalker");
banned.add("Smoldering Marsh");
banned.add("Soul of Ravnica");
banned.add("Soul of Zendikar");
banned.add("Soul Swallower");
banned.add("Spined Wurm");
banned.add("Standstill");
banned.add("Stealer of Secrets");
banned.add("Steward of Valeron");
banned.add("Sultai Charm");
banned.add("Sunblast Angel");
banned.add("Sunken Hollow");
banned.add("Supreme Verdict");
banned.add("Surgical Extraction");
banned.add("Sylvan Caryatid");
banned.add("Temur War Shaman");
banned.add("Terastodon");
banned.add("Thalia, Heretic Cathar");
banned.add("Treasure Hunt");
banned.add("Turnabout");
banned.add("Tyrant of Valakut");
banned.add("Ulvenwald Observer");
banned.add("Valorous Stance");
banned.add("Vampire Nocturnus");
banned.add("Voidmage Husher");
banned.add("Warmonger");
banned.add("Wash Out");
banned.add("Wildfire Eternal");
banned.add("Windseeker Centaur");
banned.add("Xathrid Necromancer");
restricted.add("Ancestral Recall");
restricted.add("Balance");
restricted.add("Black Lotus");
restricted.add("Braingeyser");
restricted.add("Channel");
restricted.add("Chaos Orb");
restricted.add("Demonic Tutor");
restricted.add("Library of Alexandria");
restricted.add("Mana Drain");
restricted.add("Maze of Ith");
restricted.add("Mind Twist");
restricted.add("Mox Emerald");
restricted.add("Mox Jet");
restricted.add("Mox Pearl");
restricted.add("Mox Ruby");
restricted.add("Mox Sapphire");
restricted.add("Recall");
restricted.add("Regrowth");
restricted.add("Sol Ring");
restricted.add("Strip Mine");
restricted.add("Time Vault");
restricted.add("Time Walk");
restricted.add("Timetwister");
restricted.add("Wheel of Fortune");
}
}

View file

@ -0,0 +1,301 @@
/*
* Copyright 2011 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.deck;
import mage.cards.ExpansionSet;
import mage.cards.Sets;
import mage.cards.decks.Constructed;
import mage.constants.SetType;
/**
* This class validates a deck for the Old School 93/94 format, specifically for
* the EC Rules.
*
* This was originally made to follow the deck construction rules found at the
* Old School Mtg blog found at:
* http://oldschool-mtg.blogspot.com/p/banrestriction.html
*
* There is no mana burn in this version of old school
*
* @author jmharmon
*/
public class OldSchool9394EC extends Constructed {
public OldSchool9394EC() {
super("Constructed - Old School 93/94 - EC Rules");
// use the set instances to make sure that we get the correct set codes
setCodes.add(mage.sets.LimitedEditionAlpha.getInstance().getCode());
setCodes.add(mage.sets.LimitedEditionBeta.getInstance().getCode());
setCodes.add(mage.sets.UnlimitedEdition.getInstance().getCode());
setCodes.add(mage.sets.ArabianNights.getInstance().getCode());
setCodes.add(mage.sets.Antiquities.getInstance().getCode());
setCodes.add(mage.sets.Legends.getInstance().getCode());
setCodes.add(mage.sets.TheDark.getInstance().getCode());
setCodes.add(mage.sets.FallenEmpires.getInstance().getCode());
setCodes.add(mage.sets.MediaInserts.getInstance().getCode());
// ante cards and conspiracies banned, with specifically mentioned ones called out.
banned.add("Advantageous Proclamation");
banned.add("Amulet of Quoz");
banned.add("Backup Plan");
banned.add("Brago's Favor");
banned.add("Bronze Tablet"); ///
banned.add("Contract from Below"); ///
banned.add("Darkpact"); ///
banned.add("Demonic Attorney"); ///
banned.add("Double Stroke");
banned.add("Immediate Action");
banned.add("Iterative Analysis");
banned.add("Jeweled Bird"); ///
banned.add("Muzzio's Preparations");
banned.add("Power Play");
banned.add("Rebirth"); ///
banned.add("Secret Summoning");
banned.add("Secrets of Paradise");
banned.add("Sentinel Dispatch");
banned.add("Shahrazad");
banned.add("Tempest Efreet"); ///
banned.add("Timmerian Fiends");
banned.add("Unexpected Potential");
banned.add("Worldknit");
//Let Media Inserts Arena and Sewers of Estark being only cards playable
banned.add("Acquire");
banned.add("Aeronaut Tinkerer");
banned.add("Ajani, Caller of the Pride");
banned.add("Ajani Steadfast");
banned.add("Alhammarret, High Arbiter");
banned.add("Angelic Skirmisher");
banned.add("Angel of Glory's Rise");
banned.add("Ankle Shanker");
banned.add("Arashin Sovereign");
banned.add("Archfiend of Depravity");
banned.add("Archfiend of Ifnir");
banned.add("Arrest");
banned.add("Assembled Alphas");
banned.add("Avalanche Tusker");
banned.add("Barrage Tyrant");
banned.add("Bloodthrone Vampire");
banned.add("Boltwing Marauder");
banned.add("Bonescythe Sliver");
banned.add("Breath of Malfegor");
banned.add("Brion Stoutarm");
banned.add("Broodmate Dragon");
banned.add("Burning Sun's Avatar");
banned.add("Canopy Vista");
banned.add("Cathedral of War");
banned.add("Celestial Colonnade");
banned.add("Chandra, Fire of Kaladesh");
banned.add("Chandra, Flamecaller");
banned.add("Chandra, Pyromaster");
banned.add("Chandra, Pyromaster");
banned.add("Chandra, Roaring Flame");
banned.add("Chandra, Torch of Defiance");
banned.add("Chandra's Fury");
banned.add("Chandra's Phoenix");
banned.add("Cinder Glade");
banned.add("Consume Spirit");
banned.add("Corrupt");
banned.add("Day of Judgment");
banned.add("Deepfathom Skulker");
banned.add("Defiant Bloodlord");
banned.add("Devil's Play");
banned.add("Dragon Fodder");
banned.add("Dragonlord's Servant");
banned.add("Dragonscale General");
banned.add("Dread Defiler");
banned.add("Dreg Mangler");
banned.add("Drogskol Cavalry");
banned.add("Dromoka, the Eternal");
banned.add("Drowner of Hope");
banned.add("Duress");
banned.add("Dwynen, Gilt-Leaf Daen");
banned.add("Eidolon of Blossoms");
banned.add("Electrolyze");
banned.add("Elusive Tormentor");
banned.add("Emrakul, the Aeons Torn");
banned.add("Evolving Wilds");
banned.add("Faithless Looting");
banned.add("Fated Conflagration");
banned.add("Feast of Blood");
banned.add("Flameblade Angel");
banned.add("Flamerush Rider");
banned.add("Foe-Razer Regent");
banned.add("Frost Titan");
banned.add("Garruk, Apex Predator");
banned.add("Garruk, Caller of Beasts");
banned.add("Garruk Wildspeaker");
banned.add("Gaze of Granite");
banned.add("Genesis Hydra");
banned.add("Giant Badger");
banned.add("Gideon of the Trials");
banned.add("Gideon, Ally of Zendikar");
banned.add("Gideon, Battle-Forged");
banned.add("Gladehart Cavalry");
banned.add("Goblin Dark-Dwellers");
banned.add("Goblin Rabblemaster");
banned.add("Gravecrawler");
banned.add("Grave Titan");
banned.add("Guul Draz Assassin");
banned.add("Hamletback Goliath");
banned.add("Harbinger of the Hunt");
banned.add("Hero of Goma Fada");
banned.add("Hixus, Prison Warden");
banned.add("Honored Hierarch");
banned.add("Honor of the Pure");
banned.add("Inferno Titan");
banned.add("Insidious Mist");
banned.add("Ivorytusk Fortress");
banned.add("Jace Beleren");
banned.add("Jace, Memory Adept");
banned.add("Jace, Telepath Unbound");
banned.add("Jace, the Living Guildpact");
banned.add("Jace, Unraveler of Secrets");
banned.add("Jace, Unraveler of Secrets");
banned.add("Jace, Vryn's Prodigy");
banned.add("Jaya Ballard, Task Mage");
banned.add("Karametra's Acolyte");
banned.add("Knight Exemplar");
banned.add("Kor Skyfisher");
banned.add("Kothophed, Soul Hoarder");
banned.add("Kytheon, Hero of Akros");
banned.add("Lightning Hounds");
banned.add("Liliana of the Dark Realms");
banned.add("Liliana, Death's Majesty");
banned.add("Liliana, Defiant Necromancer");
banned.add("Liliana, the Last Hope");
banned.add("Liliana Vess");
banned.add("Liliana Vess");
banned.add("Magister of Worth");
banned.add("Mana Crypt");
banned.add("Markov Dreadknight");
banned.add("Memoricide");
banned.add("Merfolk Mesmerist");
banned.add("Mirran Crusader");
banned.add("Munda's Vanguard");
banned.add("Nalathni Dragon");
banned.add("Necromaster Dragon");
banned.add("Nephalia Moondrakes");
banned.add("Niblis of Frost");
banned.add("Nicol Bolas, God-Pharaoh");
banned.add("Nightveil Specter");
banned.add("Nissa Revane");
banned.add("Nissa, Sage Animist");
banned.add("Nissa, Steward of Elements");
banned.add("Nissa, Vastwood Seer");
banned.add("Nissa, Voice of Zendikar");
banned.add("Nissa, Worldwaker");
banned.add("Noosegraf Mob");
banned.add("Ogre Arsonist");
banned.add("Ogre Battledriver");
banned.add("Ojutai's Command");
banned.add("Oran-Rief Hydra");
banned.add("Phyrexian Rager");
banned.add("Pia and Kiran Nalaar");
banned.add("Prairie Stream");
banned.add("Primordial Hydra");
banned.add("Pristine Skywise");
banned.add("Rakshasa Vizier");
banned.add("Ratchet Bomb");
banned.add("Rattleclaw Mystic");
banned.add("Ravenous Bloodseeker");
banned.add("Relic Seeker");
banned.add("Render Silent");
banned.add("Retaliator Griffin");
banned.add("Ruinous Path");
banned.add("Sage-Eye Avengers");
banned.add("Sage of the Inward Eye");
banned.add("Sanctifier of Souls");
banned.add("Sandsteppe Citadel");
banned.add("Scavenging Ooze");
banned.add("Scrap Trawler");
banned.add("Scythe Leopard");
banned.add("Seeker of the Way");
banned.add("Serra Avatar");
banned.add("Shamanic Revelation");
banned.add("Siege Rhino");
banned.add("Silverblade Paladin");
banned.add("Silver Drake");
banned.add("Skyship Stalker");
banned.add("Smoldering Marsh");
banned.add("Soul of Ravnica");
banned.add("Soul of Zendikar");
banned.add("Soul Swallower");
banned.add("Spined Wurm");
banned.add("Standstill");
banned.add("Stealer of Secrets");
banned.add("Steward of Valeron");
banned.add("Sultai Charm");
banned.add("Sunblast Angel");
banned.add("Sunken Hollow");
banned.add("Supreme Verdict");
banned.add("Surgical Extraction");
banned.add("Sylvan Caryatid");
banned.add("Temur War Shaman");
banned.add("Terastodon");
banned.add("Thalia, Heretic Cathar");
banned.add("Treasure Hunt");
banned.add("Turnabout");
banned.add("Tyrant of Valakut");
banned.add("Ulvenwald Observer");
banned.add("Valorous Stance");
banned.add("Vampire Nocturnus");
banned.add("Voidmage Husher");
banned.add("Warmonger");
banned.add("Wash Out");
banned.add("Wildfire Eternal");
banned.add("Windseeker Centaur");
banned.add("Xathrid Necromancer");
restricted.add("Ancestral Recall");
restricted.add("Balance");
restricted.add("Black Lotus");
restricted.add("Braingeyser");
restricted.add("Channel");
restricted.add("Chaos Orb");
restricted.add("Demonic Tutor");
restricted.add("Library of Alexandria");
restricted.add("Mana Drain");
restricted.add("Maze of Ith");
restricted.add("Mind Twist");
restricted.add("Mox Emerald");
restricted.add("Mox Jet");
restricted.add("Mox Pearl");
restricted.add("Mox Ruby");
restricted.add("Mox Sapphire");
restricted.add("Recall");
restricted.add("Regrowth");
restricted.add("Sol Ring");
restricted.add("Time Vault");
restricted.add("Time Walk");
restricted.add("Timetwister");
restricted.add("Wheel of Fortune");
}
}

View file

@ -0,0 +1,118 @@
/*
* Copyright 2011 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.deck;
import mage.cards.ExpansionSet;
import mage.cards.Sets;
import mage.cards.decks.Constructed;
import mage.constants.SetType;
/**
* This class validates a deck for the Old School 93/94 format, specifically the
* EudoGames Rules.
*
* This was originally made to follow the deck construction rules found at the
* Old School Mtg blog found at:
* http://oldschool-mtg.blogspot.com/p/banrestriction.html
*
* There is no mana burn in this version of old school.
*
* @author jmharmon
*/
public class OldSchool9394EG extends Constructed {
public OldSchool9394EG() {
super("Constructed - Old School 93/94 - EudoGames Rules");
// use the set instances to make sure that we get the correct set codes
setCodes.add(mage.sets.LimitedEditionAlpha.getInstance().getCode());
setCodes.add(mage.sets.LimitedEditionBeta.getInstance().getCode());
setCodes.add(mage.sets.UnlimitedEdition.getInstance().getCode());
setCodes.add(mage.sets.ArabianNights.getInstance().getCode());
setCodes.add(mage.sets.Antiquities.getInstance().getCode());
setCodes.add(mage.sets.Legends.getInstance().getCode());
setCodes.add(mage.sets.TheDark.getInstance().getCode());
setCodes.add(mage.sets.RevisedEdition.getInstance().getCode());
setCodes.add(mage.sets.FallenEmpires.getInstance().getCode());
setCodes.add(mage.sets.Chronicles.getInstance().getCode());
// ante cards and conspiracies banned, with specifically mentioned ones called out.
banned.add("Advantageous Proclamation");
banned.add("Amulet of Quoz");
banned.add("Backup Plan");
banned.add("Brago's Favor");
banned.add("Bronze Tablet"); ///
banned.add("Contract from Below"); ///
banned.add("Darkpact"); ///
banned.add("Demonic Attorney"); ///
banned.add("Double Stroke");
banned.add("Immediate Action");
banned.add("Iterative Analysis");
banned.add("Jeweled Bird"); ///
banned.add("Muzzio's Preparations");
banned.add("Power Play");
banned.add("Rebirth"); ///
banned.add("Secret Summoning");
banned.add("Secrets of Paradise");
banned.add("Sentinel Dispatch");
banned.add("Shahrazad");
banned.add("Tempest Efreet"); ///
banned.add("Timmerian Fiends");
banned.add("Unexpected Potential");
banned.add("Worldknit");
restricted.add("Ancestral Recall");
restricted.add("Balance");
restricted.add("Black Lotus");
restricted.add("Braingeyser");
restricted.add("Channel");
restricted.add("Chaos Orb");
restricted.add("Demonic Tutor");
restricted.add("Library of Alexandria");
restricted.add("Mana Drain");
restricted.add("Mana Vault");
restricted.add("Maze of Ith");
restricted.add("Mind Twist");
restricted.add("Mishra's Workshop");
restricted.add("Mox Emerald");
restricted.add("Mox Jet");
restricted.add("Mox Pearl");
restricted.add("Mox Ruby");
restricted.add("Mox Sapphire");
restricted.add("Regrowth");
restricted.add("Recall");
restricted.add("Shahrazad");
restricted.add("Sol Ring");
restricted.add("Strip Mine");
restricted.add("Time Vault");
restricted.add("Time Walk");
restricted.add("Timetwister");
restricted.add("Wheel of Fortune");
}
}

View file

@ -0,0 +1,113 @@
/*
* Copyright 2011 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.deck;
import mage.cards.ExpansionSet;
import mage.cards.Sets;
import mage.cards.decks.Constructed;
import mage.constants.SetType;
/**
* This class validates a deck for the Old School 93/94 format, specifically for
* the Italian Rules.
*
* This was originally made to follow the deck construction rules found at the
* Old School Mtg blog found at:
* http://oldschool-mtg.blogspot.com/p/banrestriction.html
*
* There is no mana burn in this version of old school
*
* @author jmharmon
*/
public class OldSchool9394Italian extends Constructed{
public OldSchool9394Italian() {
super("Constructed - Old School 93/94 - Italian Rules");
// use the set instances to make sure that we get the correct set codes
setCodes.add(mage.sets.LimitedEditionAlpha.getInstance().getCode());
setCodes.add(mage.sets.LimitedEditionBeta.getInstance().getCode());
setCodes.add(mage.sets.UnlimitedEdition.getInstance().getCode());
setCodes.add(mage.sets.ArabianNights.getInstance().getCode());
setCodes.add(mage.sets.Antiquities.getInstance().getCode());
setCodes.add(mage.sets.Legends.getInstance().getCode());
setCodes.add(mage.sets.TheDark.getInstance().getCode());
setCodes.add(mage.sets.RevisedEdition.getInstance().getCode());
// ante cards and conspiracies banned, with specifically mentioned ones called out.
banned.add("Advantageous Proclamation");
banned.add("Amulet of Quoz");
banned.add("Backup Plan");
banned.add("Brago's Favor");
banned.add("Bronze Tablet"); ///
banned.add("Contract from Below"); ///
banned.add("Darkpact"); ///
banned.add("Demonic Attorney"); ///
banned.add("Double Stroke");
banned.add("Immediate Action");
banned.add("Iterative Analysis");
banned.add("Jeweled Bird"); ///
banned.add("Muzzio's Preparations");
banned.add("Power Play");
banned.add("Rebirth"); ///
banned.add("Secret Summoning");
banned.add("Secrets of Paradise");
banned.add("Sentinel Dispatch");
banned.add("Shahrazad");
banned.add("Tempest Efreet"); ///
banned.add("Timmerian Fiends");
banned.add("Unexpected Potential");
banned.add("Worldknit");
restricted.add("Ancestral Recall");
restricted.add("Balance");
restricted.add("Black Lotus");
restricted.add("Braingeyser");
restricted.add("Channel");
restricted.add("Chaos Orb");
restricted.add("Demonic Tutor");
restricted.add("Library of Alexandria");
restricted.add("Mana Drain");
restricted.add("Mind Twist");
restricted.add("Mishra's Workshop");
restricted.add("Mox Emerald");
restricted.add("Mox Jet");
restricted.add("Mox Pearl");
restricted.add("Mox Ruby");
restricted.add("Mox Sapphire");
restricted.add("Regrowth");
restricted.add("Shahrazad");
restricted.add("Sol Ring");
restricted.add("Strip Mine");
restricted.add("Time Vault");
restricted.add("Time Walk");
restricted.add("Timetwister");
restricted.add("Wheel of Fortune");
}
}

View file

@ -1,180 +1,184 @@
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Config.xsd">
<!--
serverAddress - ip of the XMage server. Set it to "0.0.0.0" for local host or to the IP the server should use
port - the port the primary server socket is bound to
secondaryBindPort - the port to which the secondary server socket is to be bound. if "-1" is set , an arbitrary port is selected.
backlogSize - the preferred number of unaccepted incoming connections allowed at a given time. The actual number may be greater
than the specified backlog. When the queue is full, further connection requests are rejected. The JBoss default value is 200
numAcceptThreads - the number of threads listening on the ServerSocket. The JBoss default value is 1
maxPoolSize - the maximum number of ServerThreads that can exist at any given time. The JBoss default value is 300
leasePeriod - To turn on server side connection failure detection of remoting clients, it is necessary to satisfy two criteria.
The first is that the client lease period is set and is a value greater than 0. The value is represented in milliseconds.
The client lease period can be set by either the 'clientLeasePeriod' attribute within the Connector configuration or by calling the Connector method
socketWriteTimeout - All write operations will time out if they do not complete within the configured period.
maxGameThreads - Number of games that can be started simultanously on the server
maxSecondsIdle - Number of seconds after that a game is auto conceded by the player that was idle for such a time
minUserNameLength - minmal allowed length of a user name to connect to the server
maxUserNameLength - maximal allowed length of a user name to connect to the server
userNamePattern - pattern for user name validity check
maxAiOpponents - number of allowed AI opponents on the server
saveGameActivated - allow game save and replay options (not working correctly yet)
authenticationActivated - "true" = user have to register to signon "false" = user need not to register
* mail configs only needed if authentication is activated:
* if mailUser = "" mailgun is used otherwise nativ mail server on the system
googleAccount - not supported currently
mailgunApiKey - key from the mailgun domain e.g. = "key-12121111..."
mailgunDomain - domain for the mailgun message sending
mailSmtpHost - hostname to send the mail
mailSmtpPort - port to send the mail
mailUser - username used to send the mail
mailPassword - passworf of the used user to send the mail
mailFromAddress - sender address
-->
<server serverAddress="0.0.0.0"
serverName="mage-server"
port="17171"
secondaryBindPort="17179"
backlogSize="200"
numAcceptThreads="2"
maxPoolSize="300"
leasePeriod="5000"
socketWriteTimeout="10000"
maxGameThreads="10"
maxSecondsIdle="300"
minUserNameLength="3"
maxUserNameLength="14"
invalidUserNamePattern="[^a-z0-9_]"
minPasswordLength="8"
maxPasswordLength="100"
maxAiOpponents="15"
saveGameActivated="false"
authenticationActivated="false"
googleAccount=""
mailgunApiKey="key-d93e81f19a9c9ed243ebb7cc9381385c"
mailgunDomain="sandbox401a433f30d445309a5e86b6c53f7812.mailgun.org"
mailSmtpHost="smtp.1und1.de"
mailSmtpPort="465"
mailUser="xmageserver@online.de"
mailPassword="24wrsfxv"
mailFromAddress="xmageserver@online.de"
/>
<playerTypes>
<playerType name="Human" jar="mage-player-human.jar" className="mage.player.human.HumanPlayer"/>
<!--<playerType name="Computer - minimax" jar="mage-player-aiminimax.jar" className="mage.player.ai.ComputerPlayer3"/>-->
<playerType name="Computer - mad" jar="mage-player-ai-ma.jar" className="mage.player.ai.ComputerPlayer7"/>
<!--<playerType name="Computer - monte carlo" jar="mage-player-aimcts.jar" className="mage.player.ai.ComputerPlayerMCTS"/>-->
<playerType name="Computer - draftbot" jar="mage-player-ai-draft-bot.jar" className="mage.player.ai.ComputerDraftPlayer"/>
</playerTypes>
<gameTypes>
<gameType name="Two Player Duel" jar="mage-game-twoplayerduel.jar" className="mage.game.TwoPlayerMatch" typeName="mage.game.TwoPlayerDuelType"/>
<gameType name="Free For All" jar="mage-game-freeforall.jar" className="mage.game.FreeForAllMatch" typeName="mage.game.FreeForAllType"/>
<gameType name="Commander Two Player Duel" jar="mage-game-commanderduel.jar" className="mage.game.CommanderDuelMatch" typeName="mage.game.CommanderDuelType"/>
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
<gameType name="Tiny Leaders Two Player Duel" jar="mage-game-tinyleadersduel.jar" className="mage.game.TinyLeadersDuelMatch" typeName="mage.game.TinyLeadersDuelType"/>
<gameType name="Canadian Highlander Two Player Duel" jar="mage-game-canadianhighlanderduel.jar" className="mage.game.CanadianHighlanderDuelMatch" typeName="mage.game.CanadianHighlanderDuelType"/>
<gameType name="Penny Dreadful Commander Free For All" jar="mage-game-pennydreadfulcommanderfreeforall.jar" className="mage.game.PennyDreadfulCommanderFreeForAllMatch" typeName="mage.game.PennyDreadfulCommanderFreeForAllType"/>
<gameType name="Freeform Commander Free For All" jar="mage-game-freeformcommanderfreeforall.jar" className="mage.game.FreeformCommanderFreeForAllMatch" typeName="mage.game.FreeformCommanderFreeForAllType"/>
<gameType name="Brawl Two Player Duel" jar="mage-game-brawlduel.jar" className="mage.game.BrawlDuelMatch" typeName="mage.game.BrawlDuelType"/>
<gameType name="Brawl Free For All" jar="mage-game-brawlfreeforall.jar" className="mage.game.BrawlFreeForAllMatch" typeName="mage.game.BrawlFreeForAllType"/>
<gameType name="Momir Basic Two Player Duel" jar="mage-game-momirduel.jar" className="mage.game.MomirDuelMatch" typeName="mage.game.MomirDuelType"/>
<gameType name="Momir Basic Free For All" jar="mage-game-momir.jar" className="mage.game.MomirFreeForAllMatch" typeName="mage.game.MomirFreeForAllType"/>
</gameTypes>
<tournamentTypes>
<tournamentType name="Constructed Elimination" jar="mage-tournament-constructed.jar" className="mage.tournament.ConstructedEliminationTournament" typeName="mage.tournament.ConstructedEliminationTournamentType"/>
<tournamentType name="Constructed Swiss" jar="mage-tournament-constructed.jar" className="mage.tournament.ConstructedSwissTournament" typeName="mage.tournament.ConstructedSwissTournamentType"/>
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Elimination (Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
<tournamentType name="Booster Draft Elimination (Random)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RandomBoosterDraftEliminationTournament" typeName="mage.tournament.RandomBoosterDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Elimination (Rich Man)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RichManDraftEliminationTournament" typeName="mage.tournament.RichManDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Elimination (Rich Man Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RichManCubeDraftEliminationTournament" typeName="mage.tournament.RichManCubeDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Swiss" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissTournamentType"/>
<tournamentType name="Booster Draft Swiss (Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissCubeTournamentType"/>
<tournamentType name="Booster Draft Swiss (Random)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RandomBoosterDraftSwissTournament" typeName="mage.tournament.RandomBoosterDraftSwissTournamentType"/>
<tournamentType name="Sealed Elimination" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationTournamentType"/>
<tournamentType name="Sealed Elimination (Cube)" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationCubeTournamentType"/>
<tournamentType name="Sealed Swiss" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissTournamentType"/>
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissCubeTournamentType"/>
</tournamentTypes>
<draftCubes>
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.BensCube"/>
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor720"/>
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.EricKlugsProTourCube"/>
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JimDavisCube"/>
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MonoBlueCube"/>
<draftCube name="Sam Black's No Search Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.SamBlacksCube"/>
<draftCube name="Timothee Simonot's Twisted Color Pie Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGOMarchCube2014"/>
<draftCube name="MTGO Legacy Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCube"/>
<draftCube name="MTGO Legacy Cube 2015 March" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeMarch2015"/>
<draftCube name="MTGO Legacy Cube 2015 September" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeSeptember2015"/>
<draftCube name="MTGO Legacy Cube 2016 January" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeJanuary2016"/>
<draftCube name="MTGO Legacy Cube 2016 September" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeSeptember2016"/>
<draftCube name="MTGO Legacy Cube 2017 January" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeJanuary2017"/>
<draftCube name="MTGO Legacy Cube 2017 April" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeApril2017"/>
<draftCube name="MTGO Legacy Cube 2018 February" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCube2018February"/>
<draftCube name="MTGO Legendary Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegendaryCube"/>
<draftCube name="MTGO Legendary Cube April 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegendaryCubeApril2016"/>
<draftCube name="MTGO Modern Cube 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.ModernCube2017"/>
<draftCube name="MTGO Vintage Cube 2013" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2013"/>
<draftCube name="MTGO Vintage Cube 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2014"/>
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2015"/>
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2016"/>
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeNovember2016"/>
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2017"/>
<draftCube name="MTGO Vintage Cube December 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeDecember2017"/>
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeFromDeck"/>
</draftCubes>
<deckTypes>
<deckType name="Constructed - Standard" jar="mage-deck-constructed.jar" className="mage.deck.Standard"/>
<deckType name="Constructed - Extended" jar="mage-deck-constructed.jar" className="mage.deck.Extended"/>
<deckType name="Constructed - Frontier" jar="mage-deck-constructed.jar" className="mage.deck.Frontier"/>
<deckType name="Constructed - Modern" jar="mage-deck-constructed.jar" className="mage.deck.Modern"/>
<deckType name="Constructed - Modern - No Banned List" jar="mage-deck-constructed.jar" className="mage.deck.ModernNoBannedList"/>
<deckType name="Constructed - Eternal" jar="mage-deck-constructed.jar" className="mage.deck.Eternal"/>
<deckType name="Constructed - Legacy" jar="mage-deck-constructed.jar" className="mage.deck.Legacy"/>
<deckType name="Constructed - Vintage" jar="mage-deck-constructed.jar" className="mage.deck.Vintage"/>
<deckType name="Constructed - Pauper" jar="mage-deck-constructed.jar" className="mage.deck.Pauper"/>
<deckType name="Constructed - Historical Type 2" jar="mage-deck-constructed.jar" className="mage.deck.HistoricalType2"/>
<deckType name="Constructed - Super Type 2" jar="mage-deck-constructed.jar" className="mage.deck.SuperType2"/>
<deckType name="Constructed - Freeform" jar="mage-deck-constructed.jar" className="mage.deck.Freeform"/>
<deckType name="Constructed - Old School 93/94" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394"/>
<deckType name="Constructed - Australian Highlander" jar="mage-deck-constructed.jar" className="mage.deck.AusHighlander"/>
<deckType name="Constructed - Canadian Highlander" jar="mage-deck-constructed.jar" className="mage.deck.CanadianHighlander"/>
<deckType name="Constructed - Freeform" jar="mage-deck-constructed.jar" className="mage.deck.Freeform"/>
<deckType name="Variant Magic - Commander" jar="mage-deck-constructed.jar" className="mage.deck.Commander"/>
<deckType name="Variant Magic - Duel Commander" jar="mage-deck-constructed.jar" className="mage.deck.DuelCommander"/>
<deckType name="Variant Magic - MTGO 1v1 Commander" jar="mage-deck-constructed.jar" className="mage.deck.MTGO1v1Commander"/>
<deckType name="Variant Magic - Tiny Leaders" jar="mage-deck-constructed.jar" className="mage.deck.TinyLeaders"/>
<deckType name="Variant Magic - Momir Basic" jar="mage-deck-constructed.jar" className="mage.deck.Momir"/>
<deckType name="Variant Magic - Penny Dreadful Commander" jar="mage-deck-constructed.jar" className="mage.deck.PennyDreadfulCommander"/>
<deckType name="Variant Magic - Freeform Commander" jar="mage-deck-constructed.jar" className="mage.deck.FreeformCommander"/>
<deckType name="Variant Magic - Brawl" jar="mage-deck-constructed.jar" className="mage.deck.Brawl"/>
<deckType name="Block Constructed - Amonkhet" jar="mage-deck-constructed.jar" className="mage.deck.AmonkhetBlock"/>
<deckType name="Block Constructed - Battle for Zendikar" jar="mage-deck-constructed.jar" className="mage.deck.BattleForZendikarBlock"/>
<deckType name="Block Constructed - Innistrad" jar="mage-deck-constructed.jar" className="mage.deck.InnistradBlock"/>
<deckType name="Block Constructed - Ixalan" jar="mage-deck-constructed.jar" className="mage.deck.IxalanBlock"/>
<deckType name="Block Constructed - Kaladesh" jar="mage-deck-constructed.jar" className="mage.deck.KaladeshBlock"/>
<deckType name="Block Constructed - Kamigawa" jar="mage-deck-constructed.jar" className="mage.deck.KamigawaBlock"/>
<deckType name="Block Constructed - Khans of Tarkir" jar="mage-deck-constructed.jar" className="mage.deck.KhansOfTarkirBlock"/>
<deckType name="Block Constructed - Lorwyn" jar="mage-deck-constructed.jar" className="mage.deck.LorwynBlock"/>
<deckType name="Block Constructed - Return to Ravnica" jar="mage-deck-constructed.jar" className="mage.deck.ReturnToRavnicaBlock"/>
<deckType name="Block Constructed - Scars of Mirrodin" jar="mage-deck-constructed.jar" className="mage.deck.ScarsOfMirrodinBlock"/>
<deckType name="Block Constructed - Shadowmoor" jar="mage-deck-constructed.jar" className="mage.deck.ShadowmoorBlock"/>
<deckType name="Block Constructed - Shadows over Innistrad" jar="mage-deck-constructed.jar" className="mage.deck.ShadowsOverInnistradBlock"/>
<deckType name="Block Constructed - Shards of Alara" jar="mage-deck-constructed.jar" className="mage.deck.ShardsOfAlaraBlock"/>
<deckType name="Block Constructed - Theros" jar="mage-deck-constructed.jar" className="mage.deck.TherosBlock"/>
<deckType name="Block Constructed - Zendikar" jar="mage-deck-constructed.jar" className="mage.deck.ZendikarBlock"/>
<deckType name="Block Constructed Custom - Star Wars" jar="mage-deck-constructed.jar" className="mage.deck.StarWarsBlock"/>
<deckType name="Limited" jar="mage-deck-limited.jar" className="mage.deck.Limited"/>
</deckTypes>
</config>
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Config.xsd">
<!--
serverAddress - ip of the XMage server. Set it to "0.0.0.0" for local host or to the IP the server should use
port - the port the primary server socket is bound to
secondaryBindPort - the port to which the secondary server socket is to be bound. if "-1" is set , an arbitrary port is selected.
backlogSize - the preferred number of unaccepted incoming connections allowed at a given time. The actual number may be greater
than the specified backlog. When the queue is full, further connection requests are rejected. The JBoss default value is 200
numAcceptThreads - the number of threads listening on the ServerSocket. The JBoss default value is 1
maxPoolSize - the maximum number of ServerThreads that can exist at any given time. The JBoss default value is 300
leasePeriod - To turn on server side connection failure detection of remoting clients, it is necessary to satisfy two criteria.
The first is that the client lease period is set and is a value greater than 0. The value is represented in milliseconds.
The client lease period can be set by either the 'clientLeasePeriod' attribute within the Connector configuration or by calling the Connector method
socketWriteTimeout - All write operations will time out if they do not complete within the configured period.
maxGameThreads - Number of games that can be started simultanously on the server
maxSecondsIdle - Number of seconds after that a game is auto conceded by the player that was idle for such a time
minUserNameLength - minmal allowed length of a user name to connect to the server
maxUserNameLength - maximal allowed length of a user name to connect to the server
userNamePattern - pattern for user name validity check
maxAiOpponents - number of allowed AI opponents on the server
saveGameActivated - allow game save and replay options (not working correctly yet)
authenticationActivated - "true" = user have to register to signon "false" = user need not to register
* mail configs only needed if authentication is activated:
* if mailUser = "" mailgun is used otherwise nativ mail server on the system
googleAccount - not supported currently
mailgunApiKey - key from the mailgun domain e.g. = "key-12121111..."
mailgunDomain - domain for the mailgun message sending
mailSmtpHost - hostname to send the mail
mailSmtpPort - port to send the mail
mailUser - username used to send the mail
mailPassword - passworf of the used user to send the mail
mailFromAddress - sender address
-->
<server serverAddress="0.0.0.0"
serverName="mage-server"
port="17171"
secondaryBindPort="17179"
backlogSize="200"
numAcceptThreads="2"
maxPoolSize="300"
leasePeriod="5000"
socketWriteTimeout="10000"
maxGameThreads="10"
maxSecondsIdle="300"
minUserNameLength="3"
maxUserNameLength="14"
invalidUserNamePattern="[^a-z0-9_]"
minPasswordLength="8"
maxPasswordLength="100"
maxAiOpponents="15"
saveGameActivated="false"
authenticationActivated="false"
googleAccount=""
mailgunApiKey="key-d93e81f19a9c9ed243ebb7cc9381385c"
mailgunDomain="sandbox401a433f30d445309a5e86b6c53f7812.mailgun.org"
mailSmtpHost="smtp.1und1.de"
mailSmtpPort="465"
mailUser="xmageserver@online.de"
mailPassword="24wrsfxv"
mailFromAddress="xmageserver@online.de"
/>
<playerTypes>
<playerType name="Human" jar="mage-player-human.jar" className="mage.player.human.HumanPlayer"/>
<!--<playerType name="Computer - minimax" jar="mage-player-aiminimax.jar" className="mage.player.ai.ComputerPlayer3"/>-->
<playerType name="Computer - mad" jar="mage-player-ai-ma.jar" className="mage.player.ai.ComputerPlayer7"/>
<!--<playerType name="Computer - monte carlo" jar="mage-player-aimcts.jar" className="mage.player.ai.ComputerPlayerMCTS"/>-->
<playerType name="Computer - draftbot" jar="mage-player-ai-draft-bot.jar" className="mage.player.ai.ComputerDraftPlayer"/>
</playerTypes>
<gameTypes>
<gameType name="Two Player Duel" jar="mage-game-twoplayerduel.jar" className="mage.game.TwoPlayerMatch" typeName="mage.game.TwoPlayerDuelType"/>
<gameType name="Free For All" jar="mage-game-freeforall.jar" className="mage.game.FreeForAllMatch" typeName="mage.game.FreeForAllType"/>
<gameType name="Commander Two Player Duel" jar="mage-game-commanderduel.jar" className="mage.game.CommanderDuelMatch" typeName="mage.game.CommanderDuelType"/>
<gameType name="Commander Free For All" jar="mage-game-commanderfreeforall.jar" className="mage.game.CommanderFreeForAllMatch" typeName="mage.game.CommanderFreeForAllType"/>
<gameType name="Tiny Leaders Two Player Duel" jar="mage-game-tinyleadersduel.jar" className="mage.game.TinyLeadersDuelMatch" typeName="mage.game.TinyLeadersDuelType"/>
<gameType name="Canadian Highlander Two Player Duel" jar="mage-game-canadianhighlanderduel.jar" className="mage.game.CanadianHighlanderDuelMatch" typeName="mage.game.CanadianHighlanderDuelType"/>
<gameType name="Penny Dreadful Commander Free For All" jar="mage-game-pennydreadfulcommanderfreeforall.jar" className="mage.game.PennyDreadfulCommanderFreeForAllMatch" typeName="mage.game.PennyDreadfulCommanderFreeForAllType"/>
<gameType name="Freeform Commander Free For All" jar="mage-game-freeformcommanderfreeforall.jar" className="mage.game.FreeformCommanderFreeForAllMatch" typeName="mage.game.FreeformCommanderFreeForAllType"/>
<gameType name="Brawl Two Player Duel" jar="mage-game-brawlduel.jar" className="mage.game.BrawlDuelMatch" typeName="mage.game.BrawlDuelType"/>
<gameType name="Brawl Free For All" jar="mage-game-brawlfreeforall.jar" className="mage.game.BrawlFreeForAllMatch" typeName="mage.game.BrawlFreeForAllType"/>
<gameType name="Momir Basic Two Player Duel" jar="mage-game-momirduel.jar" className="mage.game.MomirDuelMatch" typeName="mage.game.MomirDuelType"/>
<gameType name="Momir Basic Free For All" jar="mage-game-momir.jar" className="mage.game.MomirFreeForAllMatch" typeName="mage.game.MomirFreeForAllType"/>
</gameTypes>
<tournamentTypes>
<tournamentType name="Constructed Elimination" jar="mage-tournament-constructed.jar" className="mage.tournament.ConstructedEliminationTournament" typeName="mage.tournament.ConstructedEliminationTournamentType"/>
<tournamentType name="Constructed Swiss" jar="mage-tournament-constructed.jar" className="mage.tournament.ConstructedSwissTournament" typeName="mage.tournament.ConstructedSwissTournamentType"/>
<tournamentType name="Booster Draft Elimination" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Elimination (Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftEliminationTournament" typeName="mage.tournament.BoosterDraftEliminationCubeTournamentType"/>
<tournamentType name="Booster Draft Elimination (Random)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RandomBoosterDraftEliminationTournament" typeName="mage.tournament.RandomBoosterDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Elimination (Rich Man)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RichManDraftEliminationTournament" typeName="mage.tournament.RichManDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Elimination (Rich Man Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RichManCubeDraftEliminationTournament" typeName="mage.tournament.RichManCubeDraftEliminationTournamentType"/>
<tournamentType name="Booster Draft Swiss" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissTournamentType"/>
<tournamentType name="Booster Draft Swiss (Cube)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.BoosterDraftSwissTournament" typeName="mage.tournament.BoosterDraftSwissCubeTournamentType"/>
<tournamentType name="Booster Draft Swiss (Random)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.RandomBoosterDraftSwissTournament" typeName="mage.tournament.RandomBoosterDraftSwissTournamentType"/>
<tournamentType name="Sealed Elimination" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationTournamentType"/>
<tournamentType name="Sealed Elimination (Cube)" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedEliminationTournament" typeName="mage.tournament.SealedEliminationCubeTournamentType"/>
<tournamentType name="Sealed Swiss" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissTournamentType"/>
<tournamentType name="Sealed Swiss (Cube)" jar="mage-tournament-sealed.jar" className="mage.tournament.SealedSwissTournament" typeName="mage.tournament.SealedSwissCubeTournamentType"/>
</tournamentTypes>
<draftCubes>
<draftCube name="Adam Styborski's Pauper Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.AdamStyborskisPauperCube"/>
<draftCube name="Ben's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.BensCube"/>
<draftCube name="Cube Tutor 360 Pauper" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor360Pauper"/>
<draftCube name="Cube Tutor 720" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeTutor720"/>
<draftCube name="Eric Klug's Pro Tour Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.EricKlugsProTourCube"/>
<draftCube name="Guillaume Matignon's Jenny's/Johnny's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.GuillaumeMatignonsJennysJohnnysCube"/>
<draftCube name="Jim Davis's Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JimDavisCube"/>
<draftCube name="Joseph Vasoli's Peasant Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.JosephVasolisPeasantCube"/>
<draftCube name="Mono Blue Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MonoBlueCube"/>
<draftCube name="Sam Black's No Search Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.SamBlacksCube"/>
<draftCube name="Timothee Simonot's Twisted Color Pie Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.TimotheeSimonotsTwistedColorPieCube"/>
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGOMarchCube2014"/>
<draftCube name="MTGO Legacy Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCube"/>
<draftCube name="MTGO Legacy Cube 2015 March" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeMarch2015"/>
<draftCube name="MTGO Legacy Cube 2015 September" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeSeptember2015"/>
<draftCube name="MTGO Legacy Cube 2016 January" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeJanuary2016"/>
<draftCube name="MTGO Legacy Cube 2016 September" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeSeptember2016"/>
<draftCube name="MTGO Legacy Cube 2017 January" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeJanuary2017"/>
<draftCube name="MTGO Legacy Cube 2017 April" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCubeApril2017"/>
<draftCube name="MTGO Legacy Cube 2018 February" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegacyCube2018February"/>
<draftCube name="MTGO Legendary Cube" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegendaryCube"/>
<draftCube name="MTGO Legendary Cube April 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.LegendaryCubeApril2016"/>
<draftCube name="MTGO Modern Cube 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.ModernCube2017"/>
<draftCube name="MTGO Vintage Cube 2013" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2013"/>
<draftCube name="MTGO Vintage Cube 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2014"/>
<draftCube name="MTGO Vintage Cube 2015" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2015"/>
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2016"/>
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeNovember2016"/>
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2017"/>
<draftCube name="MTGO Vintage Cube December 2017" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeDecember2017"/>
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeFromDeck"/>
</draftCubes>
<deckTypes>
<deckType name="Constructed - Standard" jar="mage-deck-constructed.jar" className="mage.deck.Standard"/>
<deckType name="Constructed - Extended" jar="mage-deck-constructed.jar" className="mage.deck.Extended"/>
<deckType name="Constructed - Frontier" jar="mage-deck-constructed.jar" className="mage.deck.Frontier"/>
<deckType name="Constructed - Modern" jar="mage-deck-constructed.jar" className="mage.deck.Modern"/>
<deckType name="Constructed - Modern - No Banned List" jar="mage-deck-constructed.jar" className="mage.deck.ModernNoBannedList"/>
<deckType name="Constructed - Eternal" jar="mage-deck-constructed.jar" className="mage.deck.Eternal"/>
<deckType name="Constructed - Legacy" jar="mage-deck-constructed.jar" className="mage.deck.Legacy"/>
<deckType name="Constructed - Vintage" jar="mage-deck-constructed.jar" className="mage.deck.Vintage"/>
<deckType name="Constructed - Pauper" jar="mage-deck-constructed.jar" className="mage.deck.Pauper"/>
<deckType name="Constructed - Historical Type 2" jar="mage-deck-constructed.jar" className="mage.deck.HistoricalType2"/>
<deckType name="Constructed - Super Type 2" jar="mage-deck-constructed.jar" className="mage.deck.SuperType2"/>
<deckType name="Constructed - Freeform" jar="mage-deck-constructed.jar" className="mage.deck.Freeform"/>
<deckType name="Constructed - Old School 93/94" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394"/>
<deckType name="Constructed - Old School 93/94 - Italian Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394Italian"/>
<deckType name="Constructed - Old School 93/94 - Channel Fireball Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394CFB"/>
<deckType name="Constructed - Old School 93/94 - EudoGames Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394EG"/>
<deckType name="Constructed - Old School 93/94 - EC Rules" jar="mage-deck-constructed.jar" className="mage.deck.OldSchool9394EC"/>
<deckType name="Constructed - Australian Highlander" jar="mage-deck-constructed.jar" className="mage.deck.AusHighlander"/>
<deckType name="Constructed - Canadian Highlander" jar="mage-deck-constructed.jar" className="mage.deck.CanadianHighlander"/>
<deckType name="Constructed - Freeform" jar="mage-deck-constructed.jar" className="mage.deck.Freeform"/>
<deckType name="Variant Magic - Commander" jar="mage-deck-constructed.jar" className="mage.deck.Commander"/>
<deckType name="Variant Magic - Duel Commander" jar="mage-deck-constructed.jar" className="mage.deck.DuelCommander"/>
<deckType name="Variant Magic - MTGO 1v1 Commander" jar="mage-deck-constructed.jar" className="mage.deck.MTGO1v1Commander"/>
<deckType name="Variant Magic - Tiny Leaders" jar="mage-deck-constructed.jar" className="mage.deck.TinyLeaders"/>
<deckType name="Variant Magic - Momir Basic" jar="mage-deck-constructed.jar" className="mage.deck.Momir"/>
<deckType name="Variant Magic - Penny Dreadful Commander" jar="mage-deck-constructed.jar" className="mage.deck.PennyDreadfulCommander"/>
<deckType name="Variant Magic - Freeform Commander" jar="mage-deck-constructed.jar" className="mage.deck.FreeformCommander"/>
<deckType name="Variant Magic - Brawl" jar="mage-deck-constructed.jar" className="mage.deck.Brawl"/>
<deckType name="Block Constructed - Amonkhet" jar="mage-deck-constructed.jar" className="mage.deck.AmonkhetBlock"/>
<deckType name="Block Constructed - Battle for Zendikar" jar="mage-deck-constructed.jar" className="mage.deck.BattleForZendikarBlock"/>
<deckType name="Block Constructed - Innistrad" jar="mage-deck-constructed.jar" className="mage.deck.InnistradBlock"/>
<deckType name="Block Constructed - Ixalan" jar="mage-deck-constructed.jar" className="mage.deck.IxalanBlock"/>
<deckType name="Block Constructed - Kaladesh" jar="mage-deck-constructed.jar" className="mage.deck.KaladeshBlock"/>
<deckType name="Block Constructed - Kamigawa" jar="mage-deck-constructed.jar" className="mage.deck.KamigawaBlock"/>
<deckType name="Block Constructed - Khans of Tarkir" jar="mage-deck-constructed.jar" className="mage.deck.KhansOfTarkirBlock"/>
<deckType name="Block Constructed - Lorwyn" jar="mage-deck-constructed.jar" className="mage.deck.LorwynBlock"/>
<deckType name="Block Constructed - Return to Ravnica" jar="mage-deck-constructed.jar" className="mage.deck.ReturnToRavnicaBlock"/>
<deckType name="Block Constructed - Scars of Mirrodin" jar="mage-deck-constructed.jar" className="mage.deck.ScarsOfMirrodinBlock"/>
<deckType name="Block Constructed - Shadowmoor" jar="mage-deck-constructed.jar" className="mage.deck.ShadowmoorBlock"/>
<deckType name="Block Constructed - Shadows over Innistrad" jar="mage-deck-constructed.jar" className="mage.deck.ShadowsOverInnistradBlock"/>
<deckType name="Block Constructed - Shards of Alara" jar="mage-deck-constructed.jar" className="mage.deck.ShardsOfAlaraBlock"/>
<deckType name="Block Constructed - Theros" jar="mage-deck-constructed.jar" className="mage.deck.TherosBlock"/>
<deckType name="Block Constructed - Zendikar" jar="mage-deck-constructed.jar" className="mage.deck.ZendikarBlock"/>
<deckType name="Block Constructed Custom - Star Wars" jar="mage-deck-constructed.jar" className="mage.deck.StarWarsBlock"/>
<deckType name="Limited" jar="mage-deck-limited.jar" className="mage.deck.Limited"/>
</deckTypes>
</config>