5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

mcfunctionマクロ解説

Last updated at Posted at 2023-08-05

マクロとは

ファンクション内のコマンド行の一部分を未確定にして書き、functionコマンドの実行時に指定したNBTの値から未確定の部分を確定させてファンクションを実行する機能です。

基本の使い方

例えばsetblockコマンドが書かれたファンクションがあるとします。

setblock.mcfunction
setblock ~ ~ ~ stone

当たり前ですがこのままでは石以外のブロックを設置することはできません。

そこで設置するブロックの指定部分をマクロで未確定にしてみます。

setblock.mcfunction
$setblock ~ ~ ~ $(block)

マクロを使用する行では最初に$を付けます。
マクロで未確定にする部分は$(任意の名前)と書きます。
今回このマクロはblockという名前にしました。

このマクロが含まれたファンクションは次の様なfunctionコマンドから実行します。

main.mcfunction
function func:setblock {block:"glass"}

{}で囲われたNBTの中にblockという名前のタグが入っています。

こうすることで$(block)の部分が{block:"glass"}glassで確定させられます。

つまり

setblock.mcfunction
$setblock ~ ~ ~ $(block)

setblock ~ ~ ~ glass

に変換されるため、実行の結果ガラスが設置されます。

withによるNBT参照

functionコマンドで指定するNBTはwithでストレージなどを参照可能です。

main.mcfunction
data modify storage strg: setblk set value {block:"glass"}
function func:setblock with storage strg: setblk
setblock.mcfunction
$setblock ~ ~ ~ $(block)
setblock ~ ~ ~ glass

そのためストレージに保存されたブロックのデータからsetblockをするなどの
今まで難しかったことが可能になりました。

使用例

dataコマンドでリストのインデックス(何番目かの指定)を動的に変更する

$data get storage strg: list[$(index)]


functionコマンドで実行するファンクションを動的に変更する

$function $(func)
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?