From b6b18ee28a2d94e32f10146f431b741131c4c495 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Wed, 22 Jun 2022 17:41:46 +0800 Subject: Fix poor tag matching --- .../impl/client/gui/screen/AbstractDisplayViewingScreen.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'runtime/src/main/java') 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 88963bca5..1ae89bdf1 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 @@ -26,6 +26,7 @@ package me.shedaniel.rei.impl.client.gui.screen; import com.google.common.collect.Lists; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.datafixers.util.Pair; import com.mojang.math.Matrix4f; import dev.architectury.fluid.FluidStack; import me.shedaniel.math.Rectangle; @@ -212,15 +213,18 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis } } // TODO: Don't hardcode - Stream> collection; + Registry registry; List> objects; if (type == VanillaEntryTypes.ITEM) { - collection = Registry.ITEM.getTagNames(); + registry = Registry.ITEM; objects = CollectionUtils.map(widget.getEntries(), stack -> stack.castValue().getItem().builtInRegistryHolder()); } else if (type == VanillaEntryTypes.FLUID) { - collection = Registry.FLUID.getTagNames(); + registry = Registry.FLUID; objects = CollectionUtils.map(widget.getEntries(), stack -> stack.castValue().getFluid().builtInRegistryHolder()); } else continue; + Stream> collection = registry.getTags() + .filter(pair -> pair.getSecond().size() == objects.size()) + .map(Pair::getFirst); TagKey firstOrNull = CollectionUtils.findFirstOrNull(collection::iterator, key -> CollectionUtils.allMatch(objects, holder -> ((Holder) holder).is((TagKey) key))); if (firstOrNull != null) { -- cgit