按键KeyBinding使用
萌芽的AdvancedKeyBinding怎么实现的
#高级按键绑定 玩家可以自己在设置内设置按键
AdvancedKeyBinding: #全部可删除
# 格式 KeyDown或者KeyUp 按键分类 按键名字 默认按键
KeyDown@测试按键@按键1@U:
- "opcmd<->say %player_name% Advanced Key U Down!"
KeyDown@测试按键@按键2@K:
- "opcmd<->say %player_name% Advanced Key K Up!"
注册给萌芽
if (Config.inst().contains("AdvancedKeyBinding")) {
for (String keyBindingSet : Config.inst().getConfigurationSection("AdvancedKeyBinding").getKeys(false)) {
String[] split = keyBindingSet.split("@");
String category = split[1];
String name = split[2];
String keyTypeStr = split[3];
KeyType keyType = KeyType.valueOf("KEY_" + keyTypeStr);
KeyBinding keyBinding = new KeyBinding(category + "_" + name, category, name, keyType);
GermKeyAPI.registerKeyBinding(keyBinding);
}
}
注册后就可以监听了
@EventHandler(ignoreCancelled = true)
public void onKeybinding(GermKeyDownEvent event) {
KeyBinding keyBinding = event.getKeyBinding();
if (keyBinding == null) return;
String index = "KeyDown@" + keyBinding.getCategory() + "@" + keyBinding.getName() + "@" + keyBinding.getDefaultKey().getSimpleKey();
if (!Config.inst().contains("AdvancedKeyBinding." + index)) {
return;
}
CommandUtil.execute(event.getPlayer(), Config.inst().getStringList("AdvancedKeyBinding." + index));
}
@EventHandler(ignoreCancelled = true)
public void onKeybinding(GermKeyUpEvent event) {
KeyBinding keyBinding = event.getKeyBinding();
if (keyBinding == null) return;
String index = "KeyUp@" + keyBinding.getCategory() + "@" + keyBinding.getName() + "@" + keyBinding.getDefaultKey().getSimpleKey();
if (!Config.inst().contains("AdvancedKeyBinding." + index)) {
return;
}
CommandUtil.execute(event.getPlayer(), Config.inst().getStringList("AdvancedKeyBinding." + index));
}