From 991d9775f2379030f56a87913595baf9b666acd0 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 6 Mar 2026 23:36:58 +0100 Subject: [PATCH] auto Sprint and Clock --- .../interfaces/AutoSprintInterface.java | 20 +++++ .../saturnclient/modules/mods/AutoSprint.java | 50 +++++++++++ .../org/saturnclient/modules/mods/Clock.java | 82 +++++++++++++++++++ 3 files changed, 152 insertions(+) create mode 100644 src/main/java/org/saturnclient/modules/interfaces/AutoSprintInterface.java create mode 100644 src/main/java/org/saturnclient/modules/mods/AutoSprint.java create mode 100644 src/main/java/org/saturnclient/modules/mods/Clock.java diff --git a/src/main/java/org/saturnclient/modules/interfaces/AutoSprintInterface.java b/src/main/java/org/saturnclient/modules/interfaces/AutoSprintInterface.java new file mode 100644 index 0000000..58448b9 --- /dev/null +++ b/src/main/java/org/saturnclient/modules/interfaces/AutoSprintInterface.java @@ -0,0 +1,20 @@ +package org.saturnclient.modules.interfaces; + +public interface AutoSprintInterface { + + boolean hasPlayer(); + + boolean hasNetwork(); + + boolean isForwardPressed(); + + boolean isBackPressed(); + + boolean isSneaking(); + + boolean hasHorizontalCollision(); + + boolean isUsingItem(); + + void setSprinting(boolean sprinting); +} \ No newline at end of file diff --git a/src/main/java/org/saturnclient/modules/mods/AutoSprint.java b/src/main/java/org/saturnclient/modules/mods/AutoSprint.java new file mode 100644 index 0000000..b256c55 --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/AutoSprint.java @@ -0,0 +1,50 @@ +package org.saturnclient.modules.mods; + +import org.saturnclient.modules.Module; +import org.saturnclient.modules.ModuleDetails; +import org.saturnclient.modules.interfaces.AutoSprintInterface; +import org.saturnclient.config.manager.Property; + +public class AutoSprint extends Module { + + private static Property enabled = Property.bool(false); + + private final AutoSprintInterface minecraft; + + public AutoSprint(AutoSprintInterface minecraft) { + super( + new ModuleDetails("Auto Sprint", "sprint") + .description("Makes the player always sprint") + .tags("Movement") + .version("v0.1.0"), + enabled.named("Enabled")); + + this.minecraft = minecraft; + } + + @Override + public void tick() { + if (!minecraft.hasPlayer() || !minecraft.hasNetwork()) { + return; + } + + if (minecraft.isForwardPressed() + && !minecraft.isBackPressed() + && !minecraft.isSneaking() + && !minecraft.hasHorizontalCollision() + && !minecraft.isUsingItem()) { + + minecraft.setSprinting(true); + } + } + + @Override + public boolean isEnabled() { + return enabled.value; + } + + @Override + public void onEnabled(boolean e) { + enabled.value = e; + } +} \ No newline at end of file diff --git a/src/main/java/org/saturnclient/modules/mods/Clock.java b/src/main/java/org/saturnclient/modules/mods/Clock.java new file mode 100644 index 0000000..7726401 --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/Clock.java @@ -0,0 +1,82 @@ +package org.saturnclient.modules.mods; + +import java.time.format.DateTimeFormatter; +import java.time.LocalTime; + +import org.saturnclient.modules.HudMod; +import org.saturnclient.modules.ModDimensions; +import org.saturnclient.modules.Module; +import org.saturnclient.modules.ModuleDetails; +import org.saturnclient.config.manager.Property; +import org.saturnclient.ui.RenderScope; +import org.saturnclient.ui.resources.Fonts; + +public class Clock extends Module implements HudMod { + private static Property enabled = Property.bool(false); + private static Property format = Property.select(0, "24 hour", "12 hour"); + private static Property seconds = Property.bool(false); + private static ModDimensions dimensions = new ModDimensions(60, Fonts.getHeight()); + + public Clock() { + super(new ModuleDetails("Clock", "clock") + .description("Displays the current real-world time") + .version("v0.1.0") + .tags("Utility"), + enabled.named("Enabled"), + format.named("Format"), + seconds.named("Show seconds"), + dimensions.prop()); + } + + @Override + public void renderDummy(RenderScope scope) { + renderClock(scope); + } + + @Override + public void renderHud(RenderScope scope) { + renderClock(scope); + } + + public void renderClock(RenderScope scope) { + String text = ""; + LocalTime currentTime = LocalTime.now(); + + switch (format.value) { + case 0: + if (seconds.value) { + text = currentTime.format(DateTimeFormatter.ofPattern("HH:mm:ss")); + } else { + text = currentTime.format(DateTimeFormatter.ofPattern("HH:mm")); + } + break; + case 1: + if (seconds.value) { + text = currentTime.format(DateTimeFormatter.ofPattern("hh:mm:ss a")); + } else { + text = currentTime.format(DateTimeFormatter.ofPattern("hh:mm a")); + } + break; + } + + 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; + } + + @Override + public boolean isEnabled() { + return enabled.value; + } + + @Override + public ModDimensions getDimensions() { + return dimensions; + } + + @Override + public void onEnabled(boolean e) { + enabled.value = e; + } +} \ No newline at end of file