====== KeyMappings ====== With custom KeyMappings, clients can input from mouse and keyboards to do certain actions. **Note:** The following code should only be executed from client. ===== Registering KeyMappings ===== We can register ''KeyMapping''s with ''KeyMappingRegistry''. First, let's create a ''KeyMapping'': // A key mapping with keyboard as the default public static final KeyMapping CUSTOM_KEYMAPPING = new KeyMapping( "key.examplemod.custom_key", // The translation key of the name shown in the Controls screen InputConstants.Type.KEYSYM, // This key mapping is for Keyboards by default InputConstants.KEY_P, // The default keycode "category.examplemod.example" // The category translation key used to categorize in the Controls screen ); // A key mapping with mouse as the default public static final KeyMapping CUSTOM_KEYMAPPING = new KeyMapping( "key.examplemod.custom_key", // The translation key of the name shown in the Controls screen InputConstants.Type.MOUSE, // This key mapping is for Mouse by default InputConstants.MOUSE_BUTTON_LEFT, // The default button "category.examplemod.example" // The category translation key used to categorize in the Controls screen ); // A key mapping with no default public static final KeyMapping CUSTOM_KEYMAPPING = new KeyMapping( "key.examplemod.custom_key", // The translation key of the name shown in the Controls screen InputConstants.Type.KEYSYM, // This key mapping is for Keyboards by default -1, // The default keycode "category.examplemod.example" // The category translation key used to categorize in the Controls screen ); We can register the key mapping in a method now. KeyMappingRegistry.register(CUSTOM_KEYMAPPING); ===== Listening to when the key is pressed ===== We will register a client tick event, and consume the key there. ClientTickEvent.CLIENT_POST.register(minecraft -> { while (CUSTOM_KEYMAPPING.consumeClick()) { // Do action here } });