diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2018-12-22 13:17:31 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2018-12-22 13:17:31 +0800 |
| commit | d1e292ca25b7987bc4ddf334205238d75f7f29b7 (patch) | |
| tree | 3c2911284faccd10f97e3aa307719ec12efd4b53 /src/main/java/me/shedaniel/library/KeyBindManager.java | |
| parent | 7bcd4d2e868210a842ad7e4e4fc34240de40a121 (diff) | |
| download | RoughlyEnoughItems-d1e292ca25b7987bc4ddf334205238d75f7f29b7.tar.gz RoughlyEnoughItems-d1e292ca25b7987bc4ddf334205238d75f7f29b7.tar.bz2 RoughlyEnoughItems-d1e292ca25b7987bc4ddf334205238d75f7f29b7.zip | |
from aei but like jei now
Diffstat (limited to 'src/main/java/me/shedaniel/library/KeyBindManager.java')
| -rwxr-xr-x | src/main/java/me/shedaniel/library/KeyBindManager.java | 58 |
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; + } +} |
