aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-05-27 20:22:53 +0800
committershedaniel <daniel@shedaniel.me>2022-05-27 20:22:53 +0800
commit1d0a4480f881350cef45f0f1f76f48cd293a7db8 (patch)
tree738e981e5ed1eee28754660aed4b23269898959c /api
parent87e9a9de92ee0b4d8045be497f72a79fc0a0c4c6 (diff)
downloadRoughlyEnoughItems-1d0a4480f881350cef45f0f1f76f48cd293a7db8.tar.gz
RoughlyEnoughItems-1d0a4480f881350cef45f0f1f76f48cd293a7db8.tar.bz2
RoughlyEnoughItems-1d0a4480f881350cef45f0f1f76f48cd293a7db8.zip
Fix clicking pinned JEI slots
Diffstat (limited to 'api')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
index 1e88199b4..3c753e747 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
@@ -24,8 +24,11 @@
package me.shedaniel.rei.api.client.gui.widgets;
import com.mojang.blaze3d.vertex.PoseStack;
+import com.mojang.math.Matrix4f;
+import com.mojang.math.Vector4f;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
+import me.shedaniel.math.impl.PointHelper;
import me.shedaniel.rei.api.client.gui.AbstractContainerEventHandler;
import me.shedaniel.rei.api.client.gui.Renderer;
import net.fabricmc.api.EnvType;
@@ -33,6 +36,8 @@ import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
+import java.util.Stack;
+
/**
* The base class for a screen widget
*
@@ -49,6 +54,34 @@ public abstract class Widget extends AbstractContainerEventHandler implements ne
* The font for rendering text
*/
protected final Font font = minecraft.font;
+ private static final Stack<Point> mouseStack = new Stack<>();
+
+ public static Point mouse() {
+ return mouseStack.empty() ? PointHelper.ofMouse() : mouseStack.peek();
+ }
+
+ public static Point pushMouse(Point mouse) {
+ return mouseStack.push(mouse);
+ }
+
+ public static Point popMouse() {
+ return mouseStack.pop();
+ }
+
+ public static Point translateMouse(PoseStack poses) {
+ return translateMouse(poses.last().pose());
+ }
+
+ public static Point translateMouse(double x, double y, double z) {
+ return translateMouse(Matrix4f.createTranslateMatrix((float) x, (float) y, (float) z));
+ }
+
+ public static Point translateMouse(Matrix4f pose) {
+ Point mouse = mouse();
+ Vector4f mouseVec = new Vector4f(mouse.x, mouse.y, 0, 1);
+ mouseVec.transform(pose);
+ return pushMouse(mouse);
+ }
public int getZ() {
return this.getBlitOffset();