Drop requirement on Architectury API #129
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Fewer dependencies tied to minecraft versions/platforms makes it easier to support new/different mc versions without relying on others to do so first.
Although this means we have to manually use the various platform APIs we target, this isn't actually a big deal in our case, since we use very few APIs:
Using the APIs directly may also give us more control.
Implementation
Key bindings
Previously, keybinds were stored as discrete fields on the main
Freecam
class. This meant having to construct a separateList
(or stream) in order to iterate over them when registering.Rather than maintain a list of keybinds twice, which would be tedious and prone to error, I've introduced the
ModBindings
enum in theconfig
package.This has several advantages:
Enum::values
KeyBinding
's maps until we're ready to register them.To minimize boilerplate elsewhere I've wrapped the
isPressed()
andwasPressed()
methods. We could also introduce our ownwasPressedReset()
to improve handler code, e.g: