aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/library/KeyBindManager.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2018-12-22 13:17:31 +0800
committerUnknown <shekwancheung0528@gmail.com>2018-12-22 13:17:31 +0800
commit15f6cc9eb567b6ef685bc6c1a6f3364270300914 (patch)
tree3c2911284faccd10f97e3aa307719ec12efd4b53 /src/main/java/me/shedaniel/library/KeyBindManager.java
parent449fc73beb20ceda44a12422129151a88306fac8 (diff)
downloadRoughlyEnoughItems-15f6cc9eb567b6ef685bc6c1a6f3364270300914.tar.gz
RoughlyEnoughItems-15f6cc9eb567b6ef685bc6c1a6f3364270300914.tar.bz2
RoughlyEnoughItems-15f6cc9eb567b6ef685bc6c1a6f3364270300914.zip
from aei but like jei now
Diffstat (limited to 'src/main/java/me/shedaniel/library/KeyBindManager.java')
-rwxr-xr-xsrc/main/java/me/shedaniel/library/KeyBindManager.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/library/KeyBindManager.java b/src/main/java/me/shedaniel/library/KeyBindManager.java
new file mode 100755
index 000000000..14f620f8e
--- /dev/null
+++ b/src/main/java/me/shedaniel/library/KeyBindManager.java
@@ -0,0 +1,58 @@
+package me.shedaniel.library;
+
+import me.shedaniel.listenerdefinitions.PreLoadOptions;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
+import org.apache.commons.lang3.ArrayUtils;
+import org.dimdev.rift.listener.client.KeybindHandler;
+
+import java.util.*;
+
+/**
+ * Created by James on 8/7/2018.
+ */
+public class KeyBindManager implements PreLoadOptions, KeybindHandler {
+
+ private static boolean optionsLoaded = false;
+ private static List<KeyBinding> bindingsToAdd = new ArrayList<>();
+ private static Map<KeyBinding, Sink> bindingFunctions = new HashMap<>();
+
+ public static KeyBinding createKeybinding(String bindingName, int key, String categoryName, Sink function) {
+ KeyBinding newBinding;
+ newBinding = new KeyBinding(bindingName, key, categoryName);
+ if (optionsLoaded) {
+ ArrayUtils.add(Minecraft.getInstance().gameSettings.keyBindings, newBinding);
+ } else {
+ bindingsToAdd.add(newBinding);
+ }
+ bindingFunctions.put(newBinding, function);
+ addCategoryIfMissing(categoryName);
+ return newBinding;
+ }
+
+ private static void addCategoryIfMissing(String categoryName) {
+ /*if (!KeyBinding.CATEGORY_ORDER.containsKey(categoryName)){
+ KeyBinding.CATEGORY_ORDER.put(categoryName,KeyBinding.CATEGORY_ORDER.size()+1);
+ }*/
+ }
+
+ @Override
+ public List<KeyBinding> loadOptions() {
+ optionsLoaded = true;
+ return bindingsToAdd;
+ }
+
+ @Override
+ public void processKeybinds() {
+ bindingFunctions.keySet().stream().filter(KeyBinding::isPressed).forEach(f -> bindingFunctions.get(f).Sink());
+ }
+
+ public static boolean processGuiKeybinds(int typedChar) {
+ Optional<KeyBinding> binding = bindingFunctions.keySet().stream().filter(f -> f.getDefault().getKeyCode() == typedChar).findFirst();
+ if (binding.isPresent()) {
+ bindingFunctions.get(binding.get()).Sink();
+ return true;
+ }
+ return false;
+ }
+}