Sets refactor:

* Duels of the Planeswalkers Promos set split to multiple sets (scryfall style);
* Fixed Masterpiece Series sets name;
This commit is contained in:
Oleg Agafonov 2020-08-08 13:05:38 +04:00
parent 7599acf1c8
commit 735588cc0d
19 changed files with 268 additions and 177 deletions

View file

@ -1509,6 +1509,8 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
Map<CardView, Integer> pimpedCards = new HashMap<>();
pimpedSets.put("PCMP", 1);
pimpedSets.put("MPS", 1);
pimpedSets.put("MP2", 1);
pimpedSets.put("EXP", 1);
pimpedSets.put("CP1", 1);
pimpedSets.put("CP2", 1);
pimpedSets.put("CP3", 1);

View file

@ -63,7 +63,7 @@ public class GathererSets implements Iterable<DownloadJob> {
"W16", "W17",
// "PALP" -- Gatherer does not have the set Asia Pacific Land Program
// "ATH" -- has cards from many sets, symbol does not exist on gatherer
// "CP", "DPA", "PELP", "PGPX", "PGRU", "H17", "JR", "PPRE", "SWS", "WMCQ", // need to fix
// "CP", "DPA", "PELP", "PGPX", "PGRU", "H17", "JR", "PPRE", "SWS", // need to fix
"H09", "PD2", "PD3", "UNH", "CM1", "V11", "A25", "UST", "IMA", "DD2", "EVG", "DDC", "DDE", "DDD", "8EB", "9EB", "CHR", "G18", "GVL", "S00", "S99", "UGL" // ok
// current testing
};

View file

