aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-08-02 19:54:29 +0800
committershedaniel <daniel@shedaniel.me>2021-08-02 19:58:20 +0800
commitb866becfb620c02a74fb990915001e154b5d2b0b (patch)
tree904a3cb692af8a8ec059852d6b450e2a00c58621 /runtime/src/main/java/me/shedaniel
parent9f29770195319484f534de09fb221c66f31e0247 (diff)
downloadRoughlyEnoughItems-b866becfb620c02a74fb990915001e154b5d2b0b.tar.gz
RoughlyEnoughItems-b866becfb620c02a74fb990915001e154b5d2b0b.tar.bz2
RoughlyEnoughItems-b866becfb620c02a74fb990915001e154b5d2b0b.zip
Welcome, Forge 1.17
Diffstat (limited to 'runtime/src/main/java/me/shedaniel')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java32
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/QueuedTooltip.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java1
-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;