aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/firmament/mixins/MixinMouse.java
diff options
context:
space:
mode:
authornea <nea@nea.moe>2023-07-11 21:01:58 +0200
committernea <nea@nea.moe>2023-07-11 21:01:58 +0200
commit4d93f475aadc42c4bf83c3a0749af41659235c71 (patch)
treec8e01710defe66e06c50fa962c72fdac66a35a1f /src/main/java/moe/nea/firmament/mixins/MixinMouse.java
parent4444fcca44d9a53c8162d69e0e9f19fd214c2f54 (diff)
downloadfirmament-4d93f475aadc42c4bf83c3a0749af41659235c71.tar.gz
firmament-4d93f475aadc42c4bf83c3a0749af41659235c71.tar.bz2
firmament-4d93f475aadc42c4bf83c3a0749af41659235c71.zip
Bulk commit
Diffstat (limited to 'src/main/java/moe/nea/firmament/mixins/MixinMouse.java')
-rw-r--r--src/main/java/moe/nea/firmament/mixins/MixinMouse.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/MixinMouse.java b/src/main/java/moe/nea/firmament/mixins/MixinMouse.java
new file mode 100644
index 0000000..19cdcd2
--- /dev/null
+++ b/src/main/java/moe/nea/firmament/mixins/MixinMouse.java
@@ -0,0 +1,38 @@
+package moe.nea.firmament.mixins;
+
+import kotlin.Pair;
+import moe.nea.firmament.features.inventory.SaveCursorPosition;
+import net.minecraft.client.Mouse;
+import org.objectweb.asm.Opcodes;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+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)
+public class MixinMouse {
+ @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();
+ }
+}