diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-05-11 17:54:19 +0200 |
---|---|---|
committer | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-05-11 17:54:19 +0200 |
commit | b239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f (patch) | |
tree | 8a1d31cb79da3a1626596f70e014b395b45b6178 /src/main/java/cc/polyfrost/oneconfig/config | |
parent | 333b4099972260d0e348ec20f8a00a430471aac8 (diff) | |
download | OneConfig-b239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f.tar.gz OneConfig-b239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f.tar.bz2 OneConfig-b239915ac1e4b2b51b42d2c2fe163dffcdd7ae4f.zip |
keybinds
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/config')
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; } } } |