
Keybind
⌨️ Bind keys to server-side commands. Press a key, the server runs a command.
Screenshots

About this Mod
⌨️ Keybind
Bind keys to server-side commands. Press a key, the server runs a command.
Client Mod (Fabric) • Server Plugin (Paper)
| Component | Environment | Platform |
|---|---|---|
KeybindMod |
Client Side | Fabric (MC 1.21.x & 26.x) |
KeybindPlugin |
Server Side | Paper 1.18.2+ |
Note: Both the Server Plugin and the Client Mod must be installed for the mod to function. On servers without the plugin, no keybinds will be registered or available.
✨ Features
- 🔗 Server-Driven: Actions are defined entirely on the server and synced to the client on join.
- 📁 Per-Server Storage: Key assignments are saved per server IP in
.minecraft/config/keybind-servers/and never overwritten on rejoin. - 🛠️ Dynamic Registration: New server actions appear in your Settings → Controls menu without restarting the game.
- 🏷️ Custom Display Names: Server owners set friendly names (e.g.,
"Teleport to Spawn"instead ofspawn). - ⏱️ Dual Cooldowns: Both a global cooldown (between any actions) and per-action cooldowns prevent spam.
- 🔐 Permission Support: Each action supports an optional extra permission node on top of
keybind.use. - 📡 Plugin Messaging: Uses
keybind:main/keybind:syncplugin message channels. Falls back to/kbind <action>if the packet channel is unavailable. - 🧹 Stale Action Cleanup: Obsolete actions from previous sessions are automatically removed from the Controls menu and saved config.
- 🌍 Universal Support: Compatible with Minecraft 1.21.x and 26.* using dynamic constructor discovery.
🚀 How It Works
- Sync: 1 second after a player joins, the plugin sends all configured actions (name, display name, default key) over the
keybind:syncchannel. - Registration: The mod registers each action as a native Minecraft keybind under the Keybind category in Settings → Controls.
- Trigger: When a key is pressed (and no screen is open), the mod sends the action name over the
keybind:mainchannel. - Execution: The plugin validates the action name (alphanumeric + underscores only), checks permissions and cooldowns, then runs the command.
🛠️ Installation
Server Side
- Place
KeybindPlugin.jarinto yourplugins/folder. - Restart the server —
plugins/Keybind/config.ymlis generated automatically. - Edit
config.ymlto define your actions, then run/kbind reload.
Client Side
- Place
KeybindMod.jarinto your.minecraft/mods/folder. - Requires Fabric Loader 0.18.4+ and Fabric API.
- Launch the game and connect to any server running the plugin.
The mod works on any server. On servers without the plugin, no keybinds are registered.
⚙️ Configuration
plugins/Keybind/config.yml
# Global cooldown between any keybind actions (milliseconds)
global-cooldown: 500
actions:
spawn:
command: "spawn" # Command to run (without /)
display-name: "Spawn" # Label shown in Controls menu
default-key: "LEFT_BRACKET" # Suggested key for first-time players
permission: "" # Optional extra permission node (leave empty for none)
cooldown: 1000 # Per-action cooldown (ms); defaults to global-cooldown
console: false # true = run as console with {player} replaced by player name
home:
command: "home"
display-name: "Home"
default-key: "RIGHT_BRACKET"
permission: ""
cooldown: 1000
console: false
Notes:
- Action names must be alphanumeric + underscores only (e.g.
my_action). console: trueruns the command as the console sender. Use{player}as a placeholder for the player's name (e.g.command: "tp {player} spawn").default-keyis only applied the first time a player connects. Their saved binding is used on subsequent joins.
⌨️ Supported Keys
Keyboard
| Category | Values |
|---|---|
| Letters | A–Z |
| Numbers | 0–9 |
| Function | F1–F25 |
| Arrows | UP, DOWN, LEFT, RIGHT |
| Navigation | PAGE_UP, PAGE_DOWN, HOME, END, INSERT, DELETE |
| Special | SPACE, ENTER, TAB, BACKSPACE, ESCAPE, PAUSE |
| Lock keys | CAPS_LOCK, SCROLL_LOCK, NUM_LOCK |
| Other | PRINT_SCREEN, MENU |
| Modifiers | LEFT_SHIFT, LEFT_CONTROL (or LEFT_CTRL), LEFT_ALT, LEFT_SUPER, RIGHT_SHIFT, RIGHT_CONTROL (or RIGHT_CTRL), RIGHT_ALT, RIGHT_SUPER |
| Numpad | KP_0–KP_9, KP_ADD, KP_SUBTRACT, KP_MULTIPLY, KP_DIVIDE, KP_DECIMAL, KP_ENTER, KP_EQUAL |
| Symbols | LEFT_BRACKET, RIGHT_BRACKET, BACKSLASH, SEMICOLON, APOSTROPHE, COMMA, PERIOD, SLASH, GRAVE_ACCENT, MINUS, EQUAL — or the character directly: [, ], \, ;, ', ,, ., /, `, -, = |
| World keys | WORLD_1, WORLD_2 (locale-specific keys on some keyboards) |
Mouse
| Value | Aliases | Button |
|---|---|---|
MOUSE_LEFT |
MOUSE_1 |
Left click |
MOUSE_RIGHT |
MOUSE_2 |
Right click |
MOUSE_MIDDLE |
MOUSE_3 |
Middle click |
MOUSE_4–MOUSE_8 |
— | Side/extra buttons |
📜 Commands & Permissions
| Command | Description | Permission |
|---|---|---|
/kbind <action> |
Manually trigger an action | keybind.use |
/kbind list |
List all configured action names | (any) |
/kbind reload |
Reload config and re-sync all online players | keybind.admin |
| Permission | Description | Default |
|---|---|---|
keybind.use |
Required to trigger any action | true (everyone) |
keybind.admin |
Access to /kbind reload |
op |
keybind.bypass.cooldown |
Ignore all cooldowns | op |
🏗️ Building from Source
./gradlew clean build
Project layout:
keybind-mod-common/shared loader-agnostic code, config/storage models, packet format, sync planning, and client session statekeybind-mod-fabric/Fabric-specific entrypoints, payload glue, mixins, and resourceskeybind-plugin/Paper plugin
Output jars:
keybind-plugin/build/libs/KeybindPlugin-1.0.0.jarkeybind-mod-fabric/build/libs/KeybindMod-1.0.0.jar
Requires Java 17+ for the plugin, Java 21+ for the mod.
Security
- Action names are validated server-side against
^[a-zA-Z0-9_]+$— arbitrary input is rejected. - Packet length is capped at 256 bytes.
- All command execution happens on the main server thread.
- Players without
keybind.usecannot trigger any action, even via direct/kbindcommand.
Available Versions
How to Install Keybind on Your Server
Order Server
Order a Minecraft Java server with at least 3 GB RAM (4 GB recommended).
Set bukkit Loader
In the panel under "Egg", select the bukkit loader and matching Minecraft version (26.1.2).
Install Mod
Open the mod browser in the dashboard and search for "Keybind". Click "Install" – done! Alternatively, upload the .jar via SFTP to the /mods folder.
Compatibility
Mod Loaders
Minecraft Versions
26.1.2, 26.1.1, 26.1 (+27 more)
Server-side
✗ UnsupportedRecommended RAM
4 GB(min. 3 GB)Frequently Asked Questions
Keybind server crashes on startup – what to do?
Most common cause: wrong bukkit version or insufficient RAM. Check the server log (latest.log) for "OutOfMemoryError" or "Mixin" errors. With Mado Hosting: ensure at least 3 GB RAM is allocated and the loader matches the mod version (26.1.2). You can switch loaders with one click in the panel.
Is Keybind compatible with bukkit and fabric and paper and purpur and spigot?
Keybind officially supports bukkit, fabric, paper, purpur, spigot for Minecraft 26.1.2, 26.1.1, 26.1. The Mado dashboard automatically detects incompatible loader combinations.
Server lagging with Keybind – how to optimize performance?
Recommended RAM: 4 GB (per 8 players). Use /spark profiler to check if Keybind consumes the most tick time. Common fixes: reduce server view-distance to 8-10, install "performant" or "starlight" as supplementary mods on Forge. With Mado Hosting, your server runs on NVMe SSDs with dedicated CPU cores for minimal latency.
Similar Mods
Rent Modded Server
Install Keybind with just one click on your server.