summaryrefslogtreecommitdiff
path: root/src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java')
-rw-r--r--src/main/java/com/arslaancodes/arslaansmagichax/modules/Module.java101
1 files changed, 101 insertions, 0 deletions
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<Setting> 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 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