Litematica (Forge)

Litematica (Forge)

336k Downloads

"Layer mode prev/next" doesn't cancel further processing

SunSerega opened this issue ยท 2 comments

commented

https://youtu.be/Z5LdfBuN7Jc

Not that rarely i end up pressing Up/Down while holding some of WASD keys. So, i allowed extra keys on "layer prev/next".
But now because "cancel further processing" doesn't work on "layer mode prev/next" - i can't see which mode i'm in, because it's message is immediately overridden by message of "layer prev/next".

Exclusive mode on "layer prev/next" works as hotfix, but with that - i can't go through multiple layers, until i unpress all wasd keys. This is rarer, but still uncomfortable.

commented

They actually do cancel further processing, however that only affects further vanilla processing, all malilib keybind callbacks are always processed unless exclusive prevents it. This has always been the case.

There are multiple things I should probably do to fix this or rather to allow enough flexibility to solve this:

  • Change the Cancel further processing to an enum, with values Never, Always, On Success, On Failure (mentioned in #133)
  • Add a new boolean option to also allow cancelling further malilib keybind processing (or more precisely not call any further callbacks)
  • Add a priority to the advanced keybind settings, which can be used to order the callbacks when there are multiple triggered at the same time

Edit: I should probably also to switch into using a custom hotbar message renderer that can hold a few different messages at once, so that overlapping messages could all be seen.

commented

Just to give an update on this old issue, today I implemented the things I mentioned in my previous comment into malilib. The second item was implemented differently from that last message - instead of a given keybind cancelling further keybinds from triggering, a given keybind can say that it should only trigger "if it's the first", ie. if another keybind hasn't yet triggered during handling of the same key event.