diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-22 17:41:46 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-06-28 03:21:12 +0800 |
| commit | e982a8fbaa7b94a2eea242106322334a1a0eefe9 (patch) | |
| tree | 556d90a22d2d44d5afe28da42b86fb6dce8499c0 /runtime | |
| parent | 6c69e8a9f277245e7ac8f8461e9b692df2ef7e74 (diff) | |
| download | RoughlyEnoughItems-e982a8fbaa7b94a2eea242106322334a1a0eefe9.tar.gz RoughlyEnoughItems-e982a8fbaa7b94a2eea242106322334a1a0eefe9.tar.bz2 RoughlyEnoughItems-e982a8fbaa7b94a2eea242106322334a1a0eefe9.zip | |
Fix poor tag matching
Diffstat (limited to 'runtime')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java | 10 |
1 files changed, 7 insertions, 3 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 531038db4..37bf22b16 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; @@ -210,15 +211,18 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis } } // TODO: Don't hardcode - Stream<? extends TagKey<?>> collection; + Registry<?> registry; List<Holder<?>> objects; if (type == VanillaEntryTypes.ITEM) { - collection = Registry.ITEM.getTagNames(); + registry = Registry.ITEM; objects = CollectionUtils.map(widget.getEntries(), stack -> stack.<ItemStack>castValue().getItem().builtInRegistryHolder()); } else if (type == VanillaEntryTypes.FLUID) { - collection = Registry.FLUID.getTagNames(); + registry = Registry.FLUID; objects = CollectionUtils.map(widget.getEntries(), stack -> stack.<FluidStack>castValue().getFluid().builtInRegistryHolder()); } else continue; + Stream<? extends TagKey<?>> 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<Object>) holder).is((TagKey<Object>) key))); if (firstOrNull != null) { |
