summaryrefslogtreecommitdiff
path: root/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java')
-rw-r--r--src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java50
1 files changed, 48 insertions, 2 deletions
diff --git a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java
index 9334a53..f42b473 100644
--- a/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java
+++ b/src/main/java/net/justlearning/arslaan3102/arslaansmagichax/modules/Module.java
@@ -1,13 +1,22 @@
package net.justlearning.arslaan3102.arslaansmagichax.modules;
+import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.BooleanSetting;
+import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.ModeSetting;
+import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.NumberSetting;
+import net.justlearning.arslaan3102.arslaansmagichax.modules.settings.Setting;
import net.minecraft.client.MinecraftClient;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
public abstract class Module {
private final String name;
private final String description;
private final Category category;
- public MinecraftClient mc;
- private final int glfwKeybinding;
+ public static MinecraftClient mc;
+ private int glfwKeybinding;
+ private final List<Setting> settings = new ArrayList<>();
private boolean enabled = false;
@@ -49,8 +58,45 @@ public abstract class Module {
if (enabled != state) toggle();
}
+ public void setGlfwKeybinding(int glfwKeybinding) {
+ this.glfwKeybinding = glfwKeybinding;
+ }
+
protected void onEnable() {}
protected void onDisable() {}
public void tick() {}
+
+ protected <T extends Setting> T addSetting(T setting) {
+ settings.add(setting);
+ return setting;
+ }
+
+ public List<Setting> getSettings() {
+ return settings;
+ }
+
+ public Optional<Setting> getSetting(String name) {
+ return settings.stream()
+ .filter(s -> s.getName().equalsIgnoreCase(name))
+ .findFirst();
+ }
+
+ public Optional<BooleanSetting> getBoolean(String name) {
+ return getSetting(name)
+ .filter(s -> s instanceof BooleanSetting)
+ .map(s -> (BooleanSetting) s);
+ }
+
+ public Optional<NumberSetting> getNumber(String name) {
+ return getSetting(name)
+ .filter(s -> s instanceof NumberSetting)
+ .map(s -> (NumberSetting) s);
+ }
+
+ public Optional<ModeSetting> getMode(String name) {
+ return getSetting(name)
+ .filter(s -> s instanceof ModeSetting)
+ .map(s -> (ModeSetting) s);
+ }
} \ No newline at end of file