Skip to content

Repository files navigation

MacroKeybindMod

buildLicense: MITMinecraft

A modern, multi-version rewrite of the Macro / Keybind Mod — the long-running client-side Minecraft mod that binds keys, mouse buttons and menus to scripts: from a one-liner that types a command to a full automation routine with variables, loops, conditionals, events and pathfinding.

The original (net.eq2online.macros, by Mumfrey) froze at Minecraft 1.12.2 on the now-defunct LiteLoader. MacroKeybindMod revives it from the ground up on Fabric, with first-class support for 23 Minecraft versions (1.14.4 → 1.21.11) built from a single source tree.

  • One engine, every version — a pure-JVM scripting core with zero Minecraft dependencies, shaded into each Fabric build.
  • Two languages, one runtime — the classic $${ … }$$ MKB syntax and a clean modern brace syntax, both compiling to the same instruction set.
  • Its own pathfinding — a from-scratch A* over the block grid (walk / diagonal / step / fall / parkour), no Baritone. Drive it from a script with goto(x, y, z), and swap in your own algorithm through the Pathfinder SPI.
  • Auto-reconnect — opt-in: rejoin the last server automatically after a disconnect (toggle via the in-game module GUI or a keybind).
  • Tested — the engine ships a real unit-test suite (363 tests): lexer, parser, runtime VM, variables, expressions, actions, pathfinding.

Quick start

  1. Install Fabric Loader for your Minecraft version.
  2. Download the matching MacroKeybindMod jar from dist/ (see Supported versions).
  3. Put it in your .minecraft/mods/ folder, alongside its dependencies:
  4. Launch the Fabric profile. Bind a key in Options → Controls and start scripting.

MacroKeybindMod is a client-side mod. It does not need to be installed on the server.


Installation in detail

MacroKeybindMod has three runtime dependencies. All three must be in your mods/ folder:

DependencyWhyWhere
Fabric Loader>= 0.16(lower on pre-1.19)the mod loader itselffabricmc.net
Fabric API (per MC version)tick / keybind / chat events the bridge hooks intoModrinth · CurseForge
Fabric Language Kotlin>= 1.13.0runs the Kotlin entrypointModrinth

The pure-JVM engine is bundled inside each MacroKeybindMod jar (Jar-in-Jar), so you never install it separately.

Use the Java version your Minecraft build expects: Java 21 for 1.20.5+ / the 1.21.x line, Java 17 for 1.18–1.20.4, Java 16 for 1.17.x, Java 8 for 1.16.5 and older.


Supported versions

23 Minecraft versions are built from one source tree (Stonecutter + Fabric Loom, official Mojang mappings). Each produces macromod-0.1.0+<mc>.jar in dist/.

1.14.41.15.21.16.51.17.1
1.18.21.19.21.19.41.20.1
1.20.21.20.41.20.61.21
1.21.11.21.21.21.31.21.4
1.21.51.21.61.21.71.21.8
1.21.91.21.101.21.11

1.14.4 is the floor — the oldest Minecraft version with official Mojang mappings. The two oldest targets (1.14.4 / 1.15.2) predate the Fabric key-binding/chat event APIs, so the in-game bridge there degrades to a logging sink while the engine runs in full.

See docs/VERSIONS.md for the per-version dependency matrix.


What a macro looks like

Legacy MKB syntax:

$${
// toggle an auto-clicker
if(automine);
log("Automine off"); unset(automine);
else;
log("Automine on"); set(automine);
do; key(attack); while(automine);
endif;
}$$

Modern brace syntax:

if automine {
log("Automine off")
unset(automine)
} else {
log("Automine on")
set(automine)
forever { key(attack) }
}

Both compile to the same flat instruction list and run on the same virtual machine.

Try scripts live in your browser — the docs site ships an interactive Script Editor that runs the DSL with no install needed.


Documentation

Full documentation lives in docs/ and builds into a searchable site with MkDocs Material:

pip install mkdocs-material
mkdocs serve # http://127.0.0.1:8000

Highlights:


Build from source

Requires a JDK (21 recommended — Gradle auto-provisions older JDKs via the Foojay resolver). The Gradle wrapper pins everything else (Gradle 9.5.1, Kotlin 2.1.0, Loom 1.17.11, Stonecutter 0.9.6).

# Run the engine's unit tests (pure JVM, no Minecraft needed)
./gradlew :engine:test
# Build the mod for the active version (default 1.21.1)
./gradlew :fabric:build
# Build the mod for EVERY supported version (writes 23 jars)
./gradlew chiseledBuild
# Switch the active dev version
./gradlew "Set active project to 1.20.1"

Built jars land in fabric/versions/<mc>/build/libs/. The release copies in dist/ are collected from there — see CONTRIBUTING.md for the full workflow.


Project layout

mc_macromod/
├─ engine/ Pure-JVM scripting engine (DSL lexer → compiler → VM, pathfinding,
│ modules). No Minecraft deps. 363 unit tests.
├─ fabric/ Multi-version Fabric mod (Stonecutter). Keybinds, MC actions, GUI,
│ events, navigation. Shades :engine via Jar-in-Jar.
│ └─ versions/ Per-Minecraft-version gradle.properties (deps + Java level).
├─ docs/ MkDocs documentation site (guides, catalog, reference, editor).
├─ dist/ Ready-to-install mod jars (one per supported version) + checksums.
├─ settings.gradle.kts Stonecutter version list + Loom/Foojay setup.
└─ mkdocs.yml Docs site config.

License & responsible use

MacroKeybindMod's own source (engine/, fabric/, docs/) is released under the MIT License. See NOTICE.md for attribution to the original Macro / Keybind Mod and the licenses of the bundled dependencies.

Warning

Automating gameplay can violate a server's rules — for example, Hypixel's Terms of Service. MacroKeybindMod is a general-purpose client tool; how you use it, and any consequences, are your responsibility.

About

Fabric rewrite of the Macro / Keybind Mod: scriptable keybinds, macros, and pathfinding for 23 Minecraft versions (1.14.4-1.21.11)

Topics

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages