Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Creators
Details
BindAliasPlus
A Fabric client-side mod that lets you create aliases (macros) and bind them to keys/mouse buttons, so one key press can run a full sequence of actions — similar to a “bind/alias config” workflow.
Client-only: servers do not need to install this mod.
Installation
- Install Fabric Loader for your Minecraft version.
- Download the mod from Modrinth: https://modrinth.com/mod/bind-alias-plus/versions
- Put the
.jarinto your Minecraftmodsfolder. - Launch Minecraft.
Core idea
You define an alias as a list of steps, then bind a key to run it.
- Steps are separated by spaces.
- A step can be:
- an alias with no args:
jump - an alias with args:
swapSlot\10\39(args are separated by backslash\)
- an alias with no args:
You can bind keys so that:
- on press it runs one alias
- on release it runs another alias (typical
+something/-somethingpattern)
Syntax
A) Alias definitions are split by spaces
An alias definition is a sequence of steps split by space :
equipElytra jump wait\1 jump swapSlot\19 +use -use
B) Step arguments are split by backslash \
If a step contains \, the part before the first \ is the alias name, and the rest are its arguments:
swapSlot\10\39→ alias nameswapSlot, args:10,39wait\20→ alias namewait, args:20
C) Spaces inside a single step argument
If a single step argument must contain spaces, wrap that argument in double quotes.
This matters mostly for the built-ins that send chat/commands, or for nested definitions (see next section).
Nested definitions (important): BuiltinAliasWithGreedyStringArgs and ;
Some built-in aliases take a greedy string payload so you can define / bind / unbind / chat / run commands from inside another alias:
aliasbindunbindsaysendCommand
The key trick: avoid quotes by using ;
Outer parsing always splits alias steps by spaces.
So if you write a nested payload that contains spaces, you normally need quotes to keep it as a single argument.
However, for the greedy-string built-ins you can also avoid quotes by writing the nested payload as a single token and using semicolon ; to separate pieces inside that token.
Examples (both work):
-
With quotes (payload has spaces):
/alias makeJumpAlias alias\"jump +jump wait\1 -jump"
-
Without quotes (payload is one token, use
;as separators):/alias makeJumpAlias alias\jump;+jump;wait\1;-jump
How greedy-string built-ins process the payload
-
alias\...,bind\...,unbind\...:- they replace
;with spacebefore sending the final chat command to the game. - This is what makes
/alias makeJumpAlias alias\jump;+jump;wait\1;-jumpwork: it sends a chat command/alias jump +jump wait\1 -jumpwhenmakeJumpAliasis called.
- they replace
-
say\...andsendCommand\...:- they do NOT replace
;. - Whatever you put in their payload is sent as-is (so
;stays as a literal character).
- they do NOT replace
Commands
/alias <name> <definition>
Create or replace a user alias.
Notes:
- You cannot overwrite built-in aliases.
- User aliases run by expanding the definition into steps.
Example:
/alias pearl swapSlot\12 +use wait\1 -use swapSlot\12
/bind <key> <definition-or-aliasName>
Bind a key/mouse button.
Behavior:
- If
<definition-or-aliasName>matches an existing alias name (including+name/-nameforms), it binds to that alias. - Otherwise it treats it as an inline definition and creates an internal alias for the bind.
Press/release behavior:
- If your bind definition contains
+somethingand/or-something, the mod can derive an “opposite” release side automatically from those+/-steps.
Examples:
/bind g jump/bind g +forward wait\10 -forward
/bindByAliasName <key> <aliasName>
Bind a key directly to an existing alias name.
Examples:
/bindByAliasName mouse5 +fly/bindByAliasName g jump
/unbind <key>
Remove a bind.
Example:
/unbind mouse5
/reloadCFG
Reload config file from disk.
Configuration file
Path:
config/bind-alias-plus.cfg
Rules:
- One command per line
- Leading
/is optional #starts a comment line
Reload after editing:
/reloadCFG
Built-in aliases
BindAliasPlus ships with built-in aliases you can call inside your alias definitions.
1) Built-ins with arguments (use \ between args)
| Alias | Arguments | What it does | Example |
|---|---|---|---|
log\text |
text | Log message to console (debug) | log\Hello |
slot\n |
n=1..9 |
Select hotbar slot | slot\3 |
swapSlot\a\b |
a,b |
Swap two slots | swapSlot\10\39 |
swapSlot\a |
a |
Swap slot a with the currently selected hotbar slot |
swapSlot\19 |
wait\ticks |
ticks | Delay execution (20 ticks = 1 second) |
wait\20 |
yaw\deg |
deg | Add to yaw (relative) | yaw\90 |
pitch\deg |
deg | Add to pitch (relative) | pitch\-30 |
setYaw\deg |
deg | Set yaw (absolute) | setYaw\180 |
setPitch\deg |
deg | Set pitch (absolute) | setPitch\0 |
alias\payload / alias\"payload" |
payload | Create/replace an alias. If you want to avoid quotes, you can write the payload as one token and use ; (it will be converted to spaces). |
alias\jump;+jump;wait\1;-jump |
bind\payload / bind\"payload" |
payload | Bind a key. If you want to avoid quotes, write the payload as one token and use ; (it will be converted to spaces). |
bind\mouse4;+bow |
unbind\key |
key | Unbind a key. (No special ; handling needed.) |
unbind\g |
say\text / say\"text" |
text | Send a chat message. ; is NOT special here (it is sent literally). Quotes only needed if text has spaces. |
say\"hello world" |
sendCommand\cmd / sendCommand\"cmd" |
cmd | Send a command (no leading /). ; is NOT special here. Quotes only needed if command has spaces. |
sendCommand\"gamemode creative" |
Slot numbering for swapSlot
Slots follow Minecraft’s internal indexing in this mod’s UI docs:
1-9→ hotbar10-36→ inventory37-40→ armor slots (37 feet … 40 head)41→ offhand
2) Aliases without arguments (direct actions)
These are available by default and are convenient for press/release patterns:
| Alias | Equivalent to | What it does |
|---|---|---|
+attack / -attack |
builtinAttack\1 / builtinAttack\0 |
Hold/release left-click |
+use / -use |
builtinUse\1 / builtinUse\0 |
Hold/release right-click |
+forward / -forward |
builtinForward\1 / builtinForward\0 |
Hold/release forward |
+back / -back |
builtinBack\1 / builtinBack\0 |
Hold/release back |
+left / -left |
builtinLeft\1 / builtinLeft\0 |
Hold/release left |
+right / -right |
builtinRight\1 / builtinRight\0 |
Hold/release right |
+jump / -jump |
builtinJump\1 / builtinJump\0 |
Hold/release jump |
+sneak / -sneak |
builtinSneak\1 / builtinSneak\0 |
Hold/release sneak |
+sprint / -sprint |
builtinSprint\1 / builtinSprint\0 |
Hold/release sprint |
drop / dropStack |
builtinDrop\0 / builtinDrop\1 |
Drop one / whole stack |
swapHand |
— | Swap main-hand and offhand |
cyclePerspective |
— | Cycle camera perspective |
FPS / TPS / TPS2 |
builtinSetPerspective\0/1/2 |
Set specific perspective |
+silent / -silent |
builtinSilent\1 / builtinSilent\0 |
Suppress/restore bind/alias feedback messages |
reloadCFG |
— | Reload config file |
Examples
Elytra + firework (press-and-hold)
Put:
- Elytra in slot
10(inventory first row, first slot) - Fireworks in slot
19(inventory second row, first slot)
Then:
/alias equipElytra swapSlot\10\39/alias jump +jump wait\1 -jump/alias +fly equipElytra jump wait\1 jump swapSlot\19 +use -use/alias -fly equipElytra swapSlot\19/bind mouse5 +fly
Quick bow without using a hotbar slot
Put your bow in slot 11:
/alias +bow swapSlot\11 +use/alias -bow -use swapSlot\11/bind mouse4 +bow
Toggle bind pattern (state switcher)
You can create toggle switches by rebinding a key to different aliases on each press. This is useful when you want state to persist after releasing the key (unlike press-and-hold pattern).
Complete elytra toggle example
Put:
- Elytra in slot
10(inventory first row, first slot) - Fireworks in slot
26(inventory third row, first slot)
Config file setup:
# Define reusable equipment aliases
alias +equipElytra swapSlot\10\39
alias -equipElytra swapSlot\10\39
alias +holdFireworks swapSlot\26\41
alias -holdFireworks swapSlot\26\41
# Define jump helper
alias jump +jump wait\1 -jump
# Define the actual fly action
alias +fly +equipElytra jump wait\1 jump +holdFireworks +use -use
alias -fly -equipElytra -holdFireworks
# State switcher: creates two states that toggle back and forth
alias fly1 bind\"mouse5 fly2" +fly
alias fly2 bind\"mouse5 fly1" -fly
# Initial bind
bind mouse5 fly1
How it works:
- Press
mouse5→ executesfly1→ rebindsmouse5tofly2→ runs+fly(equips elytra and activates) - Press
mouse5again → executesfly2→ rebindsmouse5back tofly1→ runs-fly(unequips elytra) - State persists even after releasing the key (this is the key difference from press-and-hold pattern)
Using +silent/-silent to avoid chat spam
When rebinding keys frequently, you'll see "Bound key..." messages. Use silent mode to suppress them:
# Wrap bind commands in silent mode
alias fly1 +silent bind\"mouse5 fly2" -silent +fly
alias fly2 +silent bind\"mouse5 fly1" -silent -fly
bind mouse5 fly1
Or keep it cleaner - the bind built-in is already silent by default when called from inside an alias:
# The bind commands won't spam, but +fly/-fly will show normal feedback
alias fly1 bind\"mouse5 fly2" +fly
alias fly2 bind\"mouse5 fly1" -fly
bind mouse5 fly1
Toggle vs Press-and-hold comparison
Toggle pattern (state switcher):
- Use
bind mouse5 fly1with rebinding logic - State persists after releasing the key
- Press once to activate, press again to deactivate
- Good for: toggleable modes, equipment swapping
Press-and-hold pattern:
- Use
bind mouse5 +flydirectly - Activates on press, deactivates on release
- Must hold the key to keep active
- Good for: temporary actions, charge-and-release mechanics
Both patterns can use the same +fly/-fly aliases!
Notes / limitations
- Keybind triggers are ignored while you are typing in: chat, sign editor, book editor, command block screen.
- Automation can be suspicious on some servers (anti-cheat). Use responsibly.



