refactor of the module system. Bug: all mods are enabled bc the Module has static enabled

This commit is contained in:
2025-04-22 17:06:41 -05:00
parent 052a56bcb0
commit 683a9f41e8
16 changed files with 120 additions and 222 deletions
@@ -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();
@@ -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<Boolean> 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;
}
}
@@ -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();
}
@@ -0,0 +1,5 @@
package org.saturnclient.modules;
public interface TickModule {
public void tick();
}
@@ -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<Boolean> 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;
}
}
@@ -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);
}
}
}
@@ -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<Boolean> enabled = config.property(
"Enabled",
new Property<>(false));
private static ModDimensions dimensions = new ModDimensions(config);
public static Property<Integer> 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;
}
}
@@ -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<Boolean> enabled = config.property(
"Enabled",
new Property<>(false));
public static Property<Boolean> 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");
}
}
@@ -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<Boolean> 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;
}
}
@@ -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<Boolean> enabled = config.property(
"Enabled",
new Property<>(false));
public static Property<Boolean> 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");
}
}
@@ -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<Boolean> enabled = config.property(
"Enabled",
new Property<>(false));
public static ConfigManager totem = new ConfigManager(config, "Totem particles");
public static Property<Boolean> 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");
}
}
@@ -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 {
@@ -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) {
@@ -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);
}
@@ -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)) {
@@ -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;
}