diff options
author | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-03-28 22:03:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-28 17:03:48 -0400 |
commit | edb859dc024b969a54789c62ae9ff8f15bdd020a (patch) | |
tree | b00dffbaf7827ec0ebcbd4adbbac79b0aceeec11 /src/main/java/de/hysky/skyblocker/skyblock | |
parent | e27a78393240db57774f0d5dbce825768db245f3 (diff) | |
download | Skyblocker-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.java | 5 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java | 40 |
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; + } +} |