diff --git a/forge-core/src/main/java/forge/card/mana/ManaCostShard.java b/forge-core/src/main/java/forge/card/mana/ManaCostShard.java index 1d558520a25..f2d509af340 100644 --- a/forge-core/src/main/java/forge/card/mana/ManaCostShard.java +++ b/forge-core/src/main/java/forge/card/mana/ManaCostShard.java @@ -17,6 +17,7 @@ */ package forge.card.mana; +import forge.card.ColorSet; import forge.util.BinaryUtil; /** @@ -186,6 +187,10 @@ public enum ManaCostShard { return (byte)(this.shard & COLORS_SUPERPOSITION); } + public final ColorSet getColor() { + return ColorSet.fromMask(getColorMask()); + } + /** * Value of. * diff --git a/forge-core/src/main/java/forge/item/PaperCardPredicates.java b/forge-core/src/main/java/forge/item/PaperCardPredicates.java index b685885baa1..5ef5e0fee6d 100644 --- a/forge-core/src/main/java/forge/item/PaperCardPredicates.java +++ b/forge-core/src/main/java/forge/item/PaperCardPredicates.java @@ -76,24 +76,20 @@ public abstract class PaperCardPredicates { } private static final class PredicateColor implements Predicate { - private final byte operand; + private final MagicColor.Color operand; - private PredicateColor(final byte color) { + private PredicateColor(final MagicColor.Color color) { this.operand = color; } @Override public boolean test(final PaperCard card) { - for (final byte color : card.getRules().getColor()) { - if (color == operand) { - return true; - } + if (card.getRules().getColor().toEnumSet().contains(operand)) { + return true; } if (card.getRules().getType().hasType(CardType.CoreType.Land)) { - for (final byte color : card.getRules().getColorIdentity()) { - if (color == operand) { - return true; - } + if (card.getRules().getColorIdentity().toEnumSet().contains(operand)) { + return true; } } return false; @@ -199,11 +195,11 @@ public abstract class PaperCardPredicates { public static final Predicate IS_RARE_OR_MYTHIC = PaperCardPredicates.IS_RARE.or(PaperCardPredicates.IS_MYTHIC_RARE); public static final Predicate IS_SPECIAL = new PredicateRarity(CardRarity.Special); public static final Predicate IS_BASIC_LAND_RARITY = new PredicateRarity(CardRarity.BasicLand); - public static final Predicate IS_BLACK = new PredicateColor(MagicColor.BLACK); - public static final Predicate IS_BLUE = new PredicateColor(MagicColor.BLUE); - public static final Predicate IS_GREEN = new PredicateColor(MagicColor.GREEN); - public static final Predicate IS_RED = new PredicateColor(MagicColor.RED); - public static final Predicate IS_WHITE = new PredicateColor(MagicColor.WHITE); + public static final Predicate IS_BLACK = new PredicateColor(MagicColor.Color.BLACK); + public static final Predicate IS_BLUE = new PredicateColor(MagicColor.Color.BLUE); + public static final Predicate IS_GREEN = new PredicateColor(MagicColor.Color.GREEN); + public static final Predicate IS_RED = new PredicateColor(MagicColor.Color.RED); + public static final Predicate IS_WHITE = new PredicateColor(MagicColor.Color.WHITE); public static final Predicate IS_COLORLESS = paperCard -> paperCard.getRules().getColor().isColorless(); public static final Predicate IS_UNREBALANCED = PaperCard::isUnRebalanced; public static final Predicate IS_REBALANCED = PaperCard::isRebalanced;