tutorial:keybinds
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
tutorial:keybinds [2020/08/21 10:22] – Removed deprecated event usage boogiemonster1o1 | tutorial:keybinds [2023/10/01 03:26] – Clarify the function of sticky keys haykam | ||
---|---|---|---|
Line 5: | Line 5: | ||
Minecraft handles user input from peripherals such as the keyboard & mouse using key-binds. When you press W your character moves forward, and when you press E your inventory opens. Every keybind can also be configured with the settings menu, so you can make your player move with arrow keys instead of WASD if you so desire. | Minecraft handles user input from peripherals such as the keyboard & mouse using key-binds. When you press W your character moves forward, and when you press E your inventory opens. Every keybind can also be configured with the settings menu, so you can make your player move with arrow keys instead of WASD if you so desire. | ||
- | This tutorial assumes you have the key bindings API, if not add " | + | This tutorial assumes you have the key bindings API, if not add '' |
Adding a key-bind is easy. You'll need to: | Adding a key-bind is easy. You'll need to: | ||
+ | * open or create a Client [[documentation: | ||
* create a KeyBinding object | * create a KeyBinding object | ||
* react to the key being pressed | * react to the key being pressed | ||
Line 13: | Line 14: | ||
See [[https:// | See [[https:// | ||
+ | |||
+ | ==== Preparing an Entrypoint ==== | ||
+ | |||
+ | If you already have a Client entrypoint created and you are familiar with how it works, you can safely proceed to the [[#Creating your Keybind|next section]]. Otherwise, stick around for a quick overview! | ||
+ | |||
+ | In order to create a Client entrypoint, we'll need to do a couple of different things to let Fabric know that we intend to specify code that only needs to be executed by the physical client [[tutorial: | ||
+ | |||
+ | <code java[enable_line_numbers=" | ||
+ | /* package */ | ||
+ | /* imports */ | ||
+ | |||
+ | public class ExampleClientEntrypoint implements ClientModInitializer { | ||
+ | | ||
+ | // The KeyBinding declaration and registration are commonly executed here statically | ||
+ | | ||
+ | @Override | ||
+ | public void onInitializeClient() { | ||
+ | | ||
+ | // Event registration will be executed inside this method | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | So, what are we doing here? Fabric entrypoints for most use cases are designated by implementing a special interface unique to the side or sides that the code in the entrypoint should be run on. For our Client, we simply have our class implement the '' | ||
==== Creating your Keybind ==== | ==== Creating your Keybind ==== | ||
Line 33: | Line 58: | ||
</ | </ | ||
- | If you want a sticky key, add "() -> true" | + | Sticky keys can also be created with '' |
| | ||
- | GLFW.GLFW_KEY_R can be replaced with whatever key you want the binding to default to. The category is related to how the keybinding is grouped in the settings page. | + | '' |
==== Responding to your Keybind ==== | ==== Responding to your Keybind ==== | ||
- | The code here will print "Key 1 was pressed!" | + | The code here will print "Key 1 was pressed!" |
+ | |||
+ | For versions since 1.19: | ||
+ | <code java> | ||
+ | |||
+ | ClientTickEvents.END_CLIENT_TICK.register(client -> { | ||
+ | while (keyBinding.wasPressed()) { | ||
+ | client.player.sendMessage(Text.literal(" | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | For versions below 1.19: | ||
<code java> | <code java> | ||
Line 50: | Line 87: | ||
</ | </ | ||
| | ||
- | Keep note that this is entirely client-side. To have the server respond to a keybind, you'll need to send a custom packet and have the server handle it separately. | + |
tutorial/keybinds.txt · Last modified: 2023/12/27 13:14 by 2601:188:cb7c:25a0:19fa:9122:4e5a:fad1