- 271
- 2
- 0
При создании этой темы я воспользовался этим ресурсом.
Проверил на 1.7.10
Но чаще всего мы используем несколько клавиш, поэтому дальше мы будем рассматривать этот способ.
И инит методе пишем:
Создаем класс обработчика
[attachment=91]
Если я допустил ошибки или можно сделать как-то лучше, пишите.
Проверил на 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());
}
}
Локализация
В
создайте пакет
Создаем файл локализации например en_US.lang
Код:
src/main/resources
создайте пакет
Код:
assets.mod.lang
Код:
key.structure.desc=key
key.magicbeans.category=category
Если я допустил ошибки или можно сделать как-то лучше, пишите.