mcfunction宏解说
宏()是什么?
在功能中,将命令行的一部分设置为未确定,并在执行函数命令时根据指定的NBT值确定未确定的部分,以执行函数的功能。
基础用法
假设有一个包含setblock命令的函数。
setblock ~ ~ ~ stone
很显然,以这种方式无法放置除石头以外的方块。
因此,我将尝试使用宏来将指定放置方块的部分设置成未确定状态。
$setblock ~ ~ ~ $(block)
マクロを使用する行では最初に$を付けます。
マクロで未確定にする部分は$(任意の名前)と書きます。
今回このマクロはblockという名前にしました。
このマクロが含まれたファンクションは次の様なfunctionコマンドから実行します。
function func:setblock {block:"glass"}
在被{}括起来的NBT中,有一个名为block的标签。
こうすることで$(block)の部分が{block:”glass”}のglassで確定させられます。
つまり
$setblock ~ ~ ~ $(block)
哦。
setblock ~ ~ ~ glass
由于转换,将会得到一个玻璃的安装结果。
通过使用NBT引用
在function命令中指定的NBT可以使用with语句来引用存储等。
data modify storage strg: setblk set value {block:"glass"}
function func:setblock with storage strg: setblk
$setblock ~ ~ ~ $(block)
setblock ~ ~ ~ glass
因此,现在可以通过存储在存储设备中的区块数据进行setblock等以前难以实现的操作。
“案例应用”
使用data命令动态更改列表的索引(指定第几个)。
$data get storage strg: list[$(index)]
使用function命令动态更改要执行的函数。
$function $(func)