diff options
Diffstat (limited to 'runtime/src/main')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java | 32 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java | 13 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java | 1 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java (renamed from runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java) | 2 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java (renamed from runtime/src/main/java/me/shedaniel/rei/plugin/common/DefaultRuntimePlugin.java) | 2 |
5 files changed, 21 insertions, 29 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java index 628e823fc..b6dc4028d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java @@ -28,6 +28,7 @@ import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Vector4f; +import dev.architectury.injectables.annotations.ExpectPlatform; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.math.impl.PointHelper; @@ -551,35 +552,12 @@ public class ScreenOverlayImpl extends ScreenOverlay { } public void renderTooltip(PoseStack matrices, Tooltip tooltip) { - List<ClientTooltipComponent> lines = tooltip.entries().stream() - .flatMap(component -> { - if (component.isText()) { - return Minecraft.getInstance().font.getSplitter().splitLines(component.getAsText(), 100000, Style.EMPTY).stream() - .map(Language.getInstance()::getVisualOrder) - .map(ClientTooltipComponent::create); - } else { - return Stream.of(component.getAsComponent()); - } - }) - .collect(Collectors.toList()); - for (TooltipComponent component : tooltip.components()) { - try { - ClientInternals.getClientTooltipComponent(lines, component); - } catch (Throwable exception) { - throw new IllegalArgumentException("Failed to add tooltip component! " + component + ", Class: " + (component == null ? null : component.getClass().getCanonicalName()), exception); - } - } - renderTooltipInner(matrices, lines, tooltip.getX(), tooltip.getY()); + renderTooltipInner(minecraft.screen, matrices, tooltip, tooltip.getX(), tooltip.getY()); } - public void renderTooltipInner(PoseStack matrices, List<ClientTooltipComponent> lines, int mouseX, int mouseY) { - if (lines.isEmpty()) { - return; - } - matrices.pushPose(); - matrices.translate(0, 0, 500); - minecraft.screen.renderTooltipInternal(matrices, lines, mouseX, mouseY); - matrices.popPose(); + @ExpectPlatform + public static void renderTooltipInner(Screen screen, PoseStack matrices, Tooltip tooltip, int mouseX, int mouseY) { + throw new AssertionError(); } public void addTooltip(@Nullable Tooltip tooltip) { 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 213305e18..aed5add29 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 @@ -28,6 +28,7 @@ import com.google.common.collect.Lists; 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; @@ -48,6 +49,7 @@ public class QueuedTooltip implements Tooltip { private Point location; private List<Tooltip.Entry> entries; private List<TooltipComponent> components; + private EntryStack<?> stack = EntryStack.empty(); private QueuedTooltip(Point location, Collection<Tooltip.Entry> entries) { this.location = location; @@ -110,6 +112,17 @@ public class QueuedTooltip implements Tooltip { Tooltip.super.queue(); } + @Override + public EntryStack<?> getContextStack() { + return stack; + } + + @Override + public Tooltip withContextStack(EntryStack<?> stack) { + this.stack = stack.copy(); + return this; + } + public record TooltipEntryImpl(Object obj) implements Tooltip.Entry { @Override public Component getAsText() { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java index a70f7c5d2..421422d4a 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java @@ -181,6 +181,7 @@ public abstract class AbstractEntryStack<A> implements EntryStack<A>, Renderer { try { Mutable<Tooltip> tooltip = new MutableObject<>(getRenderer().<A>cast().getTooltip(this, mouse)); if (tooltip.getValue() == null) return null; + tooltip.getValue().withContextStack(this); tooltip.getValue().addAllTexts(get(Settings.TOOLTIP_APPEND_EXTRA).apply(this)); tooltip.setValue(get(Settings.TOOLTIP_PROCESSOR).apply(this, tooltip.getValue())); if (tooltip.getValue() == null) return null; diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java index 5334fbea5..22bd239b4 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java @@ -21,7 +21,7 @@ * SOFTWARE. */ -package me.shedaniel.rei.plugin.client; +package me.shedaniel.rei.plugin.client.runtime; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/common/DefaultRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java index 103da1937..8aeff8a20 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/common/DefaultRuntimePlugin.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java @@ -21,7 +21,7 @@ * SOFTWARE. */ -package me.shedaniel.rei.plugin.common; +package me.shedaniel.rei.plugin.common.runtime; import dev.architectury.event.CompoundEventResult; import dev.architectury.fluid.FluidStack; |
