package codechicken.nei.config; import codechicken.nei.jei.JEIIntegrationManager; import net.minecraft.client.settings.KeyBinding; import net.minecraftforge.client.settings.IKeyConflictContext; import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyModifier; import net.minecraftforge.fml.client.registry.ClientRegistry; import org.lwjgl.input.Keyboard; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class KeyBindings { private static final String categoryNameGui = "NEI (Not Enough Items) Gui"; private static final String categoryNameWorld = "NEI (Not Enough Items) World"; private static Map<String, KeyBinding> keyBindings = new HashMap<>(); private static List<KeyBinding> keyBindingsToRegister = new ArrayList<>(); static { setDefaultKeyBinding("nei.options.keys.gui.recipe", JEIIntegrationManager.getShowRecipes()); setDefaultKeyBinding("nei.options.keys.gui.usage", JEIIntegrationManager.getShowUses()); setDefaultKeyBinding("nei.options.keys.gui.back", JEIIntegrationManager.getRecipeBack()); setDefaultKeyBinding("nei.options.keys.gui.enchant", KeyConflictContext.GUI, KeyModifier.NONE, Keyboard.KEY_X, categoryNameGui); setDefaultKeyBinding("nei.options.keys.gui.potion", KeyConflictContext.GUI, KeyModifier.NONE, Keyboard.KEY_P, categoryNameGui); setDefaultKeyBinding("nei.options.keys.gui.prev", KeyConflictContext.GUI, KeyModifier.NONE, Keyboard.KEY_PRIOR, categoryNameGui); setDefaultKeyBinding("nei.options.keys.gui.next", KeyConflictContext.GUI, KeyModifier.NONE, Keyboard.KEY_NEXT, categoryNameGui); setDefaultKeyBinding("nei.options.keys.gui.hide", JEIIntegrationManager.getToggleOverlay()); setDefaultKeyBinding("nei.options.keys.gui.search", JEIIntegrationManager.getFocusSearch()); setDefaultKeyBinding("nei.options.keys.world.chunkoverlay", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_F9, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.moboverlay", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_F7, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.dawn", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_NONE, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.noon", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_NONE, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.dusk", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_NONE, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.midnight", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_NONE, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.rain", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_NONE, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.heal", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_NONE, categoryNameWorld); setDefaultKeyBinding("nei.options.keys.world.creative", KeyConflictContext.IN_GAME, KeyModifier.NONE, Keyboard.KEY_NONE, categoryNameWorld); } public static KeyBinding get(String string) { KeyBinding keyBinding = keyBindings.get(string); if (keyBinding == null) { throw new IllegalArgumentException("There is no key binding for " + string); } return keyBinding; } /** * Add a new keybinding to get registered */ public static void setDefaultKeyBinding(String description, IKeyConflictContext keyConflictContext, KeyModifier keyModifier, int keyCode, String category) { KeyBinding keyBinding = new KeyBinding(description, keyConflictContext, keyModifier, keyCode, category); keyBindings.put(description, keyBinding); keyBindingsToRegister.add(keyBinding); } /** * Add a keybinding that is already being registered somewhere else */ public static void setDefaultKeyBinding(String description, KeyBinding keyBinding) { keyBindings.put(description, keyBinding); } public static void register() { for (KeyBinding keyBinding : keyBindingsToRegister) { ClientRegistry.registerKeyBinding(keyBinding); } } }