aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java')
-rw-r--r--src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java50
1 files changed, 25 insertions, 25 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java b/src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java
index fd3adca..3cfd0d6 100644
--- a/src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java
+++ b/src/main/java/moe/nea/firmament/mixins/SaveCursorPositionPatch.java
@@ -4,7 +4,7 @@ package moe.nea.firmament.mixins;
import kotlin.Pair;
import moe.nea.firmament.features.inventory.SaveCursorPosition;
-import net.minecraft.client.Mouse;
+import net.minecraft.client.MouseHandler;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@@ -12,29 +12,29 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-@Mixin(Mouse.class)
+@Mixin(MouseHandler.class)
public class SaveCursorPositionPatch {
- @Shadow
- private double x;
-
- @Shadow
- private double y;
-
- @Inject(method = "lockCursor", at = @At(value = "FIELD", opcode = Opcodes.PUTFIELD, target = "Lnet/minecraft/client/Mouse;cursorLocked:Z"))
- public void onLockCursor(CallbackInfo ci) {
- SaveCursorPosition.saveCursorOriginal(x, y);
- }
-
- @Inject(method = "lockCursor", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getHandle()J"))
- public void onLockCursorAfter(CallbackInfo ci) {
- SaveCursorPosition.saveCursorMiddle(x, y);
- }
-
- @Inject(method = "unlockCursor", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;getHandle()J"))
- public void onUnlockCursor(CallbackInfo ci) {
- Pair<Double, Double> cursorPosition = SaveCursorPosition.loadCursor(this.x, this.y);
- if (cursorPosition == null) return;
- this.x = cursorPosition.getFirst();
- this.y = cursorPosition.getSecond();
- }
+ @Shadow
+ private double xpos;
+
+ @Shadow
+ private double ypos;
+
+ @Inject(method = "grabMouse", at = @At(value = "HEAD"))
+ public void onLockCursor(CallbackInfo ci) {
+ SaveCursorPosition.saveCursorOriginal(xpos, ypos);
+ }
+
+ @Inject(method = "grabMouse", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getWindow()Lcom/mojang/blaze3d/platform/Window;", ordinal = 2))
+ public void onLockCursorAfter(CallbackInfo ci) {
+ SaveCursorPosition.saveCursorMiddle(xpos, ypos);
+ }
+
+ @Inject(method = "releaseMouse", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getWindow()Lcom/mojang/blaze3d/platform/Window;", ordinal = 2))
+ public void onUnlockCursor(CallbackInfo ci) {
+ Pair<Double, Double> cursorPosition = SaveCursorPosition.loadCursor(this.xpos, this.ypos);
+ if (cursorPosition == null) return;
+ this.xpos = cursorPosition.getFirst();
+ this.ypos = cursorPosition.getSecond();
+ }
}