@ -18,7 +18,6 @@ public class ScryfallImageSupportCards {
//put("xmage", "scryfall").
build();
private static final Set<String> supportedSets = new ArraySet<String>() {
{
// Sorted by release date, as listed on Scryfall
@ -57,7 +56,7 @@ public class ScryfallImageSupportCards {
add("ITP"); // Introductory Two-Player Set
add("VIS"); // Visions
add("5ED"); // Fifth Edition
add("PVAN"); // Vanguard Series
//add("PVAN"); // Vanguard Series
add("PPOD"); // Portal Demo Game
add("POR"); // Portal
add("WTH"); // Weatherlight
@ -105,7 +104,7 @@ public class ScryfallImageSupportCards {
add("ODY"); // Odyssey
add("DKM"); // Deckmasters
add("PAL02"); // Arena League 2002
add("PR2"); // Magic Player Rewards 2002
//add("PR2"); // Magic Player Rewards 2002
add("G02"); // Judge Gift Cards 2002
add("F02"); // Friday Night Magic 2002
add("TOR"); // Torment
@ -113,7 +112,7 @@ public class ScryfallImageSupportCards {
//add("PHJ"); // Hobby Japan Promos
add("WC02"); // World Championship Decks 2002
add("ONS"); // Onslaught
add("PMOA"); // Magic Online Avatars
//add("PMOA"); // Magic Online Avatars
add("PAL03"); // Arena League 2003
add("P03"); // Magic Player Rewards 2003
add("G03"); // Judge Gift Cards 2003
@ -121,6 +120,7 @@ public class ScryfallImageSupportCards {
add("LGN"); // Legions
add("SCG"); // Scourge
add("8ED"); // Eighth Edition
add("8EB"); // Eighth Edition Box
add("WC03"); // World Championship Decks 2003
add("MRD"); // Mirrodin
add("PAL04"); // Arena League 2004
@ -140,6 +140,7 @@ public class ScryfallImageSupportCards {
add("BOK"); // Betrayers of Kamigawa
add("SOK"); // Saviors of Kamigawa
add("9ED"); // Ninth Edition
add("9EB"); // Ninth Edition Box
//add("PSAL"); // Salvat 2005
add("RAV"); // Ravnica: City of Guilds
add("P2HG"); // Two-Headed Giant Tournament
@ -296,7 +297,7 @@ public class ScryfallImageSupportCards {
add("J14"); // Judge Gift Cards 2014
add("F14"); // Friday Night Magic 2014
add("PBNG"); // Born of the Gods Promos
add("THP2"); // Born of the Gods Hero's Path
//add("THP2"); // Born of the Gods Hero's Path
add("BNG"); // Born of the Gods
add("DDM"); // Duel Decks: Jace vs. Vraska
add("PJOU"); // Journey into Nyx Promos
@ -306,7 +307,7 @@ public class ScryfallImageSupportCards {
add("CNS"); // Conspiracy
add("VMA"); // Vintage Masters
add("PS14"); // San Diego Comic-Con 2014
add("PPC1"); // M15 Prerelease Challenge
//add("PPC1"); // M15 Prerelease Challenge
add("PM15"); // Magic 2015 Promos
add("M15"); // Magic 2015
add("CP1"); // Magic 2015 Clash Pack
@ -472,27 +473,16 @@ public class ScryfallImageSupportCards {
//add("SS3"); // Signature Spellbook: Chandra
add("HA3"); // Historic Anthology 3
// TODO: DuelsOfThePlaneswalkersPromos
add("DPAP");
//
// add("TD0"); // Commander Theme Decks
// add("TD2"); // Duel Decks: Mirrodin Pure vs. New Phyrexia
// add("MD1"); // Modern Event Deck
// add("DD3"); // Duel Decks Anthology
// add("PZ1"); // Legendary Cube
// add("PZ2");
add("WMCQ");
add("MEDM");
add("IKO");
add("C20");
add("IKO"); // Ikoria: Lair of Behemoths
add("C20"); // Commander 2020 Edition
//
add("MPS-AKH");
add("M21");
add("JMP");
//
add("8EB"); // Eighth Edition Box
add("9EB"); // Ninth Edition Box
add("M21"); // Core Set 2021
add("JMP"); // Jumpstart
}
};
@ -525,28 +515,6 @@ public class ScryfallImageSupportCards {
put("PAL99/Island/3+", "https://api.scryfall.com/cards/pal99/3†/");
put("PSOI/Tamiyo's Journal/265s+", "https://api.scryfall.com/cards/psoi/265s†/");
// Duels of the Planeswalkers Promos -- xmage uses one set (DPAP), but scryfall store it by years
// 2009 - https://scryfall.com/sets/pdtp
put("DPAP/Garruk Wildspeaker", "https://api.scryfall.com/cards/pdtp/1/");
// 2010 - https://scryfall.com/sets/pdp10
put("DPAP/Liliana Vess", "https://api.scryfall.com/cards/pdp10/1/");
put("DPAP/Nissa Revane", "https://api.scryfall.com/cards/pdp10/2/");
// 2011 - https://scryfall.com/sets/pdp11
put("DPAP/Frost Titan", "https://api.scryfall.com/cards/pdp11/1/");
put("DPAP/Grave Titan", "https://api.scryfall.com/cards/pdp11/2/");
put("DPAP/Inferno Titan", "https://api.scryfall.com/cards/pdp11/3/");
// 2012 - https://scryfall.com/sets/pdp12
put("DPAP/Primordial Hydra", "https://api.scryfall.com/cards/pdp12/1/");
put("DPAP/Serra Avatar", "https://api.scryfall.com/cards/pdp12/2/");
put("DPAP/Vampire Nocturnus", "https://api.scryfall.com/cards/pdp12/3/");
// 2013 - https://scryfall.com/sets/pdp13
put("DPAP/Bonescythe Sliver", "https://api.scryfall.com/cards/pdp13/1/");
put("DPAP/Ogre Battledriver", "https://api.scryfall.com/cards/pdp13/2/");
put("DPAP/Scavenging Ooze", "https://api.scryfall.com/cards/pdp13/3/");
// 2014 - https://scryfall.com/sets/pdp14
put("DPAP/Soul of Ravnica", "https://api.scryfall.com/cards/pdp14/1/");
put("DPAP/Soul of Zendikar", "https://api.scryfall.com/cards/pdp14/2/");
// 8th Edition box set and 9th Edition box set
// scryfall stores it with one set, by xmage split into two -- 8ED and 8EB, 9ED and 9EB
put("8EB/Eager Cadet", "https://api.scryfall.com/cards/8ed/S1");

View file

@ -40,7 +40,6 @@
#|Generate|TOK:PPRE|Soldier||
#|Generate|TOK:PPRE|Wolf||
#|Generate|TOK:PPRE|Wurm||
#|Generate|TOK:WMCQ|Angel||
# Emblems
|Generate|EMBLEM!:BFZ|Emblem Gideon|||GideonAllyOfZendikarEmblem|

View file

@ -6,19 +6,20 @@ import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/mp2
*
* @author fireshoes
*/
public final class MasterpieceSeriesAmonkhet extends ExpansionSet {
public final class AmonkhetInvocations extends ExpansionSet {
private static final MasterpieceSeriesAmonkhet instance = new MasterpieceSeriesAmonkhet();
private static final AmonkhetInvocations instance = new AmonkhetInvocations();
public static MasterpieceSeriesAmonkhet getInstance() {
public static AmonkhetInvocations getInstance() {
return instance;
}
private MasterpieceSeriesAmonkhet() {
super("Masterpiece Series Amonkhet", "MP2", ExpansionSet.buildDate(2017, 4, 28), SetType.PROMOTIONAL);
private AmonkhetInvocations() {
super("Amonkhet Invocations", "MP2", ExpansionSet.buildDate(2017, 4, 28), SetType.PROMOTIONAL);
this.blockName = "Masterpiece Series";
this.hasBoosters = false;
this.hasBasicLands = false;

View file

@ -343,7 +343,7 @@ public final class BattleForZendikar extends ExpansionSet {
CardCriteria criteria = new CardCriteria();
criteria.setCodes("EXP");
criteria.minCardNumber(1);
criteria.maxCardNumber(25);
criteria.maxCardNumber(45);
savedSpecialLand.addAll(CardRepository.instance.findCards(criteria));
}

View file

@ -0,0 +1,27 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/pdtp
*
* @author JayDi85
*/
public final class DuelsOfThePlaneswalkers2009Promos extends ExpansionSet {
private static final DuelsOfThePlaneswalkers2009Promos instance = new DuelsOfThePlaneswalkers2009Promos();
public static DuelsOfThePlaneswalkers2009Promos getInstance() {
return instance;
}
private DuelsOfThePlaneswalkers2009Promos() {
super("Duels of the Planeswalkers 2009 Promos", "PDTP", ExpansionSet.buildDate(2009, 1, 1), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Garruk Wildspeaker", 1, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class));
}
}

View file

@ -0,0 +1,28 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/pdp10
*
* @author JayDi85
*/
public final class DuelsOfThePlaneswalkers2010Promos extends ExpansionSet {
private static final DuelsOfThePlaneswalkers2010Promos instance = new DuelsOfThePlaneswalkers2010Promos();
public static DuelsOfThePlaneswalkers2010Promos getInstance() {
return instance;
}
private DuelsOfThePlaneswalkers2010Promos() {
super("Duels of the Planeswalkers 2010 Promos", "PDP10", ExpansionSet.buildDate(2010, 1, 1), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Liliana Vess", 1, Rarity.MYTHIC, mage.cards.l.LilianaVess.class));
cards.add(new SetCardInfo("Nissa Revane", 2, Rarity.MYTHIC, mage.cards.n.NissaRevane.class));
}
}

View file

@ -0,0 +1,29 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/pdp11
*
* @author JayDi85
*/
public final class DuelsOfThePlaneswalkers2011Promos extends ExpansionSet {
private static final DuelsOfThePlaneswalkers2011Promos instance = new DuelsOfThePlaneswalkers2011Promos();
public static DuelsOfThePlaneswalkers2011Promos getInstance() {
return instance;
}
private DuelsOfThePlaneswalkers2011Promos() {
super("Duels of the Planeswalkers 2011 Promos", "PDP11", ExpansionSet.buildDate(2011, 1, 1), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Frost Titan", 1, Rarity.MYTHIC, mage.cards.f.FrostTitan.class));
cards.add(new SetCardInfo("Grave Titan", 2, Rarity.MYTHIC, mage.cards.g.GraveTitan.class));
cards.add(new SetCardInfo("Inferno Titan", 3, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class));
}
}

View file

@ -0,0 +1,29 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/pdp12
*
* @author JayDi85
*/
public final class DuelsOfThePlaneswalkers2012Promos extends ExpansionSet {
private static final DuelsOfThePlaneswalkers2012Promos instance = new DuelsOfThePlaneswalkers2012Promos();
public static DuelsOfThePlaneswalkers2012Promos getInstance() {
return instance;
}
private DuelsOfThePlaneswalkers2012Promos() {
super("Duels of the Planeswalkers 2012 Promos", "PDP12", ExpansionSet.buildDate(2012, 1, 1), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Primordial Hydra", 1, Rarity.MYTHIC, mage.cards.p.PrimordialHydra.class));
cards.add(new SetCardInfo("Serra Avatar", 2, Rarity.MYTHIC, mage.cards.s.SerraAvatar.class));
cards.add(new SetCardInfo("Vampire Nocturnus", 3, Rarity.MYTHIC, mage.cards.v.VampireNocturnus.class));
}
}

View file

@ -0,0 +1,29 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/pdp13
*
* @author JayDi85
*/
public final class DuelsOfThePlaneswalkers2013Promos extends ExpansionSet {
private static final DuelsOfThePlaneswalkers2013Promos instance = new DuelsOfThePlaneswalkers2013Promos();
public static DuelsOfThePlaneswalkers2013Promos getInstance() {
return instance;
}
private DuelsOfThePlaneswalkers2013Promos() {
super("Duels of the Planeswalkers 2013 Promos", "PDP13", ExpansionSet.buildDate(2013, 1, 1), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Bonescythe Sliver", 10, Rarity.RARE, mage.cards.b.BonescytheSliver.class));
cards.add(new SetCardInfo("Ogre Battledriver", 11, Rarity.RARE, mage.cards.o.OgreBattledriver.class));
cards.add(new SetCardInfo("Scavenging Ooze", 12, Rarity.RARE, mage.cards.s.ScavengingOoze.class));
}
}

View file

@ -0,0 +1,28 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/pdp14
*
* @author JayDi85
*/
public final class DuelsOfThePlaneswalkers2014Promos extends ExpansionSet {
private static final DuelsOfThePlaneswalkers2014Promos instance = new DuelsOfThePlaneswalkers2014Promos();
public static DuelsOfThePlaneswalkers2014Promos getInstance() {
return instance;
}
private DuelsOfThePlaneswalkers2014Promos() {
super("Duels of the Planeswalkers 2014 Promos", "PDP14", ExpansionSet.buildDate(2014, 1, 1), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Soul of Ravnica", 1, Rarity.MYTHIC, mage.cards.s.SoulOfRavnica.class));
cards.add(new SetCardInfo("Soul of Zendikar", 1, Rarity.MYTHIC, mage.cards.s.SoulOfZendikar.class));
}
}

View file

@ -1,55 +0,0 @@
package mage.sets;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
import mage.constants.SetType;
/**
*
* @author JayDi85
*/
public final class DuelsOfThePlaneswalkersPromos extends ExpansionSet {
private static final DuelsOfThePlaneswalkersPromos instance = new DuelsOfThePlaneswalkersPromos();
public static DuelsOfThePlaneswalkersPromos getInstance() {
return instance;
}
private DuelsOfThePlaneswalkersPromos() {
super("Duels of the Planeswalkers Promos", "DPAP", ExpansionSet.buildDate(2010, 6, 4), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
// all promos in one inner set (2009 - 2014)
// cards numbers must be unqiue
// use replacement list for scryfall download
// 2009 - https://scryfall.com/sets/pdtp
cards.add(new SetCardInfo("Garruk Wildspeaker", 1, Rarity.MYTHIC, mage.cards.g.GarrukWildspeaker.class));
// 2010 - https://scryfall.com/sets/pdp10
cards.add(new SetCardInfo("Liliana Vess", 2, Rarity.MYTHIC, mage.cards.l.LilianaVess.class));
cards.add(new SetCardInfo("Nissa Revane", 3, Rarity.MYTHIC, mage.cards.n.NissaRevane.class));
// 2011 - https://scryfall.com/sets/pdp11
cards.add(new SetCardInfo("Frost Titan", 4, Rarity.MYTHIC, mage.cards.f.FrostTitan.class));
cards.add(new SetCardInfo("Grave Titan", 5, Rarity.MYTHIC, mage.cards.g.GraveTitan.class));
cards.add(new SetCardInfo("Inferno Titan", 6, Rarity.MYTHIC, mage.cards.i.InfernoTitan.class));
// 2012 - https://scryfall.com/sets/pdp12
cards.add(new SetCardInfo("Primordial Hydra", 7, Rarity.MYTHIC, mage.cards.p.PrimordialHydra.class));
cards.add(new SetCardInfo("Serra Avatar", 8, Rarity.MYTHIC, mage.cards.s.SerraAvatar.class));
cards.add(new SetCardInfo("Vampire Nocturnus", 9, Rarity.MYTHIC, mage.cards.v.VampireNocturnus.class));
// 2013 - https://scryfall.com/sets/pdp13
cards.add(new SetCardInfo("Bonescythe Sliver", 10, Rarity.RARE, mage.cards.b.BonescytheSliver.class));
cards.add(new SetCardInfo("Ogre Battledriver", 11, Rarity.RARE, mage.cards.o.OgreBattledriver.class));
cards.add(new SetCardInfo("Scavenging Ooze", 12, Rarity.RARE, mage.cards.s.ScavengingOoze.class));
// 2014 - https://scryfall.com/sets/pdp14
cards.add(new SetCardInfo("Soul of Ravnica", 13, Rarity.MYTHIC, mage.cards.s.SoulOfRavnica.class));
cards.add(new SetCardInfo("Soul of Zendikar", 14, Rarity.MYTHIC, mage.cards.s.SoulOfZendikar.class));
}
}

View file

@ -253,7 +253,7 @@ public final class HourOfDevastation extends ExpansionSet {
public List<CardInfo> getSpecialLand() {
if (savedSpecialLand.isEmpty()) {
CardCriteria criteria = new CardCriteria();
criteria.setCodes("MPS-AKH");
criteria.setCodes("MP2");
criteria.minCardNumber(31);
criteria.maxCardNumber(54);
savedSpecialLand.addAll(CardRepository.instance.findCards(criteria));

View file

@ -1,4 +1,3 @@
package mage.sets;
import mage.cards.CardGraphicInfo;
@ -8,23 +7,26 @@ import mage.constants.Rarity;
import mage.constants.SetType;
/**
* https://scryfall.com/sets/mps
*
* @author fireshoes
*/
public final class MasterpieceSeries extends ExpansionSet {
public final class KaladeshInventions extends ExpansionSet {
private static final MasterpieceSeries instance = new MasterpieceSeries();
private static final KaladeshInventions instance = new KaladeshInventions();
public static MasterpieceSeries getInstance() {
public static KaladeshInventions getInstance() {
return instance;
}
private MasterpieceSeries() {
super("Masterpiece Series", "MPS", ExpansionSet.buildDate(2016, 9, 30), SetType.PROMOTIONAL);
private KaladeshInventions() {
super("Kaladesh Inventions", "MPS", ExpansionSet.buildDate(2016, 9, 30), SetType.PROMOTIONAL);
this.blockName = "Masterpiece Series";
this.hasBoosters = false;
this.hasBasicLands = false;
CardGraphicInfo cardGraphicInfo = new CardGraphicInfo(FrameStyle.KLD_INVENTION, false);
cards.add(new SetCardInfo("Aether Vial", 6, Rarity.MYTHIC, mage.cards.a.AetherVial.class, cardGraphicInfo));
cards.add(new SetCardInfo("Arcbound Ravager", 31, Rarity.MYTHIC, mage.cards.a.ArcboundRavager.class, cardGraphicInfo));
cards.add(new SetCardInfo("Black Vise", 32, Rarity.MYTHIC, mage.cards.b.BlackVise.class, cardGraphicInfo));

View file

@ -1,4 +1,3 @@
package mage.sets;
import mage.cards.ExpansionSet;
@ -19,8 +18,10 @@ public final class ZendikarExpeditions extends ExpansionSet {
private ZendikarExpeditions() {
super("Zendikar Expeditions", "EXP", ExpansionSet.buildDate(2015, 10, 2), SetType.PROMOTIONAL);
this.blockName = "Masterpiece Series";
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Ancient Tomb", 36, Rarity.MYTHIC, mage.cards.a.AncientTomb.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Arid Mesa", 24, Rarity.MYTHIC, mage.cards.a.AridMesa.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Blood Crypt", 8, Rarity.MYTHIC, mage.cards.b.BloodCrypt.class, FULL_ART_BFZ_VARIOUS));

View file

@ -41,7 +41,6 @@ public final class MtgJson {
mtgJsonToXMageCodes.put("DD3_EVG", "EVG");
mtgJsonToXMageCodes.put("DD3_DVD", "DDC");
mtgJsonToXMageCodes.put("NMS", "NEM");
mtgJsonToXMageCodes.put("MPS_AKH", "MPS-AKH");
mtgJsonToXMageCodes.put("FRF_UGIN", "UGIN");
// revert search

View file

@ -89,7 +89,7 @@ public class VerifyCardDataTest {
private static final String SKIP_LIST_NUMBER = "NUMBER";
private static final String SKIP_LIST_MISSING_ABILITIES = "MISSING_ABILITIES";
private static final String SKIP_LIST_DOUBLE_RARE = "DOUBLE_RARE";
private static final String SKIP_LIST_INVALID_SETS = "INVALID_SETS";
private static final String SKIP_LIST_UNSUPPORTED_SETS = "UNSUPPORTED_SETS";
private static final String SKIP_LIST_SCRYFALL_DOWNLOAD_SETS = "SCRYFALL_DOWNLOAD_SETS";
static {
@ -135,68 +135,76 @@ public class VerifyCardDataTest {
// double rare cards
skipListCreate(SKIP_LIST_DOUBLE_RARE);
// Non-English or empty sets: Token sets, Archenemy Schemes, Plane-Chase Planes, etc.
skipListCreate(SKIP_LIST_INVALID_SETS);
// Un-supported sets (mtgjson/scryfall contains that set but xmage don't implement it)
// Example: Non-English or empty sets: Token sets, Archenemy Schemes, Plane-Chase Planes, etc.
skipListCreate(SKIP_LIST_UNSUPPORTED_SETS);
//
// Non-English-only sets should not be added. https://github.com/magefree/mage/pull/6190#issuecomment-582354790
skipListAddName(SKIP_LIST_INVALID_SETS, "4BB"); // 4th Edition Foreign black border.
skipListAddName(SKIP_LIST_INVALID_SETS, "FBB"); // Foreign Black Border. Not on Scryfall, but other sources use this to distinguish non-English Revised cards
skipListAddName(SKIP_LIST_INVALID_SETS, "PHJ"); // Hobby Japan Promos
skipListAddName(SKIP_LIST_INVALID_SETS, "PJJT"); // Japan Junior Tournament
skipListAddName(SKIP_LIST_INVALID_SETS, "PRED"); // Redemption Program
skipListAddName(SKIP_LIST_INVALID_SETS, "PSAL"); // Salvat 2005
skipListAddName(SKIP_LIST_INVALID_SETS, "PS11"); // Salvat 2011
skipListAddName(SKIP_LIST_INVALID_SETS, "PMPS"); // Magic Premiere Shop 2005, Japanese Basic lands
skipListAddName(SKIP_LIST_INVALID_SETS, "PMPS06"); // Magic Premiere Shop 2006, Japanese Basic lands
skipListAddName(SKIP_LIST_INVALID_SETS, "PMPS07"); // Magic Premiere Shop 2007, Japanese Basic lands
skipListAddName(SKIP_LIST_INVALID_SETS, "PMPS08"); // Magic Premiere Shop 2008, Japanese Basic lands
skipListAddName(SKIP_LIST_INVALID_SETS, "PMPS09"); // Magic Premiere Shop 2009, Japanese Basic lands
skipListAddName(SKIP_LIST_INVALID_SETS, "PMPS10"); // Magic Premiere Shop 2010, Japanese Basic lands
skipListAddName(SKIP_LIST_INVALID_SETS, "PMPS11"); // Magic Premiere Shop 2011, Japanese Basic lands
skipListAddName(SKIP_LIST_INVALID_SETS, "REN"); // Renaissance
skipListAddName(SKIP_LIST_INVALID_SETS, "RIN"); // Rinascimento
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "4BB"); // 4th Edition Foreign black border.
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "FBB"); // Foreign Black Border. Not on Scryfall, but other sources use this to distinguish non-English Revised cards
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PHJ"); // Hobby Japan Promos
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PJJT"); // Japan Junior Tournament
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PRED"); // Redemption Program
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PSAL"); // Salvat 2005
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PS11"); // Salvat 2011
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS"); // Magic Premiere Shop 2005, Japanese Basic lands
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS06"); // Magic Premiere Shop 2006, Japanese Basic lands
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS07"); // Magic Premiere Shop 2007, Japanese Basic lands
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS08"); // Magic Premiere Shop 2008, Japanese Basic lands
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS09"); // Magic Premiere Shop 2009, Japanese Basic lands
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS10"); // Magic Premiere Shop 2010, Japanese Basic lands
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMPS11"); // Magic Premiere Shop 2011, Japanese Basic lands
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "REN"); // Renaissance
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "RIN"); // Rinascimento
//
// Archenemy Schemes
skipListAddName(SKIP_LIST_INVALID_SETS, "OARC"); // Archenemy Schemes
skipListAddName(SKIP_LIST_INVALID_SETS, "OE01"); // Archenemy: Nicol Bolas Schemes
skipListAddName(SKIP_LIST_INVALID_SETS, "PARC"); // Promotional Schemes
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OARC"); // Archenemy Schemes
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OE01"); // Archenemy: Nicol Bolas Schemes
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PARC"); // Promotional Schemes
//
// Plane-chase Planes
skipListAddName(SKIP_LIST_INVALID_SETS, "OHOP"); // Planechase Planes
skipListAddName(SKIP_LIST_INVALID_SETS, "OPC2"); // Planechase 2012 Plane
skipListAddName(SKIP_LIST_INVALID_SETS, "OPCA"); // Planechase Anthology Planes
skipListAddName(SKIP_LIST_INVALID_SETS, "PHOP"); // Promotional Planes
// Token sets
skipListAddName(SKIP_LIST_INVALID_SETS, "L12"); // League Tokens 2012
skipListAddName(SKIP_LIST_INVALID_SETS, "L13"); // League Tokens 2013
skipListAddName(SKIP_LIST_INVALID_SETS, "L14"); // League Tokens 2014
skipListAddName(SKIP_LIST_INVALID_SETS, "L15"); // League Tokens 2015
skipListAddName(SKIP_LIST_INVALID_SETS, "L16"); // League Tokens 2016
skipListAddName(SKIP_LIST_INVALID_SETS, "L17"); // League Tokens 2017
skipListAddName(SKIP_LIST_INVALID_SETS, "PLNY"); // 2018 Lunar New Year
skipListAddName(SKIP_LIST_INVALID_SETS, "F18"); // Friday Night Magic 2018
skipListAddName(SKIP_LIST_INVALID_SETS, "PR2"); // Magic Player Rewards 2002
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OHOP"); // Planechase Planes
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OPC2"); // Planechase 2012 Plane
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OPCA"); // Planechase Anthology Planes
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PHOP"); // Promotional Planes
//
// Token sets TODO: implement tokens only sets
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L12"); // League Tokens 2012
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L13"); // League Tokens 2013
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L14"); // League Tokens 2014
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L15"); // League Tokens 2015
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L16"); // League Tokens 2016
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "L17"); // League Tokens 2017
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PLNY"); // 2018 Lunar New Year
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "F18"); // Friday Night Magic 2018
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PR2"); // Magic Player Rewards 2002
//
// PvE sets containing non-traditional cards. These enable casual PvE battles against a "random AI"-driven opponent.
skipListAddName(SKIP_LIST_INVALID_SETS, "PPC1"); // M15 Prerelease Challenge
skipListAddName(SKIP_LIST_INVALID_SETS, "TBTH"); // Battle the Horde
skipListAddName(SKIP_LIST_INVALID_SETS, "TDAG"); // Defeat a God
skipListAddName(SKIP_LIST_INVALID_SETS, "TFTH"); // Face the Hydra
skipListAddName(SKIP_LIST_INVALID_SETS, "THP1"); // Theros Hero's Path
skipListAddName(SKIP_LIST_INVALID_SETS, "THP2"); // Born of the Gods Hero's Path
skipListAddName(SKIP_LIST_INVALID_SETS, "THP3"); // Journey into Nyx Hero's Path
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PPC1"); // M15 Prerelease Challenge
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "TBTH"); // Battle the Horde
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "TDAG"); // Defeat a God
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "TFTH"); // Face the Hydra
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "THP1"); // Theros Hero's Path
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "THP2"); // Born of the Gods Hero's Path
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "THP3"); // Journey into Nyx Hero's Path
//
// Commander Oversized cards.
skipListAddName(SKIP_LIST_INVALID_SETS, "OCMD"); // Commander 2011 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OC13"); // Commander 2013 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OC14"); // Commander 2014 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OC15"); // Commander 2015 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OC16"); // Commander 2016 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OC17"); // Commander 2017 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OC18"); // Commander 2018 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OC19"); // Commander 2019 Oversized
skipListAddName(SKIP_LIST_INVALID_SETS, "OCM1"); // Commander's Arsenal Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OCMD"); // Commander 2011 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC13"); // Commander 2013 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC14"); // Commander 2014 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC15"); // Commander 2015 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC16"); // Commander 2016 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC17"); // Commander 2017 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC18"); // Commander 2018 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OC19"); // Commander 2019 Oversized
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "OCM1"); // Commander's Arsenal Oversized
//
// Other
skipListAddName(SKIP_LIST_INVALID_SETS, "PCEL"); // Celebration Cards
skipListAddName(SKIP_LIST_INVALID_SETS, "PMOA"); // Magic Online Avatar
skipListAddName(SKIP_LIST_INVALID_SETS, "PVAN"); // Vanguard Series
skipListAddName(SKIP_LIST_INVALID_SETS, "AMH1"); // Modern Horizons Art Series
skipListAddName(SKIP_LIST_INVALID_SETS, "PTG"); // Ponies: The Galloping
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PCEL"); // Celebration Cards
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PMOA"); // Magic Online Avatar
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PVAN"); // Vanguard Series
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "AMH1"); // Modern Horizons Art Series
skipListAddName(SKIP_LIST_UNSUPPORTED_SETS, "PTG"); // Ponies: The Galloping
// scryfall download sets (missing from scryfall website)
skipListCreate(SKIP_LIST_SCRYFALL_DOWNLOAD_SETS);
@ -396,7 +404,7 @@ public class VerifyCardDataTest {
// replace codes for aliases
String searchSet = MtgJson.mtgJsonToXMageCodes.getOrDefault(refSet.code, refSet.code);
if (skipListHaveName(SKIP_LIST_INVALID_SETS, searchSet))
if (skipListHaveName(SKIP_LIST_UNSUPPORTED_SETS, searchSet))
continue;
ExpansionSet mageSet = Sets.findSet(searchSet.toUpperCase(Locale.ENGLISH));

View file

@ -45,7 +45,6 @@ Commander|CMD|
Conspiracy|CNS|
Conspiracy: Take the Crown|CN2|
Conflux|CON|
Champs|CP|
Coldsnap|CSP|
Duel Decks: Jace vs. Chandra|DD2|
Duel Decks: Anthology, Divine vs. Demonic|DVD|
@ -88,7 +87,6 @@ European Land Program|EURO|
Eventide|EVE|
Duel Decks: Elves vs. Goblins|EVG|
Duel Decks: Elves vs. Inventors|DDU|
Duels of the Planeswalkers Promos|DPAP|
Pro Tour Promos|PPRO|
Exodus|EXO|
Zendikar Expeditions|EXP|
@ -155,7 +153,6 @@ Mercadian Masques|MMQ|
Morningtide|MOR|
Magic Player Rewards|MPRP|
Masterpiece Series|MPS|
Masterpiece Series Amonkhet|MPS-AKH|
Mirrodin|MRD|
Nemesis|NEM|
New Phyrexia|NPH|
@ -223,7 +220,6 @@ Vintage Masters|VMA|
War of the Spark|WAR|
Welcome Deck 2016|W16|
Welcome Deck 2017|W17|
World Magic Cup Qualifier|WMCQ|
Weatherlight|WTH|
Worldwake|WWK|
Ixalan|XLN|