hibiscus/src/main/kotlin/codes/som/hibiscus/util/input/KeybindDispatcher.kt

26 lines
1006 B
Kotlin

package codes.som.hibiscus.util.input
import codes.som.hibiscus.HibiscusLog
import codes.som.hibiscus.HibiscusMod
import codes.som.hibiscus.api.command.CommandContext
import codes.som.hibiscus.api.command.exceptions.CommandExecutionException
import codes.som.hibiscus.api.event.TypedListener
import codes.som.hibiscus.events.KeyEvent
import codes.som.hibiscus.mc
import org.lwjgl.glfw.GLFW
class KeybindDispatcher : TypedListener<KeyEvent>(KeyEvent::class.java) {
override fun on(event: KeyEvent) {
if (mc.isWindowFocused && mc.currentScreen == null && event.action == GLFW.GLFW_PRESS) {
HibiscusMod.keybinds.getBinds(event.key).forEach { bind ->
try {
HibiscusMod.commands.context = CommandContext.KEYBIND
HibiscusMod.commands.executeCommand(bind)
} catch (e: CommandExecutionException) {
e.cause?.message?.let { HibiscusLog.error(it) }
}
}
}
}
}