diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-02-18 10:31:15 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-02-18 10:31:15 +0800 |
| commit | c0e13b0125bda9512493ab5a9356339506a58291 (patch) | |
| tree | 4c20f508c9bb18057dc2ea59985166e378736841 /runtime/src | |
| parent | 732e0640dbf1dbe4b98d2a7f8682e9d10dcfac8f (diff) | |
| download | RoughlyEnoughItems-c0e13b0125bda9512493ab5a9356339506a58291.tar.gz RoughlyEnoughItems-c0e13b0125bda9512493ab5a9356339506a58291.tar.bz2 RoughlyEnoughItems-c0e13b0125bda9512493ab5a9356339506a58291.zip | |
Close #783
Diffstat (limited to 'runtime/src')
3 files changed, 16 insertions, 4 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java index be9a9754c..479c38083 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java @@ -33,6 +33,7 @@ import me.shedaniel.rei.api.client.gui.widgets.Widgets; import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; import me.shedaniel.rei.api.client.registry.display.DisplayCategory; import me.shedaniel.rei.api.client.registry.display.DisplayCategoryView; +import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; import me.shedaniel.rei.api.common.entry.EntryStack; @@ -54,10 +55,7 @@ import net.minecraft.tags.TagContainer; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; public abstract class AbstractDisplayViewingScreen extends Screen implements DisplayScreen { protected final Map<DisplayCategory<?>, List<DisplaySpec>> categoryMap; @@ -170,6 +168,18 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis } } + protected void transformFiltering(List<? extends GuiEventListener> setupDisplay) { + for (EntryWidget widget : Widgets.<EntryWidget>walk(setupDisplay, EntryWidget.class::isInstance)) { + if (widget.getEntries().size() > 1) { + Collection<EntryStack<?>> refiltered = EntryRegistry.getInstance().refilterNew(widget.getEntries()); + if (!refiltered.isEmpty()) { + widget.clearStacks(); + widget.entries(refiltered); + } + } + } + } + protected void setupTags(List<Widget> widgets) { TagContainer tags = Minecraft.getInstance().getConnection().getTags(); outer: diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java index 1102abca8..b1f131197 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java @@ -164,6 +164,7 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen setupDisplay.add(Widgets.createLabel(new Point(recipeBounds.getCenterX(), recipeBounds.getCenterY() + 1), new TextComponent("Check console for error"))); } setupTags(setupDisplay); + transformFiltering(setupDisplay); transformIngredientNotice(setupDisplay, ingredientStackToNotice); transformResultNotice(setupDisplay, resultStackToNotice); for (EntryWidget widget : Widgets.<EntryWidget>walk(widgets, EntryWidget.class::isInstance)) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java index b5457e2ed..47f914e5d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java @@ -267,6 +267,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { setupDisplay.add(Widgets.createLabel(new Point(displayBounds.getCenterX(), displayBounds.getCenterY() + 1), new TextComponent("Check console for error"))); } setupTags(setupDisplay); + transformFiltering(setupDisplay); transformIngredientNotice(setupDisplay, ingredientStackToNotice); transformResultNotice(setupDisplay, resultStackToNotice); for (EntryWidget widget : Widgets.<EntryWidget>walk(widgets, EntryWidget.class::isInstance)) { |
