diff --git a/src/main/java/mezz/jei/util/StackHelper.java b/src/main/java/mezz/jei/util/StackHelper.java index 8ca5be683..d12243ce5 100644 --- a/src/main/java/mezz/jei/util/StackHelper.java +++ b/src/main/java/mezz/jei/util/StackHelper.java @@ -146,23 +146,24 @@ public boolean containsSameStacks(@Nonnull Iterable> s } public Integer containsAnyStackIndexed(@Nullable Map stacks, @Nullable Iterable contains) { - return containsStackMatchable(stacks == null ? null : new MatchingIndexed(stacks), contains == null ? null : (Iterable>) (Iterable) new MatchingIterable(contains)); + MatchingIndexed matchingStacks = new MatchingIndexed(stacks); + MatchingIterable matchingContains = new MatchingIterable(contains); + return containsStackMatchable(matchingStacks, matchingContains); } public ItemStack containsStack(@Nullable Iterable stacks, @Nullable ItemStack contains) { - return containsAnyStack(stacks == null ? null : stacks, contains == null ? null : Collections.singletonList(contains)); + List containsList = contains == null ? null : Collections.singletonList(contains); + return containsAnyStack(stacks, containsList); } public ItemStack containsAnyStack(@Nullable Iterable stacks, @Nullable Iterable contains) { - return containsStackMatchable(stacks == null ? null : new MatchingIterable(stacks), contains == null ? null : (Iterable>) (Iterable) new MatchingIterable(contains)); + MatchingIterable matchingStacks = new MatchingIterable(stacks); + MatchingIterable matchingContains = new MatchingIterable(contains); + return containsStackMatchable(matchingStacks, matchingContains); } /* Returns an ItemStack from "stacks" if it isEquivalent to an ItemStack from "contains" */ - public R containsStackMatchable(@Nullable Iterable> stacks, @Nullable Iterable> contains) { - if (stacks == null || contains == null) { - return null; - } - + public R containsStackMatchable(@Nonnull Iterable> stacks, @Nonnull Iterable> contains) { for (ItemStackMatchable containStack : contains) { R matchingStack = containsStack(stacks, containStack); if (matchingStack != null) { @@ -174,11 +175,7 @@ public R containsStackMatchable(@Nullable Iterable> st } /* Returns an ItemStack from "stacks" if it isEquivalent to "contains" */ - public R containsStack(@Nullable Iterable> stacks, @Nullable ItemStackMatchable contains) { - if (stacks == null || contains == null) { - return null; - } - + public R containsStack(@Nonnull Iterable> stacks, @Nonnull ItemStackMatchable contains) { for (ItemStackMatchable stack : stacks) { if (isEquivalent(contains.getStack(), stack.getStack())) { return stack.getResult(); @@ -527,8 +524,12 @@ private static class MatchingIterable implements Iterable list; - public MatchingIterable(@Nonnull Iterable list) { - this.list = list; + public MatchingIterable(@Nullable Iterable list) { + if (list == null) { + this.list = Collections.emptyList(); + } else { + this.list = list; + } } @Nonnull @@ -561,8 +562,12 @@ private static class MatchingIndexed implements Iterable map; - public MatchingIndexed(@Nonnull Map map) { - this.map = map; + public MatchingIndexed(@Nullable Map map) { + if (map == null) { + this.map = Collections.emptyMap(); + } else { + this.map = map; + } } @Nonnull