From caa82617183f2665cb4bd369eab72b996b4ef1e4 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Tue, 12 Apr 2022 12:55:54 +0800 Subject: Fix quark tooltip fighting issues --- .../rei/impl/client/gui/widget/EntryWidget.java | 2 -- .../rei/impl/client/gui/widget/QueuedTooltip.java | 39 +++++++++++++++++----- .../plugin/client/entry/ItemEntryDefinition.java | 11 ------ 3 files changed, 31 insertions(+), 21 deletions(-) (limited to 'runtime') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java index 3f9cfe4cc..96a19c34d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java @@ -362,11 +362,9 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget { RenderSystem.disableDepthTest(); RenderSystem.colorMask(true, true, true, false); Rectangle bounds = getInnerBounds(); - setZ(300); fillGradient(matrices, bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), 0x80ffffff, 0x80ffffff); int darkColor = 0x111111 | ((int) (90 * darkHighlightedAlpha.value()) << 24); fillGradient(matrices, bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), darkColor, darkColor); - setZ(0); RenderSystem.colorMask(true, true, true, true); RenderSystem.enableDepthTest(); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java index 586eae71a..5c992d197 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java @@ -29,6 +29,7 @@ import me.shedaniel.math.Point; import me.shedaniel.math.impl.PointHelper; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; @@ -46,17 +47,15 @@ import java.util.List; @Environment(EnvType.CLIENT) public class QueuedTooltip implements Tooltip { private Point location; - private List entries; - private List components; + private List entries; private EntryStack stack = EntryStack.empty(); - private QueuedTooltip(Point location, Collection entries) { + private QueuedTooltip(Point location, Collection entries) { this.location = location; if (this.location == null) { this.location = PointHelper.ofMouse(); } - this.entries = Lists.newArrayList(entries); - this.components = Lists.newArrayList(); + this.entries = (List) Lists.newArrayList(entries); } public static QueuedTooltip impl(Point location, Collection text) { @@ -75,12 +74,12 @@ public class QueuedTooltip implements Tooltip { @Override public List entries() { - return entries; + return (List) (List) entries; } @Override public List components() { - return components; + return CollectionUtils.filterAndMap(entries, TooltipEntryImpl::isTooltipComponent, TooltipEntryImpl::getAsTooltipComponent); } @Override @@ -97,7 +96,7 @@ public class QueuedTooltip implements Tooltip { @Override public Tooltip add(TooltipComponent component) { - components.add(component); + entries.add(new TooltipEntryImpl(component)); return this; } @@ -106,6 +105,13 @@ public class QueuedTooltip implements Tooltip { Tooltip.super.queue(); } + @Override + public Tooltip copy() { + QueuedTooltip tooltip = new QueuedTooltip(location.clone(), entries); + tooltip.withContextStack(getContextStack()); + return tooltip; + } + @Override public EntryStack getContextStack() { return stack; @@ -128,8 +134,25 @@ public class QueuedTooltip implements Tooltip { return obj instanceof Component; } + public boolean isTooltipComponent() { + return obj instanceof TooltipComponent; + } + + public boolean isClientComponent() { + return obj instanceof ClientTooltipComponent; + } + + @Override + public TooltipComponent getAsTooltipComponent() { + return (TooltipComponent) obj; + } + @Override public ClientTooltipComponent getAsComponent() { + if (isTooltipComponent()) { + return ClientTooltipComponent.create((TooltipComponent) obj); + } + return (ClientTooltipComponent) obj; } } diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java index 41c2bda04..f5efc2e4e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java @@ -295,17 +295,6 @@ public class ItemEntryDefinition implements EntryDefinition, EntrySer Minecraft.getInstance().getItemRenderer().render(value, ItemTransforms.TransformType.GUI, false, matrices, immediate, ITEM_LIGHT, OverlayTexture.NO_OVERLAY, model); matrices.popPose(); - - /*ItemStack value = entry.getValue(); - matrices.pushPose(); - matrices.last().pose().load(RenderSystem.getModelViewStack().last().pose()); - matrices.scale(bounds.getWidth(), (bounds.getWidth() + bounds.getHeight()) / -2f, 1.0F); - RenderSystem.modelViewMatrix = matrices.last().pose(); - PoseStack stack = new PoseStack(); - stack.translate(bounds.getCenterX() / (double) bounds.getWidth(),bounds.getCenterY() * -2.0 / (bounds.getWidth() + bounds.getHeight()),100.0F + entry.getZ()); - Minecraft.getInstance().getItemRenderer().render(value, ItemTransforms.TransformType.GUI, false, stack, immediate, - 0xf000f0, OverlayTexture.NO_OVERLAY, getModelFromStack(value)); - matrices.popPose();*/ } } -- cgit