From afedec45ae43efb5ab93f45ec5682c5b41e861c1 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 6 Mar 2026 23:44:19 +0100 Subject: [PATCH] day counter crosshair and coordinates --- .../interfaces/CoordinatesInterface.java | 11 ++++ .../interfaces/CrosshairInterface.java | 7 +++ .../interfaces/DayCounterInterface.java | 7 +++ .../modules/mods/Coordinates.java | 51 ++++++++++++++----- .../saturnclient/modules/mods/Crosshair.java | 26 +++++++--- .../saturnclient/modules/mods/DayCounter.java | 24 ++++++--- .../impl/FabricModuleProvider.java | 5 +- .../impl/modules/CoordinatesFabric.java | 29 +++++++++++ .../impl/modules/CrosshairFabric.java | 19 +++++++ .../impl/modules/DayCounterFabric.java | 19 +++++++ 10 files changed, 169 insertions(+), 29 deletions(-) create mode 100644 common/src/main/java/org/saturnclient/modules/interfaces/CoordinatesInterface.java create mode 100644 common/src/main/java/org/saturnclient/modules/interfaces/CrosshairInterface.java create mode 100644 common/src/main/java/org/saturnclient/modules/interfaces/DayCounterInterface.java rename {versions/1.21.4 => common}/src/main/java/org/saturnclient/modules/mods/Coordinates.java (72%) rename {versions/1.21.4 => common}/src/main/java/org/saturnclient/modules/mods/Crosshair.java (70%) rename {versions/1.21.4 => common}/src/main/java/org/saturnclient/modules/mods/DayCounter.java (78%) create mode 100644 versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CoordinatesFabric.java create mode 100644 versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CrosshairFabric.java create mode 100644 versions/1.21.4/src/main/java/org/saturnclient/impl/modules/DayCounterFabric.java diff --git a/common/src/main/java/org/saturnclient/modules/interfaces/CoordinatesInterface.java b/common/src/main/java/org/saturnclient/modules/interfaces/CoordinatesInterface.java new file mode 100644 index 0000000..c144f1a --- /dev/null +++ b/common/src/main/java/org/saturnclient/modules/interfaces/CoordinatesInterface.java @@ -0,0 +1,11 @@ +package org.saturnclient.modules.interfaces; + +public interface CoordinatesInterface { + + int getPlayerX(); + + int getPlayerY(); + + int getPlayerZ(); + +} \ No newline at end of file diff --git a/common/src/main/java/org/saturnclient/modules/interfaces/CrosshairInterface.java b/common/src/main/java/org/saturnclient/modules/interfaces/CrosshairInterface.java new file mode 100644 index 0000000..e658b64 --- /dev/null +++ b/common/src/main/java/org/saturnclient/modules/interfaces/CrosshairInterface.java @@ -0,0 +1,7 @@ +package org.saturnclient.modules.interfaces; + +public interface CrosshairInterface { + + boolean isTargetingLivingEntity(); + +} \ No newline at end of file diff --git a/common/src/main/java/org/saturnclient/modules/interfaces/DayCounterInterface.java b/common/src/main/java/org/saturnclient/modules/interfaces/DayCounterInterface.java new file mode 100644 index 0000000..5b2c37f --- /dev/null +++ b/common/src/main/java/org/saturnclient/modules/interfaces/DayCounterInterface.java @@ -0,0 +1,7 @@ +package org.saturnclient.modules.interfaces; + +public interface DayCounterInterface { + + long getDay(); + +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Coordinates.java b/common/src/main/java/org/saturnclient/modules/mods/Coordinates.java similarity index 72% rename from versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Coordinates.java rename to common/src/main/java/org/saturnclient/modules/mods/Coordinates.java index 2f59046..bfd1b9f 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Coordinates.java +++ b/common/src/main/java/org/saturnclient/modules/mods/Coordinates.java @@ -4,20 +4,27 @@ 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.CoordinatesInterface; import org.saturnclient.config.manager.Property; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.resources.Fonts; -import net.minecraft.util.math.Vec3d; - public class Coordinates extends Module implements HudMod { + private static Property enabled = Property.bool(false); - private static Property displayMethod = Property.select(0, "Flat", "Flat annotated", "Newline", + + private static Property displayMethod = Property.select( + 0, + "Flat", + "Flat annotated", + "Newline", "Newline annotated"); + private static ModDimensions dimensions = new ModDimensions(40, 18); - public Coordinates() { + private final CoordinatesInterface minecraft; + + public Coordinates(CoordinatesInterface minecraft) { super(new ModuleDetails("Coordinates", "coords") .description("Displays your current coordinates") .version("v0.1.0") @@ -25,6 +32,8 @@ public class Coordinates extends Module implements HudMod { enabled.named("Enabled"), displayMethod.named("Display Method"), dimensions.prop()); + + this.minecraft = minecraft; } @Override @@ -34,26 +43,40 @@ public class Coordinates extends Module implements HudMod { @Override public void renderHud(RenderScope scope) { - Vec3d pos = SaturnClient.client.player.getPos(); - renderCoords((int) pos.x, (int) pos.y, (int) pos.z, scope); + int x = minecraft.getPlayerX(); + int y = minecraft.getPlayerY(); + int z = minecraft.getPlayerZ(); + + renderCoords(x, y, z, scope); } public void renderCoords(int x, int y, int z, RenderScope scope) { - String f = "%d %d %d"; // Flat + + String f = "%d %d %d"; + switch (displayMethod.value) { - case 1: // Flat annotated + case 1: f = "X: %d Y: %d Z: %d"; break; - case 2: // Newline + + case 2: f = "%d\n%d\n%d"; break; - case 3: // Newline annotated + + case 3: f = "X: %d\nY: %d\nZ: %d"; break; } + String text = String.format(f, x, y, z); - scope.drawText(text, - 0, 0, dimensions.font.value, dimensions.fgColor.value); + + scope.drawText( + text, + 0, + 0, + dimensions.font.value, + dimensions.fgColor.value); + dimensions.width = Fonts.getWidth(text, dimensions.font.value); dimensions.height = 18 * text.split("\n").length; } @@ -72,4 +95,4 @@ public class Coordinates extends Module implements HudMod { public void onEnabled(boolean e) { enabled.value = e; } -} +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Crosshair.java b/common/src/main/java/org/saturnclient/modules/mods/Crosshair.java similarity index 70% rename from versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Crosshair.java rename to common/src/main/java/org/saturnclient/modules/mods/Crosshair.java index 3f5df8c..ad76b5e 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/Crosshair.java +++ b/common/src/main/java/org/saturnclient/modules/mods/Crosshair.java @@ -2,34 +2,44 @@ package org.saturnclient.modules.mods; import org.saturnclient.modules.Module; import org.saturnclient.modules.ModuleDetails; -import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.modules.interfaces.CrosshairInterface; import org.saturnclient.config.manager.Property; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.resources.Textures; public class Crosshair extends Module { + public static Property enabled = Property.bool(false); - public Crosshair() { + private final CrosshairInterface minecraft; + + public Crosshair(CrosshairInterface minecraft) { super( new ModuleDetails("Crosshair", "crosshair") .description("Changes the crosshair if you're aiming at a entity") .tags("Visuals", "Utility") .version("v0.1.0"), enabled.named("Enabled")); + + this.minecraft = minecraft; } @Override public void render(RenderScope scope) { - if (enabled.value - && SaturnClient.client.targetedEntity != null - && SaturnClient.client.targetedEntity.isAlive()) { + + if (enabled.value && minecraft.isTargetingLivingEntity()) { + int scaledWidth = 15; int scaledHeight = 15; - scope.drawTexture(Textures.CROSSHAIR_RANGE, + scope.drawTexture( + Textures.CROSSHAIR_RANGE, (scope.getScaledWindowWidth() - scaledWidth) / 2, - (scope.getScaledWindowHeight() - scaledHeight) / 2, 0.0F, 0.0F, scaledWidth, scaledHeight); + (scope.getScaledWindowHeight() - scaledHeight) / 2, + 0.0F, + 0.0F, + scaledWidth, + scaledHeight); } } @@ -42,4 +52,4 @@ public class Crosshair extends Module { public void onEnabled(boolean e) { enabled.value = e; } -} +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/DayCounter.java b/common/src/main/java/org/saturnclient/modules/mods/DayCounter.java similarity index 78% rename from versions/1.21.4/src/main/java/org/saturnclient/modules/mods/DayCounter.java rename to common/src/main/java/org/saturnclient/modules/mods/DayCounter.java index bcce9a2..cdede7a 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mods/DayCounter.java +++ b/common/src/main/java/org/saturnclient/modules/mods/DayCounter.java @@ -4,23 +4,29 @@ 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.DayCounterInterface; import org.saturnclient.config.manager.Property; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.resources.Fonts; public class DayCounter extends Module implements HudMod { + private static Property enabled = Property.bool(false); private static ModDimensions dimensions = new ModDimensions(40, 18); + + private final DayCounterInterface minecraft; + long day = 0; - public DayCounter() { + public DayCounter(DayCounterInterface minecraft) { super(new ModuleDetails("DayCounter", "day") .description("Displays the number of days that have passed") .version("v0.1.0") .tags("Utility"), enabled.named("Enabled"), dimensions.prop()); + + this.minecraft = minecraft; } @Override @@ -30,14 +36,20 @@ public class DayCounter extends Module implements HudMod { @Override public void renderHud(RenderScope scope) { - day = (SaturnClient.client.world.getTimeOfDay() / 24000L); + day = minecraft.getDay(); renderDay(day, scope); } public void renderDay(long day, RenderScope scope) { String text = "Day: " + day; - scope.drawText(text, - 0, 0, dimensions.font.value, dimensions.fgColor.value); + + scope.drawText( + text, + 0, + 0, + dimensions.font.value, + dimensions.fgColor.value); + dimensions.width = Fonts.getWidth(text, dimensions.font.value); dimensions.height = 18 * text.split("\n").length; } @@ -56,4 +68,4 @@ public class DayCounter extends Module implements HudMod { public void onEnabled(boolean e) { enabled.value = e; } -} +} \ 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 5ad050a..acbcc29 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 @@ -8,7 +8,10 @@ import org.saturnclient.impl.modules.*; public class FabricModuleProvider implements ModuleProvider { public static Module[] MODS = { new ArmorDisplay(new ArmorDisplayFabric()), - new AutoSprint(new AutoSprintFabric()) + new AutoSprint(new AutoSprintFabric()), + new Coordinates(new CoordinatesFabric()), + new Crosshair(new CrosshairFabric()), + new Clock(), }; @Override diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CoordinatesFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CoordinatesFabric.java new file mode 100644 index 0000000..e80e3f6 --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CoordinatesFabric.java @@ -0,0 +1,29 @@ +package org.saturnclient.impl.modules; + +import org.saturnclient.modules.interfaces.CoordinatesInterface; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.math.Vec3d; + +public class CoordinatesFabric implements CoordinatesInterface { + + private final MinecraftClient mc = MinecraftClient.getInstance(); + + @Override + public int getPlayerX() { + Vec3d pos = mc.player.getPos(); + return (int) pos.x; + } + + @Override + public int getPlayerY() { + Vec3d pos = mc.player.getPos(); + return (int) pos.y; + } + + @Override + public int getPlayerZ() { + Vec3d pos = mc.player.getPos(); + return (int) pos.z; + } +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CrosshairFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CrosshairFabric.java new file mode 100644 index 0000000..c900365 --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/CrosshairFabric.java @@ -0,0 +1,19 @@ +package org.saturnclient.impl.modules; + +import org.saturnclient.modules.interfaces.CrosshairInterface; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.Entity; + +public class CrosshairFabric implements CrosshairInterface { + + private final MinecraftClient mc = MinecraftClient.getInstance(); + + @Override + public boolean isTargetingLivingEntity() { + + Entity entity = mc.targetedEntity; + + return entity != null && entity.isAlive(); + } +} \ No newline at end of file diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/DayCounterFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/DayCounterFabric.java new file mode 100644 index 0000000..d0eb046 --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/modules/DayCounterFabric.java @@ -0,0 +1,19 @@ +package org.saturnclient.impl.modules; + +import org.saturnclient.modules.interfaces.DayCounterInterface; + +import net.minecraft.client.MinecraftClient; + +public class DayCounterFabric implements DayCounterInterface { + + private final MinecraftClient mc = MinecraftClient.getInstance(); + + @Override + public long getDay() { + if (mc.world == null) { + return 0; + } + + return mc.world.getTimeOfDay() / 24000L; + } +} \ No newline at end of file