aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/config
diff options
context:
space:
mode:
authorDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-05-11 17:54:19 +0200
committerDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-05-11 17:54:19 +0200
commitb239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f (patch)
tree8a1d31cb79da3a1626596f70e014b395b45b6178 /src/main/java/cc/polyfrost/oneconfig/config
parent333b4099972260d0e348ec20f8a00a430471aac8 (diff)
downloadOneConfig-b239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f.tar.gz
OneConfig-b239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f.tar.bz2
OneConfig-b239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f.zip
keybinds
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/config')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/core/OneKeyBind.java47
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/data/OptionType.java7
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/interfaces/Config.java3
3 files changed, 55 insertions, 2 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/core/OneKeyBind.java b/src/main/java/cc/polyfrost/oneconfig/config/core/OneKeyBind.java
new file mode 100644
index 0000000..f39e1c7
--- /dev/null
+++ b/src/main/java/cc/polyfrost/oneconfig/config/core/OneKeyBind.java
@@ -0,0 +1,47 @@
+package cc.polyfrost.oneconfig.config.core;
+
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.InputEvent;
+import org.lwjgl.input.Keyboard;
+
+import java.util.ArrayList;
+
+public class OneKeyBind {
+ private final ArrayList<Integer> keyBinds = new ArrayList<>();
+
+ public OneKeyBind(int... keys) {
+ for (int key : keys) {
+ keyBinds.add(key);
+ }
+ }
+
+ public boolean isActive() {
+ if (keyBinds.size() == 0) return false;
+ for (int keyBind : keyBinds) {
+ if (!Keyboard.isKeyDown(keyBind)) return false;
+ }
+ return true;
+ }
+
+ public String getDisplay() {
+ StringBuilder sb = new StringBuilder();
+ for (int keyBind : keyBinds) {
+ if (sb.length() != 0) sb.append(" + ");
+ sb.append(Keyboard.getKeyName(keyBind));
+ }
+ return sb.toString().trim();
+ }
+
+ public void addKey(int key) {
+ if (!keyBinds.contains(key)) keyBinds.add(key);
+ }
+
+ public void clearKeys() {
+ keyBinds.clear();
+ }
+
+ public int getSize() {
+ return keyBinds.size();
+ }
+}
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/data/OptionType.java b/src/main/java/cc/polyfrost/oneconfig/config/data/OptionType.java
index 6fe5733..36351f6 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/data/OptionType.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/data/OptionType.java
@@ -34,7 +34,6 @@ public enum OptionType {
* Type: int
*/
DROPDOWN,
- //MULTI_DROPDOWN,
/**
* Type: doesn't matter
*/
@@ -46,5 +45,9 @@ public enum OptionType {
/**
* Type: runnable
*/
- BUTTON
+ BUTTON,
+ /**
+ * Type: OneKeyBind
+ */
+ KEYBIND,
}
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/interfaces/Config.java b/src/main/java/cc/polyfrost/oneconfig/config/interfaces/Config.java
index 9eecc52..32853f8 100644
--- a/src/main/java/cc/polyfrost/oneconfig/config/interfaces/Config.java
+++ b/src/main/java/cc/polyfrost/oneconfig/config/interfaces/Config.java
@@ -148,6 +148,9 @@ public class Config {
case BUTTON:
options.add(new ConfigButton(field, option.name(), option.size(), option.buttonText()));
break;
+ case KEYBIND:
+ options.add(new ConfigKeyBind(field, option.name(), option.size()));
+ break;
}
}
}