Minecraft Java Edition 1.21.x | Multiplayer-Safe | Pure Datapack
⚠️ This is the ONLY official source. Files downloaded from other sites or forks may have been modified. Only download from the Releases page.
SHA256: sha256:d8f000c21cef9bd7656a5a1d1cc127f563e03fdac933a6ede824d3baed6d0e44
# Windows
certutil -hashfile datapack.zip SHA256
# Linux / Mac
sha256sum datapack.zip1. Place advanced_macro_engine_v30/ into your server/datapacks/ folder
2. /reload
3. Become an admin: /tag @s add macro.admin
macro:engine (persistent data)
├── global
│ ├── version: "v2.2.6"
│ └── 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"}]
macro:input (sending data to a function)
macro:output (receiving results from a function)
Used with execute if predicate <id>.
| Predicate ID | Description |
|---|---|
macro:is_survival |
Is the player in survival mode? |
macro:is_creative |
Is the player in creative mode? |
macro:has_empty_mainhand |
Is the player's main hand empty? |
macro:is_full_health |
Is the player at full health? (20 HP) |
macro:is_sneaking |
Is the player sneaking? |
macro:is_sprinting |
Is the player sprinting? |
macro:is_burning |
Is the player on fire? |
macro:is_on_ground |
Is the player on the ground? |
macro:is_daytime |
Is it daytime? (0–12000 ticks) |
macro:is_raining |
Is it raining? |
macro:is_thundering |
Is there a thunderstorm? |
macro:in_overworld |
Is the player in the Overworld? |
macro:in_nether |
Is the player in the Nether? |
macro:in_end |
Is the player in the End? |
Code and examples are split into separate documents by module:
| Module | Document |
|---|---|
| 🕐 Cooldown | cooldown.md |
| 📡 Event | event.md |
| 🔢 Math | math.md |
| 👥 Team & ⚙️ Config | team-config.md |
| 🔁 Lib · 👤 Player · ⚙️ Commands · 💬 Messaging | lib-player-cmd-string.md |
| Bug | File | Fix |
|---|---|---|
CRITICAL: $epoch was being reset on /reload |
load.mcfunction |
Added unless score $epoch guard |
process_queue stack overflow risk |
lib/process_queue |
Added $pq_depth limit of 256 per tick |
| Version string inconsistency | load, pack.mcmeta |
All references updated to v3.0 |
New modules: math/abs, math/clamp, team/*, config/*, lib/input_push, lib/input_pop
| Bug | File | Fix |
|---|---|---|
| CRITICAL: Cooldowns never expired | cooldown/* |
Switched to $epoch macro.time (absolute counter) |
progress_bar was displaying raw numbers |
string/progress_bar |
Added █░ lookup table |
fire_next NBT predicate was incorrect |
event/internal/fire_next |
Fixed event_queue[0] path check |
ceil_div prefix conflict |
math/ceil_div |
$cd_1 → $cdv_1 |
Added cooldown/, event/, lib/, math/, cmd/, string/, player/ modules.
| Bug | Fix |
|---|---|
data remove storage macro:input {} was invalid |
data modify ... set value {} |
Subtitle color was hardcoded as "gray" |
Made dynamic with "color":"$(color)" |
GitHub Discussions — For questions, suggestions, and bug reports.
Advanced Macro Engine v3.0 | MC Java 1.21.x | Language: mcfunction