From 683a9f41e8b73ef370f125bae452ce704f88a48d Mon Sep 17 00:00:00 2001 From: Leo dev Date: Tue, 22 Apr 2025 17:06:41 -0500 Subject: [PATCH] refactor of the module system. Bug: all mods are enabled bc the Module has static enabled --- .../org/saturnclient/modules/ModManager.java | 15 ++++--- .../java/org/saturnclient/modules/Module.java | 45 +++++++++++++++++++ .../org/saturnclient/modules/SaturnMod.java | 17 ------- .../org/saturnclient/modules/TickModule.java | 5 +++ .../modules/mods/ArmorDisplay.java | 37 +++------------ .../saturnclient/modules/mods/AutoSprint.java | 24 ++++++++++ .../modules/mods/Coordinates.java | 36 ++------------- .../saturnclient/modules/mods/Crosshair.java | 36 ++------------- .../saturnclient/modules/mods/FpsDisplay.java | 40 +++-------------- .../saturnclient/modules/mods/FreeLook.java | 33 ++------------ .../saturnclient/modules/mods/Particles.java | 36 ++------------- .../saturnclient/config/ConfigManager.java | 1 - .../saturnclient/event/KeyInputHandler.java | 3 +- .../saturnclient/menus/HudEditor.java | 4 +- .../saturnclient/menus/ModMenu.java | 4 +- .../ui/components/SaturnModComp.java | 6 +-- 16 files changed, 120 insertions(+), 222 deletions(-) create mode 100644 src/main/java/org/saturnclient/modules/Module.java delete mode 100644 src/main/java/org/saturnclient/modules/SaturnMod.java create mode 100644 src/main/java/org/saturnclient/modules/TickModule.java create mode 100644 src/main/java/org/saturnclient/modules/mods/AutoSprint.java diff --git a/src/main/java/org/saturnclient/modules/ModManager.java b/src/main/java/org/saturnclient/modules/ModManager.java index e482479..2690b76 100644 --- a/src/main/java/org/saturnclient/modules/ModManager.java +++ b/src/main/java/org/saturnclient/modules/ModManager.java @@ -5,8 +5,6 @@ import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.util.math.MatrixStack; -import java.util.Objects; - import org.saturnclient.modules.mods.*; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.SaturnClientConfig; @@ -14,19 +12,22 @@ import org.saturnclient.saturnclient.menus.HudEditor; public class ModManager { - public static SaturnMod[] MODS = { + public static Module[] MODS = { new Coordinates(), new ArmorDisplay(), new FpsDisplay(), new Particles(), new Crosshair(), - new FreeLook() + new FreeLook(), + new AutoSprint() }; public static void init() { ClientTickEvents.START_CLIENT_TICK.register(client -> { - if (SaturnClient.client.options.forwardKey.isPressed() && !SaturnClient.client.options.backKey.isPressed() && !SaturnClient.client.player.horizontalCollision) { - Objects.requireNonNull(SaturnClient.client.player).setSprinting(true); + for (Module m : MODS) { + if (m instanceof TickModule && m.isEnabled()) { + ((TickModule) m).tick(); + } } }); @@ -37,7 +38,7 @@ public class ModManager { !(SaturnClient.client.currentScreen instanceof HudEditor)) { SaturnClientConfig.textRenderer = textRenderer; - for (SaturnMod m : MODS) { + for (Module m : MODS) { if (m instanceof HudMod && m.isEnabled()) { ModDimensions dim = ((HudMod) m).getDimensions(); diff --git a/src/main/java/org/saturnclient/modules/Module.java b/src/main/java/org/saturnclient/modules/Module.java new file mode 100644 index 0000000..25e80ba --- /dev/null +++ b/src/main/java/org/saturnclient/modules/Module.java @@ -0,0 +1,45 @@ +package org.saturnclient.modules; + +import org.saturnclient.saturnclient.config.ConfigManager; +import org.saturnclient.saturnclient.config.Property; +import org.saturnclient.ui.Textures; + +import net.minecraft.util.Identifier; + +public abstract class Module { + public static Property enabled; + private final String name; + private final String namespace; + private final ConfigManager configManager; + + public Module(ConfigManager config, String name, String namespace) { + this.name = name; + this.namespace = namespace; + + enabled = config.property( + "Enabled", + new Property<>(false)); + + configManager = config; + } + + public boolean isEnabled() { + return enabled.value; + } + + public void setEnabled(boolean e) { + enabled.value = e; + } + + public final String getName() { + return name; + } + + public Identifier getIconTexture() { + return Textures.getModIcon(namespace); + } + + public ConfigManager getConfig() { + return configManager; + } +} diff --git a/src/main/java/org/saturnclient/modules/SaturnMod.java b/src/main/java/org/saturnclient/modules/SaturnMod.java deleted file mode 100644 index 9f950f9..0000000 --- a/src/main/java/org/saturnclient/modules/SaturnMod.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.saturnclient.modules; - -import org.saturnclient.saturnclient.config.ConfigManager; - -import net.minecraft.util.Identifier; - -public interface SaturnMod { - public boolean isEnabled(); - - public void setEnabled(boolean e); - - public String getName(); - - public Identifier getIconTexture(); - - public ConfigManager getConfig(); -} diff --git a/src/main/java/org/saturnclient/modules/TickModule.java b/src/main/java/org/saturnclient/modules/TickModule.java new file mode 100644 index 0000000..39710dc --- /dev/null +++ b/src/main/java/org/saturnclient/modules/TickModule.java @@ -0,0 +1,5 @@ +package org.saturnclient.modules; + +public interface TickModule { + public void tick(); +} diff --git a/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java b/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java index cd751dc..e3cf623 100644 --- a/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java +++ b/src/main/java/org/saturnclient/modules/mods/ArmorDisplay.java @@ -7,23 +7,17 @@ import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.util.Identifier; import org.saturnclient.modules.HudMod; import org.saturnclient.modules.ModDimensions; -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.SaturnClientConfig; -import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; -import org.saturnclient.ui.Textures; -public class ArmorDisplay implements SaturnMod, HudMod { +public class ArmorDisplay extends Module implements HudMod { private static ConfigManager config = new ConfigManager("Armor Display"); - public static Property enabled = config.property( - "Enabled", - new Property<>(false)); private static ModDimensions dimensions = new ModDimensions( config, 0, @@ -35,6 +29,11 @@ public class ArmorDisplay implements SaturnMod, HudMod { "Foreground color", new Property<>(SaturnClientConfig.WHITE, Property.PropertyType.HEX)); + + public ArmorDisplay() { + super(config, "Armor Display", "armor"); + } + private boolean renderItem(DrawContext context, ItemStack item, int y) { if (item.isEmpty()) { return false; @@ -104,29 +103,7 @@ public class ArmorDisplay implements SaturnMod, HudMod { } } - public String getName() { - return "Armor display"; - } - - @Override - public Identifier getIconTexture() { - return Textures.getModIcon("armor"); - } - public ModDimensions getDimensions() { return dimensions; } - - public boolean isEnabled() { - return enabled.value; - } - - public void setEnabled(boolean e) { - enabled.value = e; - } - - @Override - public ConfigManager getConfig() { - return config; - } } 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..21b36ad --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/AutoSprint.java @@ -0,0 +1,24 @@ +package org.saturnclient.modules.mods; + +import java.util.Objects; + +import org.saturnclient.modules.Module; +import org.saturnclient.modules.TickModule; +import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.config.ConfigManager; + +public class AutoSprint extends Module implements TickModule { + + private static ConfigManager config = new ConfigManager("Armor Display"); + + public AutoSprint() { + super(config, "Auto Sprint", "auto_sprint"); + } + + @Override + public void tick() { + if (SaturnClient.client.options.forwardKey.isPressed() && !SaturnClient.client.options.backKey.isPressed() && !SaturnClient.client.player.horizontalCollision) { + Objects.requireNonNull(SaturnClient.client.player).setSprinting(true); + } + } +} diff --git a/src/main/java/org/saturnclient/modules/mods/Coordinates.java b/src/main/java/org/saturnclient/modules/mods/Coordinates.java index 01898fe..c69e7e4 100644 --- a/src/main/java/org/saturnclient/modules/mods/Coordinates.java +++ b/src/main/java/org/saturnclient/modules/mods/Coordinates.java @@ -2,23 +2,18 @@ package org.saturnclient.modules.mods; import net.minecraft.client.gui.DrawContext; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.Identifier; import org.saturnclient.modules.HudMod; import org.saturnclient.modules.ModDimensions; -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; -import org.saturnclient.ui.Textures; -public class Coordinates implements SaturnMod, HudMod { +public class Coordinates extends Module implements HudMod { private static ConfigManager config = new ConfigManager("Coordinates"); - public static Property enabled = config.property( - "Enabled", - new Property<>(false)); private static ModDimensions dimensions = new ModDimensions(config); public static Property fgColor = config.property( @@ -26,10 +21,7 @@ public class Coordinates implements SaturnMod, HudMod { new Property<>(SaturnClientConfig.WHITE, Property.PropertyType.HEX)); public Coordinates() { - // Ensure fgColor has a value - if (fgColor.value == null) { - fgColor.value = SaturnClientConfig.WHITE; - } + super(config, "Coordinates", "coords"); } public void renderDummy(DrawContext context) { @@ -65,29 +57,7 @@ public class Coordinates implements SaturnMod, HudMod { false); } - public String getName() { - return "Coords"; - } - - @Override - public Identifier getIconTexture() { - return Textures.getModIcon("coords"); - } - public ModDimensions getDimensions() { return dimensions; } - - public boolean isEnabled() { - return enabled.value; - } - - public void setEnabled(boolean e) { - enabled.value = e; - } - - @Override - public ConfigManager getConfig() { - return config; - } } diff --git a/src/main/java/org/saturnclient/modules/mods/Crosshair.java b/src/main/java/org/saturnclient/modules/mods/Crosshair.java index dba7296..7f17d70 100644 --- a/src/main/java/org/saturnclient/modules/mods/Crosshair.java +++ b/src/main/java/org/saturnclient/modules/mods/Crosshair.java @@ -1,45 +1,17 @@ package org.saturnclient.modules.mods; -import net.minecraft.util.Identifier; - -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; -import org.saturnclient.ui.Textures; -public class Crosshair implements SaturnMod { +public class Crosshair extends Module { public static ConfigManager config = new ConfigManager("Crosshair"); - public static Property enabled = config.property( - "Enabled", - new Property<>(false)); - public static Property range_indicator = config.property( "Hit range indicator", new Property<>(false)); - @Override - public boolean isEnabled() { - return enabled.value; - } - - @Override - public void setEnabled(boolean e) { - enabled.value = e; - } - - @Override - public String getName() { - return "Crosshair"; - } - - @Override - public Identifier getIconTexture() { - return Textures.getModIcon("crosshair"); - } - - @Override - public ConfigManager getConfig() { - return config; + public Crosshair() { + super(config, "Crosshair", "crosshair"); } } diff --git a/src/main/java/org/saturnclient/modules/mods/FpsDisplay.java b/src/main/java/org/saturnclient/modules/mods/FpsDisplay.java index 868d4f8..4fbec74 100644 --- a/src/main/java/org/saturnclient/modules/mods/FpsDisplay.java +++ b/src/main/java/org/saturnclient/modules/mods/FpsDisplay.java @@ -2,24 +2,18 @@ package org.saturnclient.modules.mods; import org.saturnclient.saturnclient.SaturnClient; import net.minecraft.client.gui.DrawContext; -import net.minecraft.util.Identifier; import org.saturnclient.modules.HudMod; import org.saturnclient.modules.ModDimensions; -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; -import org.saturnclient.ui.Textures; -public class FpsDisplay implements SaturnMod, HudMod { +public class FpsDisplay extends Module implements HudMod { public static ConfigManager config = new ConfigManager("Fps Display"); - public static Property enabled = config.property( - "Enabled", - new Property<>(false)); - public static ModDimensions dimensions = new ModDimensions( config, 0, @@ -31,6 +25,11 @@ public class FpsDisplay implements SaturnMod, HudMod { "Foreground color", new Property<>(SaturnClientConfig.WHITE, Property.PropertyType.HEX)); + + public FpsDisplay() { + super(config, "Fps Display", "fps"); + } + @Override public ModDimensions getDimensions() { return dimensions; @@ -61,29 +60,4 @@ public class FpsDisplay implements SaturnMod, HudMod { fgColor.value, false); } - - @Override - public boolean isEnabled() { - return enabled.value; - } - - @Override - public void setEnabled(boolean e) { - enabled.value = e; - } - - @Override - public String getName() { - return "Fps Display"; - } - - @Override - public Identifier getIconTexture() { - return Textures.getModIcon("fps"); - } - - @Override - public ConfigManager getConfig() { - return config; - } } diff --git a/src/main/java/org/saturnclient/modules/mods/FreeLook.java b/src/main/java/org/saturnclient/modules/mods/FreeLook.java index 21e4cc2..8476723 100644 --- a/src/main/java/org/saturnclient/modules/mods/FreeLook.java +++ b/src/main/java/org/saturnclient/modules/mods/FreeLook.java @@ -1,46 +1,21 @@ package org.saturnclient.modules.mods; -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; -import org.saturnclient.ui.Textures; - import net.minecraft.client.option.Perspective; -import net.minecraft.util.Identifier; -public class FreeLook implements SaturnMod { +public class FreeLook extends Module { public static boolean isFreeLooking = false; public static Perspective lastPerspective = null; private static ConfigManager config = new ConfigManager("Free Look"); - public static Property enabled = config.property( - "Enabled", - new Property<>(false)); public static Property toggle = config.property( "Toggle Free Look", new Property<>(false)); - public boolean isEnabled() { - return enabled.value; - } - - public void setEnabled(boolean e) { - enabled.value = e; - } - - @Override - public ConfigManager getConfig() { - return config; - } - - @Override - public Identifier getIconTexture() { - return Textures.getModIcon("freelook"); - } - - @Override - public String getName() { - return "Free Look"; + public FreeLook() { + super(config, "Free Look", "freelook"); } } diff --git a/src/main/java/org/saturnclient/modules/mods/Particles.java b/src/main/java/org/saturnclient/modules/mods/Particles.java index 5a8c4d2..75128eb 100644 --- a/src/main/java/org/saturnclient/modules/mods/Particles.java +++ b/src/main/java/org/saturnclient/modules/mods/Particles.java @@ -1,20 +1,13 @@ package org.saturnclient.modules.mods; -import net.minecraft.util.Identifier; - -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; -import org.saturnclient.ui.Textures; -public class Particles implements SaturnMod { +public class Particles extends Module { public static ConfigManager config = new ConfigManager("Particles"); - public static Property enabled = config.property( - "Enabled", - new Property<>(false)); - public static ConfigManager totem = new ConfigManager(config, "Totem particles"); public static Property totem_enabled = totem.property( @@ -29,28 +22,7 @@ public class Particles implements SaturnMod { "Totem particle color 2", new Property<>(SaturnClientConfig.color.value, Property.PropertyType.HEX)); - @Override - public boolean isEnabled() { - return enabled.value; - } - - @Override - public void setEnabled(boolean e) { - enabled.value = e; - } - - @Override - public String getName() { - return "Particles"; - } - - @Override - public Identifier getIconTexture() { - return Textures.getModIcon("particles"); - } - - @Override - public ConfigManager getConfig() { - return config; + public Particles() { + super(config, "Particles", "particles"); } } diff --git a/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java b/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java index c76fdaa..f8e1404 100644 --- a/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java +++ b/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java @@ -13,7 +13,6 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import org.saturnclient.saturnclient.SaturnClient; -import org.saturnclient.saturnclient.SaturnClient; public class ConfigManager { diff --git a/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java b/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java index b3c19d2..6c54bf2 100644 --- a/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java +++ b/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java @@ -7,6 +7,7 @@ import net.minecraft.client.option.Perspective; import net.minecraft.client.util.InputUtil; import org.saturnclient.modules.mods.FreeLook; +import org.saturnclient.saturnclient.menus.ModMenu; import org.saturnclient.saturnclient.menus.SaturnMenu; import org.lwjgl.glfw.GLFW; @@ -45,7 +46,7 @@ public class KeyInputHandler { // Register the event handler for the main menu key ClientTickEvents.END_CLIENT_TICK.register(client -> { if (mainMenuKeyBinding.wasPressed()) { - client.setScreen(new SaturnMenu()); + client.setScreen(new ModMenu()); } else if (freelookKeyBinding.wasPressed() && FreeLook.enabled.value && FreeLook.toggle.value) { FreeLook.isFreeLooking = !FreeLook.isFreeLooking; if (FreeLook.isFreeLooking) { diff --git a/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java b/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java index 0c930dd..7fc3de2 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java @@ -8,7 +8,7 @@ import net.minecraft.text.Text; import org.saturnclient.modules.HudMod; import org.saturnclient.modules.ModDimensions; import org.saturnclient.modules.ModManager; -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.ui.SaturnUi; @@ -24,7 +24,7 @@ public class HudEditor extends Screen { public HudEditor() { super(Text.literal("HUD Editor")); - for (SaturnMod m : ModManager.MODS) { + for (Module m : ModManager.MODS) { if (m.isEnabled() && m instanceof HudMod) { hudMods.add((HudMod) m); } diff --git a/src/main/java/org/saturnclient/saturnclient/menus/ModMenu.java b/src/main/java/org/saturnclient/saturnclient/menus/ModMenu.java index 5ef44fe..17564da 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/ModMenu.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/ModMenu.java @@ -3,7 +3,7 @@ package org.saturnclient.saturnclient.menus; import net.minecraft.text.Text; import org.saturnclient.modules.ModManager; -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; @@ -118,7 +118,7 @@ public class ModMenu extends SaturnUi { String[] searchTokens = search.value.toLowerCase().split("\\ "); - outer: for (SaturnMod mod : ModManager.MODS) { + outer: for (Module mod : ModManager.MODS) { String modName = mod.getName().toLowerCase(); for (String searchToken : searchTokens) { if (!modName.contains(searchToken)) { diff --git a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java index 4706a34..87494ab 100644 --- a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java +++ b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java @@ -2,7 +2,7 @@ package org.saturnclient.ui.components; import net.minecraft.client.gui.DrawContext; -import org.saturnclient.modules.SaturnMod; +import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.SaturnClientConfig; import org.saturnclient.saturnclient.menus.ConfigEditor; @@ -12,9 +12,9 @@ import org.saturnclient.ui.Textures; public class SaturnModComp extends SaturnWidget { - SaturnMod mod; + Module mod; - public SaturnModComp(SaturnMod mod) { + public SaturnModComp(Module mod) { this.mod = mod; }