From 15f6cc9eb567b6ef685bc6c1a6f3364270300914 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 22 Dec 2018 13:17:31 +0800 Subject: from aei but like jei now --- .../java/me/shedaniel/library/KeyBindManager.java | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 src/main/java/me/shedaniel/library/KeyBindManager.java (limited to 'src/main/java/me/shedaniel/library/KeyBindManager.java') 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 bindingsToAdd = new ArrayList<>(); + private static Map 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 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 binding = bindingFunctions.keySet().stream().filter(f -> f.getDefault().getKeyCode() == typedChar).findFirst(); + if (binding.isPresent()) { + bindingFunctions.get(binding.get()).Sink(); + return true; + } + return false; + } +} -- cgit