前回の記事で使ったデータパックの話です
Java版マインクラフトのfunction機能
コマンドをファイルにまとめて書いておいて
ワールド内で実行できる機能だ
経緯
今回コマンドで実現したいこと
ネザーで
10*10の100チャンク分
fillコマンドのreplaceで
溶岩を赤いガラスに
砂利を薄灰色のガラスに
ネザーラックを空気に
置換したい
ここで問題になるのが
選択範囲が32768ブロックを超えている。
32*32*32ブロック以上の範囲は
一度にfillすることができない
今回fillしたい範囲は
160*160*20ブロックの範囲
512000ブロック
上限の約16倍もある
という訳で16回に分割して
fillしていく
、、、大変すぎるので
functionにまとめることにした
データパックの構成
functionを利用するためには
データパックにする必要があるらしい
ファイル構成
sumiso/ ←任意の名前
├ pack.mcmeta
└ data/
└ c0db8c/ ←自分の名前(minecraftはNG)
└ functions/ 任意の数のfunctionを用意する
├ replace_gravel.mcfunction
├ replace_lava.mcfunction
└ replace_netherrack.mcfunction
これをマイクラのワールドデータの
datapacksの中に入れる
pack.mcmeta
{
"pack": {
"pack_format": 1,
"description": "Replace the lava and gravel at coordinates (0,5,0) to (159,24,159) with glass, making the nether rack an air block."
}
}
説明文はグーグル先生が考えてくれました
functions
マイクラのコマンドを1行ずつ書く
/は付けない
#はコメント
replace_gravel.mcfunction
#(0,5,0)~(159,24,159)までの砂利を薄灰色ガラスに置換
fill 0 5 0 39 24 39 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 40 5 0 79 24 39 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 80 5 0 119 24 39 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 120 5 0 159 24 39 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 0 5 40 39 24 79 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 40 5 40 79 24 79 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 80 5 40 119 24 79 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 120 5 40 159 24 79 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 0 5 80 39 24 119 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 40 5 80 79 24 119 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 80 5 80 119 24 119 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 120 5 80 159 24 119 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 0 5 120 39 24 159 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 40 5 120 79 24 159 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 80 5 120 119 24 159 minecraft:light_gray_stained_glass replace minecraft:gravel
fill 120 5 120 159 24 159 minecraft:light_gray_stained_glass replace minecraft:gravel
#高さ25の砂利も薄灰色ガラスに置換
fill 0 25 0 159 25 159 minecraft:light_gray_stained_glass replace minecraft:gravel
天井の砂利が降ってくるので
高さ25も対象に含めた
replace_lava.mcfunction
#(0,5,0)~(159,24,159)までの溶岩を赤ガラスに置換
fill 0 5 0 39 24 39 minecraft:red_stained_glass replace minecraft:lava
fill 40 5 0 79 24 39 minecraft:red_stained_glass replace minecraft:lava
fill 80 5 0 119 24 39 minecraft:red_stained_glass replace minecraft:lava
fill 120 5 0 159 24 39 minecraft:red_stained_glass replace minecraft:lava
fill 0 5 40 39 24 79 minecraft:red_stained_glass replace minecraft:lava
fill 40 5 40 79 24 79 minecraft:red_stained_glass replace minecraft:lava
fill 80 5 40 119 24 79 minecraft:red_stained_glass replace minecraft:lava
fill 120 5 40 159 24 79 minecraft:red_stained_glass replace minecraft:lava
fill 0 5 80 39 24 119 minecraft:red_stained_glass replace minecraft:lava
fill 40 5 80 79 24 119 minecraft:red_stained_glass replace minecraft:lava
fill 80 5 80 119 24 119 minecraft:red_stained_glass replace minecraft:lava
fill 120 5 80 159 24 119 minecraft:red_stained_glass replace minecraft:lava
fill 0 5 120 39 24 159 minecraft:red_stained_glass replace minecraft:lava
fill 40 5 120 79 24 159 minecraft:red_stained_glass replace minecraft:lava
fill 80 5 120 119 24 159 minecraft:red_stained_glass replace minecraft:lava
fill 120 5 120 159 24 159 minecraft:red_stained_glass replace minecraft:lava
#高さ25の溶岩も赤ガラスに置換
fill 0 25 0 159 25 159 minecraft:red_stained_glass replace minecraft:lava
天井の溶岩も流れてくるので
高さ25も含めた
壁面は手動
replace_netherrack.mcfunction
#(0,5,0)~(159,24,159)までのネザーラックを空気に置換
fill 0 5 0 39 24 39 minecraft:air replace minecraft:netherrack
fill 40 5 0 79 24 39 minecraft:air replace minecraft:netherrack
fill 80 5 0 119 24 39 minecraft:air replace minecraft:netherrack
fill 120 5 0 159 24 39 minecraft:air replace minecraft:netherrack
fill 0 5 40 39 24 79 minecraft:air replace minecraft:netherrack
fill 40 5 40 79 24 79 minecraft:air replace minecraft:netherrack
fill 80 5 40 119 24 79 minecraft:air replace minecraft:netherrack
fill 120 5 40 159 24 79 minecraft:air replace minecraft:netherrack
fill 0 5 80 39 24 119 minecraft:air replace minecraft:netherrack
fill 40 5 80 79 24 119 minecraft:air replace minecraft:netherrack
fill 80 5 80 119 24 119 minecraft:air replace minecraft:netherrack
fill 120 5 80 159 24 119 minecraft:air replace minecraft:netherrack
fill 0 5 120 39 24 159 minecraft:air replace minecraft:netherrack
fill 40 5 120 79 24 159 minecraft:air replace minecraft:netherrack
fill 80 5 120 119 24 159 minecraft:air replace minecraft:netherrack
fill 120 5 120 159 24 159 minecraft:air replace minecraft:netherrack
実行
マイクラのワールドに入り
/function
と打つと予測が出るので
選んで実行
出ないときは
/reload
してみたり
スペルミスが無いか確認する
functionsフォルダーだけは
「s」が付くので注意
あとはもっとわかりやすい
解説をしているページを探してください
先に砂利と溶岩の置換をしてから
ネザーラックの除去を行う
コマンドの実行数が多いので
連続して実行すると
うまく置換されないことがあった
ので、少し時間を置いて実行する
(PCのスペック次第)
これでやっと検証ができる
参考サイト