Create powerful data packs with ease
Finally add numbers in peace
// Do this
int y = x + 32;
# Instead of
scoreboard players set dummy operand 32
scoreboard players operation dummy y = dummy x
scoreboard players operation dummy y += dummy operand
Manipulate the world just like mods can
sheep mob = @e[type="sheep",limit=1];
mob.NoAI = true;
print(mob.Health);
tag @e[type="sheep",limit=1] add mob
data modify entity @e[tag=mob,limit=1] NoAI set value true
tellraw @a {nbt:"Health",entity:"@e[tag=mob,limit=1]"}
tag @e remove mob
Skip the nonsense and focus on the code
// Places up to 16 sheep onto a 4x4 platform
struct vec {
int x;
int y;
int z;
}
vec platform = { x: 0, y: 100, z: 0 };
void place_self(macro int x, macro int z) {
@/tp @s $(platform.x + x) $(platform.y) $(platform.z + z)
}
void place_all(sheep[] mobs) {
for (int i = 0; i < mobs.size(); ++i) {
as (mobs[i]) {
place_self(i % 4, i / 4);
}
}
}
#load
void main() {
sheep[] mobs = [];
as (@e[type="sheep",limit=16]) {
mobs.add(@s);
}
place_all(mobs);
}
#example:_place_self-int__int
data modify storage amethyst:runtime stack append value {}
execute store result storage amethyst:runtime stack[-1].reg_1 int 1 run scoreboard players get amethyst reg_1
execute store result storage amethyst:runtime stack[-1].reg_2 int 1 run scoreboard players get amethyst reg_2
execute store result storage amethyst:runtime stack[-1].reg_0 int 1 run scoreboard players get amethyst reg_0
execute store result score amethyst reg_1 run data get storage example:globals platform.x
$scoreboard players set amethyst reg_0 $(x)
scoreboard players operation amethyst reg_1 += amethyst reg_0
execute store result score amethyst reg_2 run data get storage example:globals platform.z
$scoreboard players set amethyst reg_0 $(z)
scoreboard players operation amethyst reg_2 += amethyst reg_0
execute store result storage amethyst:runtime stack[-1].macros.arg0 int 1 run scoreboard players get amethyst reg_1
data modify storage amethyst:runtime stack[-1].macros.arg1 set from storage example:globals platform.y
execute store result storage amethyst:runtime stack[-1].macros.arg2 int 1 run scoreboard players get amethyst reg_2
function amethyst:zz_internal/d3d0f534-2004-4df7-b91e-60fdd45adb96 with storage amethyst:runtime stack[-1].macros
execute store result score amethyst reg_1 run data get storage amethyst:runtime stack[-1].reg_1
execute store result score amethyst reg_2 run data get storage amethyst:runtime stack[-1].reg_2
execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].reg_0
data remove storage amethyst:runtime stack[-1]
#amethyst:zz_internal/d3d0f534-2004-4df7-b91e-60fdd45adb96
$tp @s $(arg0) $(arg1) $(arg2)
#example:_place_all-minecraft_sheep__
data modify storage amethyst:runtime stack append value {}
execute store result storage amethyst:runtime stack[-1].reg_0 int 1 run scoreboard players get amethyst reg_0
execute store result storage amethyst:runtime stack[-1].reg_1 int 1 run scoreboard players get amethyst reg_1
data modify storage amethyst:runtime stack[-1].frame1.i set value 0
execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].frame1.i
execute store result score amethyst reg_1 run data get storage amethyst:runtime stack[-2].args.mobs
execute if score amethyst reg_0 < amethyst reg_1 run function example:zz_internal/1b805b33-0162-4dbe-84a2-bf8eb03caf69
execute unless data storage amethyst:runtime stack[-1].returning run function example:zz_internal/3534269d-088d-4139-9afa-ebfdc3da8ca9
execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].reg_0
execute store result score amethyst reg_1 run data get storage amethyst:runtime stack[-1].reg_1
data remove storage amethyst:runtime stack[-1]
#example:zz_internal/1b805b33-0162-4dbe-84a2-bf8eb03caf69
data modify storage amethyst:runtime stack[-1].macros.arg0 set from storage amethyst:runtime stack[-1].frame1.i
function amethyst:zz_internal/c7e7b2c6-a64d-4d9f-bae9-9e9d8d000567 with storage amethyst:runtime stack[-1].macros
execute store result storage amethyst:runtime stack[-1].macros.arg0 int 1 run scoreboard players get amethyst reg_0
function amethyst:zz_internal/b2d30daa-a888-45f2-b593-146ffc2f446c with storage amethyst:runtime stack[-1].macros
execute unless data storage amethyst:runtime stack[-1].returning run function example:zz_internal/3c2ca3d4-f664-4e33-8a2c-82b5f7c5ac78
#example:zz_internal/3534269d-088d-4139-9afa-ebfdc3da8ca9
data modify storage amethyst:runtime stack[-1].returning set value true
#example:zz_internal/3bf96f17-67f5-4459-bca7-e80c0cef6180
execute if data storage amethyst:runtime stack[-1].returning run return 0
execute store result score amethyst reg_1 run data get storage amethyst:runtime stack[-1].frame1.i
scoreboard players operation amethyst reg_1 %= amethyst _4
execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].frame1.i
scoreboard players operation amethyst reg_0 /= amethyst _4
execute store result storage amethyst:runtime stack[-1].macros.x int 1 run scoreboard players get amethyst reg_1
execute store result storage amethyst:runtime stack[-1].macros.z int 1 run scoreboard players get amethyst reg_0
function example:_place_self-int__int with storage amethyst:runtime stack[-1].macros
#example:zz_internal/3c2ca3d4-f664-4e33-8a2c-82b5f7c5ac78
execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].frame1.i
scoreboard players operation amethyst reg_0 += amethyst _1
execute store result storage amethyst:runtime stack[-1].frame1.i int 1 run scoreboard players get amethyst reg_0
execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].frame1.i
execute store result score amethyst reg_1 run data get storage amethyst:runtime stack[-2].args.mobs
execute if score amethyst reg_0 < amethyst reg_1 run function example:zz_internal/1b805b33-0162-4dbe-84a2-bf8eb03caf69
execute unless data storage amethyst:runtime stack[-1].returning run function example:zz_internal/3534269d-088d-4139-9afa-ebfdc3da8ca9
#amethyst:zz_internal/c7e7b2c6-a64d-4d9f-bae9-9e9d8d000567
$execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-2].args.mobs[$(arg0)]
#amethyst:zz_internal/b2d30daa-a888-45f2-b593-146ffc2f446c
$execute as @e[scores={amethyst_id=$(arg0)}] run function example:zz_internal/3bf96f17-67f5-4459-bca7-e80c0cef6180
#example:main
data modify storage amethyst:runtime stack append value {}
execute store result storage amethyst:runtime stack[-1].reg_0 int 1 run scoreboard players get amethyst reg_0
data modify storage amethyst:runtime stack[-1].frame1.mobs set value []
execute as @e[type=sheep,limit=16] run function example:zz_internal/32d2f745-ffb6-4a2f-8316-c2186a10d89c
execute unless data storage amethyst:runtime stack[-1].returning run function example:zz_internal/09e8e731-7bea-4b93-ac1b-5e57444f5fe6
execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].reg_0
data remove storage amethyst:runtime stack[-1]
#example:zz_internal/32d2f745-ffb6-4a2f-8316-c2186a10d89c
execute if data storage amethyst:runtime stack[-1].returning run return 0
scoreboard players set amethyst reg_0 0
execute as @s run function amethyst:core/entity/ref
execute if entity @s run execute store result score amethyst reg_0 run data get storage amethyst:runtime stack[-1].ret
execute store result storage amethyst:runtime tmp.be9778ce-5307-49f8-b5f7-b6dee825e8be int 1 run scoreboard players get amethyst reg_0
data modify storage amethyst:runtime stack[-1].frame1.mobs append from storage amethyst:runtime tmp.be9778ce-5307-49f8-b5f7-b6dee825e8be
#example:zz_internal/09e8e731-7bea-4b93-ac1b-5e57444f5fe6
data modify storage amethyst:runtime stack[-1].args.mobs set from storage amethyst:runtime stack[-1].frame1.mobs
function example:_place_all-minecraft_sheep__
data modify storage amethyst:runtime stack[-1].returning set value true
# And much more...
Quickly build and test projects all in the command line
$ amethyst build --run
Hello from Minecraft!