Back to mods
Advanced Macro Engine project artwork

Modrinth · Minecraft mod

Advanced Macro Engine

A high-performance scripting and macro execution framework for Minecraft Java Edition datapacks. Provides fiber scheduling, modular APIs, and multi-version overlay support out of the box.

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which Advanced Macro Engine release matches 24w21b?

Updated 3 months ago
Best match for your filters v5.1.0-updated6+mod
Game version 1.20.3, 1.20.4, 23w51a
Loader Fabric, Forge, NeoForge

Advanced Macro Engine v5.1.0-updated6+mod targets 1.20.3, 1.20.4, 23w51a with Fabric, Forge, NeoForge. Installation on the client is optional. Installation on the dedicated server is optional. No extra mods listed for this file.

Where it goes

Is Advanced Macro Engine required on the client, server, or both?

Installation on the client is optional. Installation on the dedicated server is optional.

Client Optional
Dedicated server Optional
Loader for this release Fabric, Forge, NeoForge
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

The source marks this as usable on both the client and server.

What else does Advanced Macro Engine v5.1.0-updated6+mod need?

v5.1.0-updated6+mod on 24w21b. Every mod below is checked against that same setup.

No extra mods listed for this file

This file does not list any required mods. Do not add a library just because a different file uses it.

This file does not list any required or optional mods.

Before you install it

Add Advanced Macro Engine without breaking your instance.

Built for Advanced Macro Engine v5.1.0-updated6+mod on 24w21b. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use v5.1.0-updated6+mod. It targets 1.20.3, 1.20.4, 23w51a with Fabric, Forge, NeoForge; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    This file does not list any required mods. Do not add a library just because a different file uses it.

  3. 03

    Put it on the correct side

    Installation on the client is optional. Installation on the dedicated server is optional.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside v5.1.0-updated6+mod. It opens that exact file at the source.

About this project

What does Advanced Macro Engine add?

🔧 macroEngine

Minecraft Java Edition 26.2 | Multiplayer-Safe | Pure Datapack

CI
License: MIT


Current version: v6.1.0


This datapack was considered safe to use as of its last release, but it no longer receives security improvements, bug fixes, or new features. There is no "up to date" version to move to.

Do not copy macroengine:input or macroengine:engine into your own datapack. It is an internal implementation detail and may change without notice between releases.

⚠️ Do not use v5.1.1. That version bound _rt_origin.mcfunction to the load tag, causing it to run automatically on every load with no safe removal path. Fixed in later versions — always use the latest release.


⚠️ A /reload is still required after installation or after adding the load hook below. Automatic first-join initialization is not implemented in this version — do not rely on this until verified in-game with repeated reloads.


🛡️ This is a Minecraft Datapack — it contains no executables or scripts outside of .mcfunction files.
Some antivirus software may flag .mcfunction files as suspicious due to macro-like syntax. This is a false positive. The pack has been scanned on VirusTotal and returned clean.
Only download from this official repository. Do not trust redistributed or repackaged versions from third-party sources.


📦 Installation

  1. Download the latest release from the Modrinth versions page and place the .zip into <world>/datapacks/.

  2. Add the following logic to your datapack's load tag. Replace <namespace> with your own datapack's namespace (e.g. mypack) — this applies only to the function names, never to macroengine:engine, which is MacroEngine's own fixed storage and must not be changed:

#> <namespace>:load
execute unless data storage macroengine:engine {global:{loaded:1b}} run function <namespace>:load_macroengine
#> <namespace>:load_macroengine

# Guard checks the SAME storage/path the trigger condition checks (macroengine:engine global.loaded).
execute if data storage macroengine:engine {global:{loaded:1b}} run return 0

function macroengine:setup

data modify storage macroengine:engine global.loaded set value 1b

v6.1.0 change: macroEngine no longer auto-starts via minecraft:load. The
old function macroengine_load:main entry point (and the LanternMC load:
tag chain it depended on) is gone. Consuming packs must call
function macroengine:setup explicitly — either from their own manual
<namespace>:load_macroengine guard (as above) or once by an admin.

Fixed bug: duplicate load trigger (click to expand)

An earlier version checked macroengine:engine {global:{loaded:1b}} in the trigger but set <namespace>:engine loaded_macroengine in the guard — two different storages, two different paths. The set never satisfied the trigger's condition, so load_macroengine re-ran every time the load tag fired. This doesn't crash anything, but it silently re-triggers dl_load:load/yes and fork_no on every reload, which can accumulate side effects depending on what those functions do.

Both the check and the set must target macroengine:engine global.loaded. If you're updating from an older copy of this README, verify by reloading multiple times and confirming load_macroengine does NOT re-run after the first load.


🏗️ Storage Architecture

macroengine:engine  (persistent data)
├── global
│   ├── version: "v6.1.0"
│   ├── loaded: 1b
│   └── tick: <int>
├── players
│   └── Steve { coins:150, level:5, xp:2300, online:1b, ... }
├── queue
│   └── [{func:"mypack:event/end", delay:100}]
├── cooldowns
│   └── Steve { fireball: 2460, dash: 1870 }  ← expiry ticks
└── events
    └── on_join: [{func:"mypack:welcome"}, {func:"mypack:xp_bonus"}]

macroengine:input   (sending data to a function)
macroengine:output  (receiving results from a function)

Note: All MacroEngine-owned state lives under the macroengine: namespace only. Never mix a consuming pack's own namespace into MacroEngine's load-flag logic — that mismatch was the source of the bug above.


📦 Dependencies

Lantern Load — removed in v6.1.0

Repository: https://github.com/LanternMC/load
License: BSD 0-Clause (public domain)

Previously provided deterministic load order, version tracking, and pre/load/post-load hooks via the load: namespace tag chain. As of v6.1.0 this dependency is gone entirely — macroEngine starts via a manual function macroengine:setup call instead (see the Load Guard section above). data/load/ no longer exists in this pack.

# Check if MacroEngine is loaded
execute if score #MacroEngine load.status matches 1.. run say MacroEngine is loaded

# Get version (major*100 + minor*10 + patch → v6.1.0 = 610)
scoreboard players get #MacroEngine load.status

StringLib

Repository: https://github.com/CMDred/StringLib
License: MIT

Bundled under the stringlib namespace. Exposed via macroengine:core/lib/string/*.

Function Description
lib/string/concat Join a string array
lib/string/find Find substring index
lib/string/replace Replace substring
lib/string/split Split by separator
lib/string/insert Insert at index
lib/string/to_lowercase Lowercase (A–Z, fast)
lib/string/to_uppercase Uppercase (a–z, fast)
lib/string/to_number String → numeric NBT
lib/string/to_string Value → string

All functions read from macroengine:input and write to macroengine:output string.result.

data modify storage macroengine:input string set value "Hello World"
data modify storage macroengine:input find set value "World"
data modify storage macroengine:input replace set value "Everyone"
function macroengine:core/lib/string/replace
# macroengine:output string.result → "Hello Everyone"

💬 Support

This project is archived. Issues and pull requests are not monitored and will not be actioned.

Issues
Discussions


MacroEngine v6.1.0 | MC Java 26.2 | Pure Datapack

Project description from Modrinth.

Pick your setup

Advanced Macro Engine by Minecraft version and loader

Choose the version and loader you play, then open the matching release.

310 available setups

Showing the newest 12 of 62 game versions. Older files are in the list below.

Check the dependencies, then try the file in a copied instance before changing a world you care about.

Recent files

Advanced Macro Engine versions and loaders

38 of 38 releases match
Clear filters

Looking for an older file? The official Modrinth project page is in Resources.