aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-03-28 22:03:48 +0100
committerGitHub <noreply@github.com>2024-03-28 17:03:48 -0400
commitedb859dc024b969a54789c62ae9ff8f15bdd020a (patch)
treeb00dffbaf7827ec0ebcbd4adbbac79b0aceeec11 /src/main/java/de/hysky/skyblocker/skyblock
parente27a78393240db57774f0d5dbce825768db245f3 (diff)
downloadSkyblocker-edb859dc024b969a54789c62ae9ff8f15bdd020a.tar.gz
Skyblocker-edb859dc024b969a54789c62ae9ff8f15bdd020a.tar.bz2
Skyblocker-edb859dc024b969a54789c62ae9ff8f15bdd020a.zip
Garden mouse locking feature (#607)
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java40
2 files changed, 44 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
index 72efb207..febbe825 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
@@ -18,7 +18,7 @@ import java.util.Map;
public class FarmingHudWidget extends Widget {
private static final MutableText TITLE = Text.literal("Farming").formatted(Formatting.YELLOW, Formatting.BOLD);
- private static final Map<String, ItemStack> FARMING_TOOLS = Map.ofEntries(
+ public static final Map<String, ItemStack> FARMING_TOOLS = Map.ofEntries(
Map.entry("THEORETICAL_HOE_WHEAT_1", Ico.WHEAT),
Map.entry("THEORETICAL_HOE_WHEAT_2", Ico.WHEAT),
Map.entry("THEORETICAL_HOE_WHEAT_3", Ico.WHEAT),
@@ -65,5 +65,8 @@ public class FarmingHudWidget extends Widget {
double pitch = cameraEntity == null ? 0.0d : cameraEntity.getPitch();
addComponent(new PlainTextComponent(Text.literal("Yaw: " + String.format("%.3f", MathHelper.wrapDegrees(yaw))).formatted(Formatting.YELLOW)));
addComponent(new PlainTextComponent(Text.literal("Pitch: " + String.format("%.3f", MathHelper.wrapDegrees(pitch))).formatted(Formatting.YELLOW)));
+ if (LowerSensitivity.isSensitivityLowered()) {
+ addComponent(new PlainTextComponent(Text.translatable("skyblocker.garden.hud.mouseLocked").formatted(Formatting.ITALIC)));
+ }
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java
new file mode 100644
index 00000000..edea50de
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java
@@ -0,0 +1,40 @@
+package de.hysky.skyblocker.skyblock.garden;
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.ItemUtils;
+import de.hysky.skyblocker.utils.Location;
+import de.hysky.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.item.ItemStack;
+
+public class LowerSensitivity {
+
+ private static boolean sensitivityLowered = false;
+
+ public static void init() {
+ ClientTickEvents.END_WORLD_TICK.register(world -> {
+ if (!Utils.isOnSkyblock() || Utils.getLocation() != Location.GARDEN || MinecraftClient.getInstance().player == null) {
+ if (sensitivityLowered) lowerSensitivity(false);
+ return;
+ }
+ if (SkyblockerConfigManager.get().locations.garden.lockMouseTool) {
+ ItemStack mainHandStack = MinecraftClient.getInstance().player.getMainHandStack();
+ String itemId = ItemUtils.getItemId(mainHandStack);
+ boolean shouldLockMouse = FarmingHudWidget.FARMING_TOOLS.containsKey(itemId) && (!SkyblockerConfigManager.get().locations.garden.lockMouseGroundOnly || MinecraftClient.getInstance().player.isOnGround());
+ if (shouldLockMouse && !sensitivityLowered) lowerSensitivity(true);
+ else if (!shouldLockMouse && sensitivityLowered) lowerSensitivity(false);
+
+ }
+ });
+ }
+
+ public static void lowerSensitivity(boolean lowerSensitivity) {
+ if (sensitivityLowered == lowerSensitivity) return;
+ sensitivityLowered = lowerSensitivity;
+ }
+
+ public static boolean isSensitivityLowered() {
+ return sensitivityLowered;
+ }
+}