sumisoクラフト

sumisoクラフトはてなブログ拠点

functionで100チャンクfillする

 

前回の記事で使ったデータパックの話です

sumiso-c0db8c.hatenablog.com

 

 

 

Java版マインクラフトのfunction機能

 

コマンドをファイルにまとめて書いておいて

ワールド内で実行できる機能だ

 

 

 

 

経緯

今回コマンドで実現したいこと

 

ネザーで

10*10の100チャンク分

 

fillコマンドのreplaceで

溶岩を赤いガラスに

砂利を薄灰色のガラスに

ネザーラックを空気に

置換したい

 

ここで問題になるのが

選択範囲が32768ブロックを超えている。

コマンド/fill - Minecraft Wiki

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のスペック次第)

 

 

これでやっと検証ができる

sumiso-c0db8c.hatenablog.com

 

参考サイト

【Minecraft】Functionとは!初心者に向けてシンプル解説(Var1.13〜) | モダンクラフト研究会