be like cfg pro in counter strike
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.
.jar into your Minecraft mods folder.You define an alias as a list of steps, then bind a key to run it.
jumpswapSlot\10\39 (args are separated by backslash \)You can bind keys so that:
+something / -something pattern)An alias definition is a sequence of steps split by space :
equipElytra jump wait\1 jump swapSlot\19 +use -use\If a step contains \, the part before the first \ is the alias name, and the rest are its arguments:
swapSlot\10\39 → alias name swapSlot, args: 10, 39wait\20 → alias name wait, args: 20If 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).
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;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;-jumpalias\..., bind\..., unbind\...:
; with space before sending the final chat command to the game./alias makeJumpAlias alias\jump;+jump;wait\1;-jump work: it sends a chat command /alias jump +jump wait\1 -jump when makeJumpAlias is called.say\... and sendCommand\...:
;.; stays as a literal character)./alias <name> <definition>Create or replace a user alias.
Notes:
Example:
/alias pearl swapSlot\12 +use wait\1 -use swapSlot\12/bind <key> <definition-or-aliasName>Bind a key/mouse button.
Behavior:
<definition-or-aliasName> matches an existing alias name (including +name/-name forms), it binds to that alias.Press/release behavior:
+something and/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/reloadCFGReload config file from disk.
Path:
config/bind-alias-plus.cfgRules:
/ is optional# starts a comment lineReload after editing:
/reloadCFGBindAliasPlus ships with built-in aliases you can call inside your alias definitions.
\ 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" |
swapSlotSlots follow Minecraft’s internal indexing in this mod’s UI docs:
1-9 → hotbar10-36 → inventory37-40 → armor slots (37 feet … 40 head)41 → offhandThese 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 |
Put:
10 (inventory first row, first 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 +flyPut your bow in slot 11:
/alias +bow swapSlot\11 +use/alias -bow -use swapSlot\11/bind mouse4 +bowYou 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).
Put:
10 (inventory first row, first 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:
mouse5 → executes fly1 → rebinds mouse5 to fly2 → runs +fly (equips elytra and activates)mouse5 again → executes fly2 → rebinds mouse5 back to fly1 → runs -fly (unequips elytra)+silent/-silent to avoid chat spamWhen 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 pattern (state switcher):
bind mouse5 fly1 with rebinding logicPress-and-hold pattern:
bind mouse5 +fly directlyBoth patterns can use the same +fly/-fly aliases!