diff --git a/src/main/java/org/saturnclient/modules/interfaces/CoordinatesInterface.java b/src/main/java/org/saturnclient/modules/interfaces/CoordinatesInterface.java new file mode 100644 index 0000000..c144f1a --- /dev/null +++ b/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/src/main/java/org/saturnclient/modules/interfaces/CrosshairInterface.java b/src/main/java/org/saturnclient/modules/interfaces/CrosshairInterface.java new file mode 100644 index 0000000..e658b64 --- /dev/null +++ b/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/src/main/java/org/saturnclient/modules/interfaces/DayCounterInterface.java b/src/main/java/org/saturnclient/modules/interfaces/DayCounterInterface.java new file mode 100644 index 0000000..5b2c37f --- /dev/null +++ b/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/src/main/java/org/saturnclient/modules/mods/Coordinates.java b/src/main/java/org/saturnclient/modules/mods/Coordinates.java new file mode 100644 index 0000000..bfd1b9f --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/Coordinates.java @@ -0,0 +1,98 @@ +package org.saturnclient.modules.mods; + +import org.saturnclient.modules.HudMod; +import org.saturnclient.modules.ModDimensions; +import org.saturnclient.modules.Module; +import org.saturnclient.modules.ModuleDetails; +import org.saturnclient.modules.interfaces.CoordinatesInterface; +import org.saturnclient.config.manager.Property; +import org.saturnclient.ui.RenderScope; +import org.saturnclient.ui.resources.Fonts; + +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", + "Newline annotated"); + + private static ModDimensions dimensions = new ModDimensions(40, 18); + + private final CoordinatesInterface minecraft; + + public Coordinates(CoordinatesInterface minecraft) { + super(new ModuleDetails("Coordinates", "coords") + .description("Displays your current coordinates") + .version("v0.1.0") + .tags("Utility"), + enabled.named("Enabled"), + displayMethod.named("Display Method"), + dimensions.prop()); + + this.minecraft = minecraft; + } + + @Override + public void renderDummy(RenderScope scope) { + renderCoords(532, 69, 253, scope); + } + + @Override + public void renderHud(RenderScope 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"; + + switch (displayMethod.value) { + case 1: + f = "X: %d Y: %d Z: %d"; + break; + + case 2: + f = "%d\n%d\n%d"; + break; + + 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); + + 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 diff --git a/src/main/java/org/saturnclient/modules/mods/Crosshair.java b/src/main/java/org/saturnclient/modules/mods/Crosshair.java new file mode 100644 index 0000000..ad76b5e --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/Crosshair.java @@ -0,0 +1,55 @@ +package org.saturnclient.modules.mods; + +import org.saturnclient.modules.Module; +import org.saturnclient.modules.ModuleDetails; +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); + + 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 && minecraft.isTargetingLivingEntity()) { + + int scaledWidth = 15; + int scaledHeight = 15; + + scope.drawTexture( + Textures.CROSSHAIR_RANGE, + (scope.getScaledWindowWidth() - scaledWidth) / 2, + (scope.getScaledWindowHeight() - scaledHeight) / 2, + 0.0F, + 0.0F, + scaledWidth, + scaledHeight); + } + } + + @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/DayCounter.java b/src/main/java/org/saturnclient/modules/mods/DayCounter.java new file mode 100644 index 0000000..cdede7a --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/DayCounter.java @@ -0,0 +1,71 @@ +package org.saturnclient.modules.mods; + +import org.saturnclient.modules.HudMod; +import org.saturnclient.modules.ModDimensions; +import org.saturnclient.modules.Module; +import org.saturnclient.modules.ModuleDetails; +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(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 + public void renderDummy(RenderScope scope) { + renderDay(271, scope); + } + + @Override + public void renderHud(RenderScope scope) { + 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); + + 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