diff --git a/forge-core/src/main/java/forge/card/PrintSheet.java b/forge-core/src/main/java/forge/card/PrintSheet.java index aa91bd79f42..a714e84341b 100644 --- a/forge-core/src/main/java/forge/card/PrintSheet.java +++ b/forge-core/src/main/java/forge/card/PrintSheet.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map.Entry; +import java.util.function.Predicate; /** * TODO: Write javadoc for this type. @@ -68,6 +69,13 @@ public class PrintSheet { cardsWithWeights.remove(card); } + public boolean contains(PaperCard pc) { + return cardsWithWeights.contains(pc); + } + public PaperCard find(Predicate filter) { + return cardsWithWeights.find(filter); + } + private PaperCard fetchRoulette(int start, int roulette, Collection toSkip) { int sum = start; boolean isSecondRun = start > 0; @@ -85,15 +93,6 @@ public class PrintSheet { return fetchRoulette(sum + 1, roulette, toSkip); // start over from beginning, in case last cards were to skip } - public List all() { - List result = new ArrayList<>(); - for (Entry kv : cardsWithWeights) { - for (int i = 0; i < kv.getValue(); i++) { - result.add(kv.getKey()); - } - } - return result; - } public boolean containsCardNamed(String name,int atLeast) { int count=0; for (Entry kv : cardsWithWeights) { @@ -144,7 +143,7 @@ public class PrintSheet { return cardsWithWeights.isEmpty(); } - public Iterable toFlatList() { + public List toFlatList() { return cardsWithWeights.toFlatList(); } diff --git a/forge-core/src/main/java/forge/item/generation/BoosterGenerator.java b/forge-core/src/main/java/forge/item/generation/BoosterGenerator.java index 329a45c16df..ad6951478a1 100644 --- a/forge-core/src/main/java/forge/item/generation/BoosterGenerator.java +++ b/forge-core/src/main/java/forge/item/generation/BoosterGenerator.java @@ -254,7 +254,7 @@ public class BoosterGenerator { if (sheetKey.startsWith("wholeSheet")) { PrintSheet ps = getPrintSheet(sheetKey); - result.addAll(ps.all()); + result.addAll(ps.toFlatList()); continue; } @@ -384,7 +384,7 @@ public class BoosterGenerator { PrintSheet replaceThis = tryGetStaticSheet(split[0]); List candidates = Lists.newArrayList(); for (PaperCard p : result) { - if (replaceThis.all().contains(p)) { + if (replaceThis.contains(p)) { candidates.add(candidates.size(), p); } } @@ -398,7 +398,7 @@ public class BoosterGenerator { PrintSheet replaceThis = tryGetStaticSheet(split[0]); List candidates = Lists.newArrayList(); for (PaperCard p : result) { - if (replaceThis.all().contains(p)) { + if (replaceThis.contains(p)) { candidates.add(candidates.size(), p); } } diff --git a/forge-core/src/main/java/forge/util/ItemPool.java b/forge-core/src/main/java/forge/util/ItemPool.java index b588b2dace5..436871c2e39 100644 --- a/forge-core/src/main/java/forge/util/ItemPool.java +++ b/forge-core/src/main/java/forge/util/ItemPool.java @@ -277,6 +277,10 @@ public class ItemPool implements Iterable filter) { + return items.keySet().stream().filter(filter).findFirst().orElse(null); + } + public void clear() { items.clear(); }