From 9fee71154e1199e68da443a349eeef76faa4a843 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 6 Mar 2026 23:54:25 +0100 Subject: [PATCH] fps and freelook --- .../modules/interfaces/FpsInterface.java | 7 ++++ .../modules/interfaces/FreelookInterface.java | 11 ++++++ .../org/saturnclient/modules/mods/Fps.java | 19 ++++++++-- .../saturnclient/modules/mods/Freelook.java | 38 ++++++++++++++----- .../impl/FabricModuleProvider.java | 5 ++- .../saturnclient/impl/modules/FpsFabric.java | 15 ++++++++ .../impl/modules/FreelookFabric.java | 27 +++++++++++++ 7 files changed, 107 insertions(+), 15 deletions(-) create mode 100644 common/src/main/java/org/saturnclient/modules/interfaces/FpsInterface.java create mode 100644 common/src/main/java/org/saturnclient/modules/interfaces/FreelookInterface.java rename {versions/1.21.4 => common}/src/main/java/org/saturnclient/modules/mods/Fps.java (85%) rename {versions/1.21.4 => common}/src/main/java/org/saturnclient/modules/mods/Freelook.java (80%) create mode 100644 versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FpsFabric.java create mode 100644 versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FreelookFabric.java diff --git a/common/src/main/java/org/saturnclient/modules/interfaces/FpsInterface.java b/common/src/main/java/org/saturnclient/modules/interfaces/FpsInterface.java new file mode 100644 index 0000000..b16f2e7 --- /dev/null +++ b/common/src/main/java/org/saturnclient/modules/interfaces/FpsInterface.java @@ -0,0 +1,7 @@ +package org.saturnclient.modules.interfaces; + +public interface FpsInterface { + + int getFps(); + +} \ No newline at end of file diff --git a/common/src/main/java/org/saturnclient/modules/interfaces/FreelookInterface.java b/common/src/main/java/org/saturnclient/modules/interfaces/FreelookInterface.java new file mode 100644 index 0000000..67f0814 --- /dev/null +++ b/common/src/main/java/org/saturnclient/modules/interfaces/FreelookInterface.java @@ -0,0 +1,11 @@ +package org.saturnclient.modules.interfaces; + +public interface FreelookInterface { + + boolean isFirstPerson(); + + void setFirstPerson(); + + void setThirdPersonBack(); + +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Fps.java b/common/src/main/java/org/saturnclient/modules/mods/Fps.java similarity index 85% rename from versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Fps.java rename to common/src/main/java/org/saturnclient/modules/mods/Fps.java index d989b03..0c8c1a0 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Fps.java +++ b/common/src/main/java/org/saturnclient/modules/mods/Fps.java @@ -4,35 +4,46 @@ import org.saturnclient.modules.HudMod; import org.saturnclient.modules.ModDimensions; import org.saturnclient.modules.Module; import org.saturnclient.modules.ModuleDetails; -import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.modules.interfaces.FpsInterface; import org.saturnclient.config.manager.Property; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.resources.Fonts; public class Fps extends Module implements HudMod { + private static Property enabled = Property.bool(false); private static ModDimensions dimensions = new ModDimensions(60, Fonts.getHeight()); - public Fps() { + private final FpsInterface minecraft; + + public Fps(FpsInterface minecraft) { super(new ModuleDetails("FPS Display", "fps") .description("Displays current FPS") .version("v0.1.0") .tags("Utility"), enabled.named("Enabled"), dimensions.prop()); + + this.minecraft = minecraft; } @Override public void renderHud(RenderScope scope) { - String text = String.valueOf(SaturnClient.client.getCurrentFps()) + " FPS"; + int fps = minecraft.getFps(); + + String text = fps + " FPS"; + scope.drawText(text, 0, 0, dimensions.font.value, dimensions.fgColor.value); + dimensions.width = Fonts.getWidth(text, dimensions.font.value); } @Override public void renderDummy(RenderScope scope) { String text = "369 FPS"; + scope.drawText(text, 0, 0, dimensions.font.value, dimensions.fgColor.value); + dimensions.width = Fonts.getWidth(text, dimensions.font.value); } @@ -50,4 +61,4 @@ public class Fps extends Module implements HudMod { public ModDimensions getDimensions() { return dimensions; } -} +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Freelook.java b/common/src/main/java/org/saturnclient/modules/mods/Freelook.java similarity index 80% rename from versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Freelook.java rename to common/src/main/java/org/saturnclient/modules/mods/Freelook.java index 17bae5d..7d643ef 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Freelook.java +++ b/common/src/main/java/org/saturnclient/modules/mods/Freelook.java @@ -1,21 +1,24 @@ package org.saturnclient.modules.mods; -import org.lwjgl.glfw.GLFW; import org.saturnclient.modules.Module; import org.saturnclient.modules.ModuleDetails; -import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.modules.interfaces.FreelookInterface; +import org.saturnclient.config.manager.Key; import org.saturnclient.config.manager.Property; -import net.minecraft.client.option.Perspective; - public class Freelook extends Module { + private static Property enabled = Property.bool(false); private static Property toggle = Property.bool(true); - public static Property freelookKey = Property.keybinding(GLFW.GLFW_KEY_H); + + public static Property freelookKey = Property.keybinding(Key.GLFW_KEY_H); + public static boolean isFreeLooking = false; private static boolean was1stPerson = false; - public Freelook() { + private final FreelookInterface minecraft; + + public Freelook(FreelookInterface minecraft) { super( new ModuleDetails("Freelook", "freelook") .description("Allows you to look around freely without moving your character") @@ -24,37 +27,52 @@ public class Freelook extends Module { enabled.named("Enabled"), toggle.named("Toggle freelook"), freelookKey.named("Freelook Keybinding")); + + this.minecraft = minecraft; } @Override public void tick() { + if (toggle.value) { + if (freelookKey.wasKeyPressed()) { + if (isFreeLooking) { stopFreelook(); } else { startFreelook(); } + } + } else if (freelookKey.isKeyPressed()) { + if (!isFreeLooking) { startFreelook(); } + } else if (isFreeLooking) { + stopFreelook(); + } } private void startFreelook() { isFreeLooking = true; - was1stPerson = SaturnClient.client.options.getPerspective() == Perspective.FIRST_PERSON; - SaturnClient.client.options.setPerspective(Perspective.THIRD_PERSON_BACK); + + was1stPerson = minecraft.isFirstPerson(); + + minecraft.setThirdPersonBack(); } private void stopFreelook() { + if (was1stPerson) { - SaturnClient.client.options.setPerspective(Perspective.FIRST_PERSON); + minecraft.setFirstPerson(); } + isFreeLooking = false; } @@ -67,4 +85,4 @@ public class Freelook extends Module { public boolean isEnabled() { return enabled.value; } -} +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/FabricModuleProvider.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/FabricModuleProvider.java index acbcc29..8fa3bc5 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/FabricModuleProvider.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/FabricModuleProvider.java @@ -6,11 +6,14 @@ import org.saturnclient.modules.mods.*; import org.saturnclient.impl.modules.*; public class FabricModuleProvider implements ModuleProvider { - public static Module[] MODS = { + public static final Module[] MODS = { new ArmorDisplay(new ArmorDisplayFabric()), new AutoSprint(new AutoSprintFabric()), new Coordinates(new CoordinatesFabric()), new Crosshair(new CrosshairFabric()), + new DayCounter(new DayCounterFabric()), + new Fps(new FpsFabric()), + new Freelook(new FreelookFabric()), new Clock(), }; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FpsFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FpsFabric.java new file mode 100644 index 0000000..c051b6d --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FpsFabric.java @@ -0,0 +1,15 @@ +package org.saturnclient.impl.modules; + +import org.saturnclient.modules.interfaces.FpsInterface; + +import net.minecraft.client.MinecraftClient; + +public class FpsFabric implements FpsInterface { + + private final MinecraftClient mc = MinecraftClient.getInstance(); + + @Override + public int getFps() { + return mc.getCurrentFps(); + } +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FreelookFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FreelookFabric.java new file mode 100644 index 0000000..2298d93 --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/FreelookFabric.java @@ -0,0 +1,27 @@ +package org.saturnclient.impl.modules; + +import org.saturnclient.modules.interfaces.FreelookInterface; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.Perspective; + +public class FreelookFabric implements FreelookInterface { + + private final MinecraftClient mc = MinecraftClient.getInstance(); + + @Override + public boolean isFirstPerson() { + return mc.options.getPerspective() == Perspective.FIRST_PERSON; + } + + @Override + public void setFirstPerson() { + mc.options.setPerspective(Perspective.FIRST_PERSON); + } + + @Override + public void setThirdPersonBack() { + mc.options.setPerspective(Perspective.THIRD_PERSON_BACK); + } + +} \ No newline at end of file