aboutsummaryrefslogtreecommitdiff
path: root/default-plugin/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-27 23:48:34 +0800
committershedaniel <daniel@shedaniel.me>2022-06-27 23:48:34 +0800
commit8e69d8f9a5101b7518aecd2d4576688653c884bb (patch)
treeeb623bddf5045f83909eba930ee48058859b5ab7 /default-plugin/src/main/java
parentb7092f587069063548bcf30aa2c7cd745114b5c9 (diff)
downloadRoughlyEnoughItems-8e69d8f9a5101b7518aecd2d4576688653c884bb.tar.gz
RoughlyEnoughItems-8e69d8f9a5101b7518aecd2d4576688653c884bb.tar.bz2
RoughlyEnoughItems-8e69d8f9a5101b7518aecd2d4576688653c884bb.zip
Implement fallback renderer for entries that can't be converted to EntryStacks
Diffstat (limited to 'default-plugin/src/main/java')
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java32
1 files changed, 31 insertions, 1 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java
index 342df8719..24296cfaa 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/DefaultTagCategory.java
@@ -32,10 +32,13 @@ import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.ClientHelper;
import me.shedaniel.rei.api.client.REIRuntime;
+import me.shedaniel.rei.api.client.gui.AbstractRenderer;
import me.shedaniel.rei.api.client.gui.Renderer;
import me.shedaniel.rei.api.client.gui.widgets.*;
import me.shedaniel.rei.api.client.registry.display.DisplayCategory;
+import me.shedaniel.rei.api.client.util.ClientEntryStacks;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
+import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
@@ -43,15 +46,19 @@ import me.shedaniel.rei.plugin.common.displays.tag.DefaultTagDisplay;
import me.shedaniel.rei.plugin.common.displays.tag.TagNode;
import me.shedaniel.rei.plugin.common.displays.tag.TagNodes;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.Font;
+import net.minecraft.core.Holder;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Items;
+import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.function.Function;
public class DefaultTagCategory implements DisplayCategory<DefaultTagDisplay<?, ?>> {
@Override
@@ -127,7 +134,30 @@ public class DefaultTagCategory implements DisplayCategory<DefaultTagDisplay<?,
} else {
tagNode[0] = dataResult.result().get();
//noinspection rawtypes
- delegate[0] = Widgets.overflowed(overflowBounds, Widgets.padded(16, new TagTreeWidget(tagNode[0], display.getMapper())));
+ Function<? extends Holder<?>, ? extends EntryStack<?>> displayMapper = display.getMapper();
+ Function<Holder<?>, EntryStack<?>> mapper = holder -> {
+ EntryStack<?> stack = ((Function<Holder<?>, EntryStack<?>>) displayMapper).apply(holder);
+ if (stack.isEmpty()) {
+ return ClientEntryStacks.of(new AbstractRenderer() {
+ @Override
+ public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
+ Minecraft instance = Minecraft.getInstance();
+ Font font = instance.font;
+ String text = "?";
+ int width = font.width(text);
+ font.draw(matrices, text, bounds.getCenterX() - width / 2f + 0.2f, bounds.getCenterY() - font.lineHeight / 2f + 1f, REIRuntime.getInstance().isDarkThemeEnabled() ? -4473925 : -12566464);
+ }
+
+ @Override
+ @Nullable
+ public Tooltip getTooltip(TooltipContext context) {
+ return Tooltip.create(context.getPoint(), new TextComponent(holder.unwrapKey().map(key -> key.location().toString()).orElse("null")));
+ }
+ });
+ }
+ return stack;
+ };
+ delegate[0] = Widgets.overflowed(overflowBounds, Widgets.padded(16, new TagTreeWidget(tagNode[0], mapper)));
}
});