From 14c68eb5ba16774f581d95a39e64a7b303954ffc Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Sat, 26 Sep 2026 17:05:36 +1200 Subject: migration to 26.2 - run migrateMappings with old loom then bring it back to new --- .../arslaansmagichax/modules/Module.java | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java (limited to 'src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java') diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java b/src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java new file mode 100644 index 0000000..37a957b --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java @@ -0,0 +1,101 @@ +package com.arslaancodes.arslaansmagichax.modules; + +import com.arslaancodes.arslaansmagichax.modules.settings.BooleanSetting; +import com.arslaancodes.arslaansmagichax.modules.settings.ModeSetting; +import com.arslaancodes.arslaansmagichax.modules.settings.NumberSetting; +import com.arslaancodes.arslaansmagichax.modules.settings.Setting; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import net.minecraft.client.Minecraft; + +public abstract class Module { + private final String name; + private final String description; + private final Category category; + public static Minecraft mc; + private int glfwKeybinding; + private final List settings = new ArrayList<>(); + + private boolean enabled = false; + + public Module(String name, String description, int glfwKeybinding, Category category) { + this.name = name; + this.description = description; + this.mc = Minecraft.getInstance(); + this.glfwKeybinding = glfwKeybinding; + this.category = category; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public int getGlfwKeybinding() { + return glfwKeybinding; + } + + public Category getCategory() { + return category; + } + + public boolean isEnabled() { + return enabled; + } + + public void toggle() { + enabled = !enabled; + if (enabled) onEnable(); + else onDisable(); + } + + public void setEnabled(boolean state) { + if (enabled != state) toggle(); + } + + public void setGlfwKeybinding(int glfwKeybinding) { + this.glfwKeybinding = glfwKeybinding; + } + + protected void onEnable() {} + protected void onDisable() {} + + public void tick() {} + + protected T addSetting(T setting) { + settings.add(setting); + return setting; + } + + public List getSettings() { + return settings; + } + + public Optional getSetting(String name) { + return settings.stream() + .filter(s -> s.getName().equalsIgnoreCase(name)) + .findFirst(); + } + + public Optional getBoolean(String name) { + return getSetting(name) + .filter(s -> s instanceof BooleanSetting) + .map(s -> (BooleanSetting) s); + } + + public Optional getNumber(String name) { + return getSetting(name) + .filter(s -> s instanceof NumberSetting) + .map(s -> (NumberSetting) s); + } + + public Optional getMode(String name) { + return getSetting(name) + .filter(s -> s instanceof ModeSetting) + .map(s -> (ModeSetting) s); + } +} \ No newline at end of file -- cgit v1.2.3