KeyBinding

271
2
0
При создании этой темы я воспользовался этим ресурсом.
Проверил на 1.7.10

Часто бывает полезно добавить функции, срабатывающие нажатием кнопки на клавиатуре. Это часто связано с взаимодействием с GUI, но может быть все, что угодно.​

С помощью этого метода зарегистрированные вами клавиши могут изменятся пользователем, за счёт этого ваш мод не будет конфликтовать с другими модами.​

Создание и регистрация клавиш​
Для регистрации одной клавиши можно использовать следующий код:​
Код:
// KeyBinding(Описание, клавиша, вкладка/раздел)
public static KeyBinding[] keyBindings new KeyBinding("key.structure.desc", Keyboard.KEY_P, "key.magicbeans.category");
Но чаще всего мы используем несколько клавиш, поэтому дальше мы будем рассматривать этот способ.​

Для удобства регистрации нескольких клавиш:​
Код:
//Создаем массив
public static KeyBinding[] keyBindings;
И инит методе пишем:​
Код:
// Объявляем массив клавиш
keyBindings = new KeyBinding[2]; 
  

keyBindings[0] = new KeyBinding("key.structure.desc", Keyboard.KEY_P, "key.magicbeans.category");
keyBindings[1] = new KeyBinding("key.hud.desc", Keyboard.KEY_H, "key.magicbeans.category");
  
// Регистрируем
for (int i = 0; i < keyBindings.length; ++i) 
{
    ClientRegistry.registerKeyBinding(keyBindings[i]);
}

​


Создание обработчика​

Код:
//Регистрация ивента
FMLCommonHandler.instance().bus().register(new YourHandler());
Создаем класс обработчика​
Код:
@SideOnly(Side.CLIENT)
@SubscribeEvent(priority=EventPriority.NORMAL, receiveCanceled=true)
public void onEvent(KeyInputEvent event)
{
    // Проверка, сработает при нажатии любой клавиши
    System.out.println("Key Input Event");

    // Достаём массив
    KeyBinding[] keyBindings = Main.keyBindings;//Main - главный класс
   
    // Проверяем на нужную кнопку
    if (keyBindings[0].isPressed()) 
    {
        // Выводит сообщение при нажатии клавиши в ячейке 0(можно делать всё что угодно)
        System.out.println("Key binding ="+keyBindings[0].getKeyDescription());
            
    }
    if (keyBindings[1].isPressed()) 
    {
        // Выводит сообщение при нажатии клавиши в ячейке 1(можно делать всё что угодно)
        System.out.println("Key binding ="+keyBindings[1].getKeyDescription());
            
        
    }
}
Локализация​
В 

Код:
src/main/resources

 создайте пакет 

Код:
assets.mod.lang
Создаем файл локализации например en_US.lang
​

Код:
key.structure.desc=key
key.magicbeans.category=category
[attachment=91]
Если я допустил ошибки или можно сделать как-то лучше, пишите.
 

Вложения

  • vop2.png
    vop2.png
    79.8 KB · Просмотры: 58
Крутой прием регистрации
 
Doc, спасибо исправил)))
 

Код:
public static KeyBinding[] keyBindings new KeyBinding("key.structure.desc", Keyboard.KEY_P, "key.magicbeans.category");
Это не скомпилируется.​


Массив кнопок использовать в коде не удобно.
Написал keyBindings[0], а потом сидишь через месяц и думаешь, зачем же была эта кнопка...


А еще лучше писать public static final.


А в категории лучше указывать имя мода, а не эту непонятную строчку
 
Назад
Сверху