diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-05-27 20:22:53 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-05-27 20:22:53 +0800 |
| commit | 1d0a4480f881350cef45f0f1f76f48cd293a7db8 (patch) | |
| tree | 738e981e5ed1eee28754660aed4b23269898959c /api | |
| parent | 87e9a9de92ee0b4d8045be497f72a79fc0a0c4c6 (diff) | |
| download | RoughlyEnoughItems-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.java | 33 |
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(); |
