CardEdition: add collector number for other (#7504)

* CardEdition: add collector number for other

* EditionEntry record

* Add getOtherImageKey

* Update StaticData.java

* use getOtherImageKey in getFacedownImageKey

* Update CardEdition.java

Remove findOther in favor of getOtherSet

* Update CardEdition.java

return findOther, but with Aggregates.random

* ~ move more helper images to ImageKeys
This commit is contained in:
Hans Mackowiak
2025-05-12 06:59:20 +02:00
committed by GitHub
parent 059881a7b5
commit cb0e594a6e
23 changed files with 206 additions and 193 deletions

View File

@@ -23,10 +23,14 @@ public final class ImageKeys {
public static final String HIDDEN_CARD = "hidden";
public static final String MORPH_IMAGE = "morph";
public static final String DISGUISED_IMAGE = "disguised";
public static final String MANIFEST_IMAGE = "manifest";
public static final String CLOAKED_IMAGE = "cloaked";
public static final String FORETELL_IMAGE = "foretell";
public static final String BLESSING_IMAGE = "blessing";
public static final String INITIATIVE_IMAGE = "initiative";
public static final String MONARCH_IMAGE = "monarch";
public static final String THE_RING_IMAGE = "the_ring";
public static final String RADIATION_IMAGE = "radiation";
public static final String BACKFACE_POSTFIX = "$alt";
public static final String SPECFACE_W = "$wspec";

View File

@@ -95,12 +95,12 @@ public class StaticData {
if (!loadNonLegalCards) {
for (CardEdition e : editions) {
if (e.getType() == CardEdition.Type.FUNNY || e.getBorderColor() == CardEdition.BorderColor.SILVER) {
List<CardEdition.CardInSet> eternalCards = e.getFunnyEternalCards();
List<CardEdition.EditionEntry> eternalCards = e.getFunnyEternalCards();
for (CardEdition.CardInSet cis : e.getAllCardsInSet()) {
for (CardEdition.EditionEntry cis : e.getAllCardsInSet()) {
if (eternalCards.contains(cis))
continue;
funnyCards.add(cis.name);
funnyCards.add(cis.name());
}
}
}
@@ -790,11 +790,11 @@ public class StaticData {
Map<String, Pair<Boolean, Integer>> cardCount = new HashMap<>();
List<CompletableFuture<?>> futures = new ArrayList<>();
for (CardEdition.CardInSet c : e.getAllCardsInSet()) {
if (cardCount.containsKey(c.name)) {
cardCount.put(c.name, Pair.of(c.collectorNumber != null && c.collectorNumber.startsWith("F"), cardCount.get(c.name).getRight() + 1));
for (CardEdition.EditionEntry c : e.getAllCardsInSet()) {
if (cardCount.containsKey(c.name())) {
cardCount.put(c.name(), Pair.of(c.collectorNumber() != null && c.collectorNumber().startsWith("F"), cardCount.get(c.name()).getRight() + 1));
} else {
cardCount.put(c.name, Pair.of(c.collectorNumber != null && c.collectorNumber.startsWith("F"), 1));
cardCount.put(c.name(), Pair.of(c.collectorNumber() != null && c.collectorNumber().startsWith("F"), 1));
}
}
@@ -856,7 +856,7 @@ public class StaticData {
futures.clear();
// TODO: Audit token images here...
for(Map.Entry<String, Collection<CardEdition.TokenInSet>> tokenEntry : e.getTokens().asMap().entrySet()) {
for(Map.Entry<String, Collection<CardEdition.EditionEntry>> tokenEntry : e.getTokens().asMap().entrySet()) {
final String name = tokenEntry.getKey();
final int artIndex = tokenEntry.getValue().size();
try {
@@ -995,4 +995,23 @@ public class StaticData {
}
return false;
}
public String getOtherImageKey(String name, String set) {
if (this.editions.get(set) != null) {
String realSetCode = this.editions.get(set).getOtherSet(name);
if (realSetCode != null) {
CardEdition.EditionEntry ee = this.editions.get(realSetCode).findOther(name);
if (ee != null) { // TODO add collector Number and new ImageKey format
return ImageKeys.getTokenKey(name + "_" + realSetCode.toLowerCase());
}
}
}
for (CardEdition e : this.editions) {
CardEdition.EditionEntry ee = e.findOther(name);
if (ee != null) { // TODO add collector Number and new ImageKey format
return ImageKeys.getTokenKey(name + "_" + e.getCode().toLowerCase());
}
}
// final fallback
return ImageKeys.getTokenKey(name);
}
}

View File

@@ -22,7 +22,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimaps;
import forge.StaticData;
import forge.card.CardEdition.CardInSet;
import forge.card.CardEdition.EditionEntry;
import forge.card.CardEdition.Type;
import forge.deck.generation.IDeckGenPool;
import forge.item.IPaperCard;
@@ -332,27 +332,27 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
}
}
private void addSetCard(CardEdition e, CardInSet cis, CardRules cr) {
private void addSetCard(CardEdition e, EditionEntry cis, CardRules cr) {
int artIdx = IPaperCard.DEFAULT_ART_INDEX;
String key = e.getCode() + "/" + cis.name;
String key = e.getCode() + "/" + cis.name();
if (artIds.containsKey(key)) {
artIdx = artIds.get(key) + 1;
}
artIds.put(key, artIdx);
addCard(new PaperCard(cr, e.getCode(), cis.rarity, artIdx, false, cis.collectorNumber, cis.artistName, cis.functionalVariantName));
addCard(new PaperCard(cr, e.getCode(), cis.rarity(), artIdx, false, cis.collectorNumber(), cis.artistName(), cis.functionalVariantName()));
}
private boolean addFromSetByName(String cardName, CardEdition ed, CardRules cr) {
List<CardInSet> cardsInSet = ed.getCardInSet(cardName); // empty collection if not present
List<EditionEntry> cardsInSet = ed.getCardInSet(cardName); // empty collection if not present
if (cr.hasFunctionalVariants()) {
cardsInSet = cardsInSet.stream().filter(c -> StringUtils.isEmpty(c.functionalVariantName)
|| cr.getSupportedFunctionalVariants().contains(c.functionalVariantName)
cardsInSet = cardsInSet.stream().filter(c -> StringUtils.isEmpty(c.functionalVariantName())
|| cr.getSupportedFunctionalVariants().contains(c.functionalVariantName())
).collect(Collectors.toList());
}
if (cardsInSet.isEmpty())
return false;
for (CardInSet cis : cardsInSet) {
for (EditionEntry cis : cardsInSet) {
addSetCard(ed, cis, cr);
}
return true;
@@ -397,15 +397,15 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
upcomingSet = e;
}
for (CardEdition.CardInSet cis : e.getAllCardsInSet()) {
CardRules cr = rulesByName.get(cis.name);
for (CardEdition.EditionEntry cis : e.getAllCardsInSet()) {
CardRules cr = rulesByName.get(cis.name());
if (cr == null) {
missingCards.add(cis.name);
missingCards.add(cis.name());
continue;
}
if (cr.hasFunctionalVariants()) {
if (StringUtils.isNotEmpty(cis.functionalVariantName)
&& !cr.getSupportedFunctionalVariants().contains(cis.functionalVariantName)) {
if (StringUtils.isNotEmpty(cis.functionalVariantName())
&& !cr.getSupportedFunctionalVariants().contains(cis.functionalVariantName())) {
//Supported card, unsupported variant.
//Could note the card as missing but since these are often un-cards,
//it's likely absent because it does something out of scope.
@@ -463,8 +463,8 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
lang = new LangEnglish();
}
// for now just check Universes Within
for (CardInSet cis : editions.get("SLX").getCards()) {
String orgName = alternateName.get(cis.name);
for (EditionEntry cis : editions.get("SLX").getCards()) {
String orgName = alternateName.get(cis.name());
if (orgName != null) {
// found original (beyond) print
CardRules org = getRules(orgName);
@@ -494,7 +494,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
CardRules within = new CardRules(new ICardFace[] { renamedMain, renamedOther, null, null, null, null, null }, org.getSplitType(), org.getAiHints());
// so workshop can edit same script
within.setNormalizedName(org.getNormalizedName());
rulesByName.put(cis.name, within);
rulesByName.put(cis.name(), within);
}
}
}
@@ -1107,8 +1107,8 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
public Collection<PaperCard> getAllCards(CardEdition edition) {
List<PaperCard> cards = Lists.newArrayList();
for (CardInSet cis : edition.getAllCardsInSet()) {
PaperCard card = this.getCard(cis.name, edition.getCode());
for (EditionEntry cis : edition.getAllCardsInSet()) {
PaperCard card = this.getCard(cis.name(), edition.getCode());
if (card == null) {
// Just in case the card is listed in the edition file but Forge doesn't support it
continue;
@@ -1160,10 +1160,10 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
// May iterate over editions and find out if there is any card named 'cardRequest' but not implemented with Forge script.
if (StringUtils.isBlank(request.edition)) {
for (CardEdition edition : editions) {
for (CardInSet cardInSet : edition.getAllCardsInSet()) {
if (cardInSet.name.equals(request.cardName)) {
for (EditionEntry cardInSet : edition.getAllCardsInSet()) {
if (cardInSet.name().equals(request.cardName)) {
cardEdition = edition;
cardRarity = cardInSet.rarity;
cardRarity = cardInSet.rarity();
break;
}
}
@@ -1174,9 +1174,9 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
} else {
cardEdition = editions.get(request.edition);
if (cardEdition != null) {
for (CardInSet cardInSet : cardEdition.getAllCardsInSet()) {
if (cardInSet.name.equals(request.cardName)) {
cardRarity = cardInSet.rarity;
for (EditionEntry cardInSet : cardEdition.getAllCardsInSet()) {
if (cardInSet.name().equals(request.cardName)) {
cardRarity = cardInSet.rarity();
break;
}
}
@@ -1227,9 +1227,9 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
// @leriomaggio: DONE! re-using here the same strategy implemented for lazy-loading!
for (CardEdition e : editions.getOrderedEditions()) {
int artIdx = IPaperCard.DEFAULT_ART_INDEX;
for (CardInSet cis : e.getCardInSet(cardName))
paperCards.add(new PaperCard(rules, e.getCode(), cis.rarity, artIdx++, false,
cis.collectorNumber, cis.artistName, cis.functionalVariantName));
for (EditionEntry cis : e.getCardInSet(cardName))
paperCards.add(new PaperCard(rules, e.getCode(), cis.rarity(), artIdx++, false,
cis.collectorNumber(), cis.artistName(), cis.functionalVariantName()));
}
} else {
String lastEdition = null;
@@ -1243,13 +1243,13 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
if (ed == null) {
continue;
}
List<CardInSet> cardsInSet = ed.getCardInSet(cardName);
List<EditionEntry> cardsInSet = ed.getCardInSet(cardName);
if (cardsInSet.isEmpty())
continue;
int cardInSetIndex = Math.max(artIdx-1, 0); // make sure doesn't go below zero
CardInSet cds = cardsInSet.get(cardInSetIndex); // use ArtIndex to get the right Coll. Number
EditionEntry cds = cardsInSet.get(cardInSetIndex); // use ArtIndex to get the right Coll. Number
paperCards.add(new PaperCard(rules, lastEdition, tuple.getValue(), artIdx++, false,
cds.collectorNumber, cds.artistName, cds.functionalVariantName));
cds.collectorNumber(), cds.artistName(), cds.functionalVariantName()));
}
}
if (paperCards.isEmpty()) {

View File

@@ -18,6 +18,7 @@
package forge.card;
import com.google.common.collect.*;
import forge.StaticData;
import forge.card.CardDb.CardArtPreference;
import forge.deck.CardPool;
@@ -207,20 +208,7 @@ public final class CardEdition implements Comparable<CardEdition> {
return sortableCollNr;
}
public static class CardInSet implements Comparable<CardInSet> {
public final String collectorNumber;
public final String name;
public final String artistName;
public final CardRarity rarity;
public final String functionalVariantName;
public CardInSet(final String name, final String collectorNumber, final CardRarity rarity, final String artistName, final String functionalVariantName) {
this.name = name;
this.collectorNumber = collectorNumber;
this.artistName = artistName;
this.rarity = rarity;
this.functionalVariantName = functionalVariantName;
}
public record EditionEntry(String name, String collectorNumber, CardRarity rarity, String artistName, String functionalVariantName) implements Comparable<EditionEntry> {
public String toString() {
StringBuilder sb = new StringBuilder();
@@ -228,7 +216,7 @@ public final class CardEdition implements Comparable<CardEdition> {
sb.append(collectorNumber);
sb.append(' ');
}
if (rarity != CardRarity.Unknown) {
if (rarity != CardRarity.Unknown && rarity != CardRarity.Token) {
sb.append(rarity);
sb.append(' ');
}
@@ -245,7 +233,7 @@ public final class CardEdition implements Comparable<CardEdition> {
}
@Override
public int compareTo(CardInSet o) {
public int compareTo(EditionEntry o) {
final int nameCmp = name.compareToIgnoreCase(o.name);
if (0 != nameCmp) {
return nameCmp;
@@ -260,51 +248,13 @@ public final class CardEdition implements Comparable<CardEdition> {
}
}
public static class TokenInSet implements Comparable<TokenInSet> {
public final String collectorNumber;
public final String name;
public final String artistName;
public TokenInSet(final String name, final String collectorNumber, final String artistName) {
this.name = name;
this.collectorNumber = collectorNumber;
this.artistName = artistName;
}
public String toString() {
StringBuilder sb = new StringBuilder();
if (collectorNumber != null) {
sb.append(collectorNumber);
sb.append(' ');
}
sb.append(name);
if (artistName != null) {
sb.append(" @");
sb.append(artistName);
}
return sb.toString();
}
@Override
public int compareTo(TokenInSet o) {
final int nameCmp = name.compareToIgnoreCase(o.name);
if (0 != nameCmp) {
return nameCmp;
}
String thisCollNr = getSortableCollectorNumber(collectorNumber);
String othrCollNr = getSortableCollectorNumber(o.collectorNumber);
return thisCollNr.compareTo(othrCollNr);
}
}
private final static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
/**
* Equivalent to the set code of CardEdition.UNKNOWN
*/
public static final String UNKNOWN_CODE = "???";
public static final CardEdition UNKNOWN = new CardEdition("1990-01-01", UNKNOWN_CODE, "??", Type.UNKNOWN, "Undefined", FoilType.NOT_SUPPORTED, new CardInSet[]{});
public static final CardEdition UNKNOWN = new CardEdition("1990-01-01", UNKNOWN_CODE, "??", Type.UNKNOWN, "Undefined", FoilType.NOT_SUPPORTED, new EditionEntry[]{});
private Date date;
private String code;
private String code2;
@@ -340,17 +290,18 @@ public final class CardEdition implements Comparable<CardEdition> {
private String doublePickDuringDraft = "";
private String[] chaosDraftThemes = new String[0];
private final ListMultimap<String, CardInSet> cardMap;
private final List<CardInSet> cardsInSet;
private final ListMultimap<String, TokenInSet> tokenMap;
private final ListMultimap<String, EditionEntry> cardMap;
private final List<EditionEntry> cardsInSet;
private final ListMultimap<String, EditionEntry> tokenMap;
// custom print sheets that will be loaded lazily
private final Map<String, List<String>> customPrintSheetsToParse;
private ListMultimap<String, EditionEntry> otherMap = ArrayListMultimap.create();
private int boosterArts = 1;
private SealedTemplate boosterTpl = null;
private final Map<String, SealedTemplate> boosterTemplates = new HashMap<>();
private CardEdition(ListMultimap<String, CardInSet> cardMap, ListMultimap<String, TokenInSet> tokens, Map<String, List<String>> customPrintSheetsToParse) {
private CardEdition(ListMultimap<String, EditionEntry> cardMap, ListMultimap<String, EditionEntry> tokens, Map<String, List<String>> customPrintSheetsToParse) {
this.cardMap = cardMap;
this.cardsInSet = new ArrayList<>(cardMap.values());
Collections.sort(cardsInSet);
@@ -358,8 +309,8 @@ public final class CardEdition implements Comparable<CardEdition> {
this.customPrintSheetsToParse = customPrintSheetsToParse;
}
private CardEdition(CardInSet[] cards, ListMultimap<String, TokenInSet> tokens) {
List<CardInSet> cardsList = Arrays.asList(cards);
private CardEdition(EditionEntry[] cards, ListMultimap<String, EditionEntry> tokens) {
List<EditionEntry> cardsList = Arrays.asList(cards);
this.cardMap = ArrayListMultimap.create();
this.cardMap.replaceValues("cards", cardsList);
this.cardsInSet = new ArrayList<>(cardsList);
@@ -381,7 +332,7 @@ public final class CardEdition implements Comparable<CardEdition> {
* @param name the name of the set
* @param cards the cards in the set
*/
private CardEdition(String date, String code, String code2, Type type, String name, FoilType foil, CardInSet[] cards) {
private CardEdition(String date, String code, String code2, Type type, String name, FoilType foil, EditionEntry[] cards) {
this(cards, ArrayListMultimap.create());
this.code = code;
this.code2 = code2;
@@ -430,14 +381,14 @@ public final class CardEdition implements Comparable<CardEdition> {
public String getSheetReplaceCardFromSheet2() { return sheetReplaceCardFromSheet2; }
public String[] getChaosDraftThemes() { return chaosDraftThemes; }
public List<CardInSet> getCards() { return cardMap.get(EditionSectionWithCollectorNumbers.CARDS.getName()); }
public List<CardInSet> getRebalancedCards() { return cardMap.get(EditionSectionWithCollectorNumbers.REBALANCED.getName()); }
public List<CardInSet> getFunnyEternalCards() { return cardMap.get(EditionSectionWithCollectorNumbers.ETERNAL.getName()); }
public List<CardInSet> getAllCardsInSet() {
public List<EditionEntry> getCards() { return cardMap.get(EditionSectionWithCollectorNumbers.CARDS.getName()); }
public List<EditionEntry> getRebalancedCards() { return cardMap.get(EditionSectionWithCollectorNumbers.REBALANCED.getName()); }
public List<EditionEntry> getFunnyEternalCards() { return cardMap.get(EditionSectionWithCollectorNumbers.ETERNAL.getName()); }
public List<EditionEntry> getAllCardsInSet() {
return cardsInSet;
}
private ListMultimap<String, CardInSet> cardsInSetLookupMap = null;
private ListMultimap<String, EditionEntry> cardsInSetLookupMap = null;
/**
* Get all the CardInSet instances with the input card name.
@@ -445,12 +396,12 @@ public final class CardEdition implements Comparable<CardEdition> {
* @return A List of all the CardInSet instances for a given name.
* If not fount, an Empty sequence (view) will be returned instead!
*/
public List<CardInSet> getCardInSet(String cardName){
public List<EditionEntry> getCardInSet(String cardName){
if (cardsInSetLookupMap == null) {
// initialise
cardsInSetLookupMap = Multimaps.newListMultimap(new TreeMap<>(String.CASE_INSENSITIVE_ORDER), Lists::newArrayList);
List<CardInSet> cardsInSet = this.getAllCardsInSet();
for (CardInSet cis : cardsInSet){
List<EditionEntry> cardsInSet = this.getAllCardsInSet();
for (EditionEntry cis : cardsInSet){
String key = cis.name;
cardsInSetLookupMap.put(key, cis);
}
@@ -458,10 +409,10 @@ public final class CardEdition implements Comparable<CardEdition> {
return this.cardsInSetLookupMap.get(cardName);
}
public CardInSet getCardFromCollectorNumber(String collectorNumber) {
public EditionEntry getCardFromCollectorNumber(String collectorNumber) {
if(collectorNumber == null || collectorNumber.isEmpty())
return null;
for(CardInSet c : this.cardsInSet) {
for(EditionEntry c : this.cardsInSet) {
//Could build a map for this one too if it's used for more than one-offs.
if (c.collectorNumber.equalsIgnoreCase(collectorNumber))
return c;
@@ -470,7 +421,7 @@ public final class CardEdition implements Comparable<CardEdition> {
}
public boolean isRebalanced(String cardName) {
for (CardInSet cis : getRebalancedCards()) {
for (EditionEntry cis : getRebalancedCards()) {
if (cis.name.equals(cardName)) {
return true;
}
@@ -480,7 +431,7 @@ public final class CardEdition implements Comparable<CardEdition> {
public boolean isModern() { return getDate().after(parseDate("2003-07-27")); } //8ED and above are modern except some promo cards and others
public Multimap<String, TokenInSet> getTokens() { return tokenMap; }
public Multimap<String, EditionEntry> getTokens() { return tokenMap; }
public String getTokenSet(String token) {
if (tokenMap.containsKey(token)) {
@@ -491,6 +442,22 @@ public final class CardEdition implements Comparable<CardEdition> {
}
return null;
}
public String getOtherSet(String token) {
if (otherMap.containsKey(token)) {
return this.getCode();
}
if (this.tokenFallbackCode != null) {
return StaticData.instance().getCardEdition(this.tokenFallbackCode).getOtherSet(token);
}
return null;
}
public EditionEntry findOther(String name) {
if (otherMap.containsKey(name)) {
return Aggregates.random(otherMap.get(name));
}
return null;
}
@Override
public int compareTo(final CardEdition o) {
@@ -574,8 +541,8 @@ public final class CardEdition implements Comparable<CardEdition> {
for (String sectionName : cardMap.keySet()) {
PrintSheet sheet = new PrintSheet(String.format("%s %s", this.getCode(), sectionName));
List<CardInSet> cards = cardMap.get(sectionName);
for (CardInSet card : cards) {
List<EditionEntry> cards = cardMap.get(sectionName);
for (EditionEntry card : cards) {
int index = 1;
if (cardToIndex.containsKey(card.name)) {
index = cardToIndex.get(card.name) + 1;
@@ -654,7 +621,7 @@ public final class CardEdition implements Comparable<CardEdition> {
"(^(.?[0-9A-Z]+\\S?[A-Z]*)\\s)?([^@]*)( @(.*))?$"
);
ListMultimap<String, CardInSet> cardMap = ArrayListMultimap.create();
ListMultimap<String, EditionEntry> cardMap = ArrayListMultimap.create();
List<BoosterSlot> boosterSlots = null;
Map<String, List<String>> customPrintSheetsToParse = new HashMap<>();
List<String> editionSectionsWithCollectorNumbers = EditionSectionWithCollectorNumbers.getNames();
@@ -686,7 +653,7 @@ public final class CardEdition implements Comparable<CardEdition> {
String cardName = matcher.group(5);
String artistName = matcher.group(7);
String functionalVariantName = matcher.group(9);
CardInSet cis = new CardInSet(cardName, collectorNumber, r, artistName, functionalVariantName);
EditionEntry cis = new EditionEntry(cardName, collectorNumber, r, artistName, functionalVariantName);
cardMap.put(sectionName, cis);
}
@@ -700,7 +667,8 @@ public final class CardEdition implements Comparable<CardEdition> {
}
}
ListMultimap<String, TokenInSet> tokenMap = ArrayListMultimap.create();
ListMultimap<String, EditionEntry> tokenMap = ArrayListMultimap.create();
ListMultimap<String, EditionEntry> otherMap = ArrayListMultimap.create();
// parse tokens section
if (contents.containsKey("tokens")) {
for (String line : contents.get("tokens")) {
@@ -715,10 +683,27 @@ public final class CardEdition implements Comparable<CardEdition> {
String collectorNumber = matcher.group(2);
String cardName = matcher.group(3);
String artistName = matcher.group(5);
TokenInSet tis = new TokenInSet(cardName, collectorNumber, artistName);
// rarity isn't used for this anyway
EditionEntry tis = new EditionEntry(cardName, collectorNumber, CardRarity.Token, artistName, null);
tokenMap.put(cardName, tis);
}
}
if (contents.containsKey("other")) {
for (String line : contents.get("other")) {
if (StringUtils.isBlank(line))
continue;
Matcher matcher = tokenPattern.matcher(line);
if (!matcher.matches()) {
continue;
}
String collectorNumber = matcher.group(2);
String cardName = matcher.group(3);
String artistName = matcher.group(5);
EditionEntry tis = new EditionEntry(cardName, collectorNumber, CardRarity.Unknown, artistName, null);
otherMap.put(cardName, tis);
}
}
CardEdition res = new CardEdition(cardMap, tokenMap, customPrintSheetsToParse);
res.boosterSlots = boosterSlots;
@@ -733,6 +718,8 @@ public final class CardEdition implements Comparable<CardEdition> {
res.cardsLanguage = metadata.get("CardLang", "en");
res.boosterArts = metadata.getInt("BoosterCovers", 1);
res.otherMap = otherMap;
String boosterDesc = metadata.get("Booster");
if (metadata.contains("Booster")) {
@@ -851,7 +838,7 @@ public final class CardEdition implements Comparable<CardEdition> {
initAliases(E); //Made a method in case the system changes, so it's consistent.
}
CardEdition customBucket = new CardEdition("2990-01-01", "USER", "USER",
Type.CUSTOM_SET, "USER", FoilType.NOT_SUPPORTED, new CardInSet[]{});
Type.CUSTOM_SET, "USER", FoilType.NOT_SUPPORTED, new EditionEntry[]{});
this.add(customBucket);
initAliases(customBucket);
this.lock = true; //Consider it initialized and prevent from writing any more data.