diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-17 16:45:00 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-06-17 16:45:00 +0800 |
| commit | 37ff3e5ecf9052c1690ff2475f27bc60a7ee36f3 (patch) | |
| tree | b3513d7463ba93bfa5ba580871ce5c09baea167b /runtime/src/main | |
| parent | 15b115f1675db77e7886330c920e0d9879553272 (diff) | |
| parent | 530c2b71410de0bd89d9dc992b09cac8c7078751 (diff) | |
| download | RoughlyEnoughItems-37ff3e5ecf9052c1690ff2475f27bc60a7ee36f3.tar.gz RoughlyEnoughItems-37ff3e5ecf9052c1690ff2475f27bc60a7ee36f3.tar.bz2 RoughlyEnoughItems-37ff3e5ecf9052c1690ff2475f27bc60a7ee36f3.zip | |
Merge remote-tracking branch 'origin/8.x-1.18.2' into feature/rei_8.3
Diffstat (limited to 'runtime/src/main')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java index 8b1f60edc..9fd6fc102 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java @@ -67,8 +67,8 @@ import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Consumer; +import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; @ApiStatus.Internal public class ViewsImpl implements Views { @@ -102,12 +102,13 @@ public class ViewsImpl implements Views { Set<CategoryIdentifier<?>> filteringCategories = builder.getFilteringCategories(); List<EntryStack<?>> recipesForStacks = builder.getRecipesFor(); List<EntryStack<?>> usagesForStacks = builder.getUsagesFor(); - recipesForStacks = Stream.concat(recipesForStacks.stream(), recipesForStacks.stream().map(EntryStack::wildcard)) - .distinct() - .collect(Collectors.toList()); - usagesForStacks = Stream.concat(usagesForStacks.stream(), usagesForStacks.stream().map(EntryStack::wildcard)) - .distinct() - .collect(Collectors.toList()); + Function<EntryStack<?>, Collection<EntryStack<?>>> wildcardFunction = stack -> { + EntryStack<?> wildcard = stack.wildcard(); + if (EntryStacks.equalsFuzzy(wildcard, stack)) return Collections.emptyList(); + return Collections.singletonList(wildcard); + }; + List<EntryStack<?>> recipesForStacksWildcard = CollectionUtils.flatMap(recipesForStacks, wildcardFunction); + List<EntryStack<?>> usagesForStacksWildcard = CollectionUtils.flatMap(usagesForStacks, wildcardFunction); DisplayRegistry displayRegistry = DisplayRegistry.getInstance(); Map<DisplayCategory<?>, List<Display>> result = Maps.newLinkedHashMap(); @@ -145,7 +146,24 @@ public class ViewsImpl implements Views { } } } - for (EntryStack<?> usagesFor : usagesForStacks) { + if (set.isEmpty() && (!recipesForStacksWildcard.isEmpty() || !usagesForStacksWildcard.isEmpty())) { + for (Display display : allRecipesFromCategory) { + if (processingVisibilityHandlers && !displayRegistry.isDisplayVisible(display)) continue; + if (!recipesForStacksWildcard.isEmpty()) { + if (isRecipesFor(recipesForStacksWildcard, display)) { + set.add(display); + continue; + } + } + if (!usagesForStacksWildcard.isEmpty()) { + if (isUsagesFor(usagesForStacksWildcard, display)) { + set.add(display); + continue; + } + } + } + } + for (EntryStack<?> usagesFor : Iterables.concat(usagesForStacks, usagesForStacksWildcard)) { if (isStackWorkStationOfCategory(categoryConfiguration, usagesFor)) { if (processingVisibilityHandlers) { set.addAll(CollectionUtils.filterToSet(allRecipesFromCategory, displayRegistry::isDisplayVisible)); |
