コマンド構文解説-ブロックを自由に設置!/fill, /setblock-
投稿日:2021/02/13
最終更新日:2021/09/26
どうも、ユキミ大福です。
今回はMinecraft統合版のコマンドである『 /fill 』及び『 /setblock 』について解説をしていきます。
ここで解説するコマンド等は、解説する注意事項等をよく読み、個人でより詳しく調べた上で、個人の責任において使用して下さい。コマンド等の使用によって如何なる損害が発生しても、筆者であり当ブログの管理者でもあるわたくしユキミ大福は一切の責任を負いかねますので、ご了承下さい。
今回のコマンドは?
今回ご紹介するコマンドは『 /fill (フィル)』と『 /setblock (セットブロック)』です。このコマンドはどちらも、指定したブロックを指定した座標に設置するというコマンドです。
この2つのコマンドの違いについては、それぞれのコマンドを解説しながら学んでいきましょう。まずは /setblock から解説していきます。
/setblock のコマンド構文
/setblock <座標(int)> <ブロックID> <データ値(int)> <元々のブロックの処理>
/setblock <座標(int)> <ブロックID> <データ値(int)> replace <置換元ブロックID> <置換元データ値(int)>
- <座標(int)>:必須
XYZ座標をint型で指定するか相対座標を入力する。相対座標を入力する場合、基準座標からの距離を指定する。 - <ブロックID>:必須
ブロックID。 - <データ値(int)>:省略可。<元々のブロックの処理>を指定する場合は必須
ブロックのデータ値をint型の数値で指定する。省略した場合は「0」として扱われる。データ値が特に存在しないブロックを設置する場合にこの後の<元々のブロックの処理>を指定したい場合、「0」を入力する必要がある。 - <元々のブロックの処理>:省略可
指定した座標に元々存在するブロックの扱いを設定する。モードは以下の3種類で、指定しなかった場合はreplaceとして扱われる。
・destroy:指定した座標に元々存在するブロックを破壊し、そのブロック及びそのブロックに入っていたアイテムをドロップさせた上でブロックを置換する。破壊音も鳴る。要は適正ツールで破壊した扱いとして元あったブロックを破壊するモード。
・keep:指定した座標に存在するのが空気ブロック(air 0)だった場合のみ置換する。その他はreplaceと同じ。
・replace:指定した座標のブロックを単純に置換する。元々あったブロックやその中のアイテムがドロップすることはなく、破壊音も鳴らない。この後に<置換元ブロックID>や<置換元データ値int>を指定すると、指定したブロックがその指定した座標に存在する場合にのみ、指定したブロックを設置する。
- <置換元ブロックID>:省略可
指定した座標に元々存在するブロックのブロックID。 - <置換元データ値(int)>:省略可
指定した座標に元々存在するブロックのデータ値をint型の数値で指定する。省略した場合、データ値が無視される(ブロックIDだけで判断する)。
/setblock の失敗条件
- 構文が適切でない(スペルミス等)。
- 指定した座標に既に同じデータ値のブロックが存在する場合(keep、replaceの場合)。
- 空気ブロック(air 0)を指定している場合(keepの場合)。
- 指定した座標が読み込まれているチャンク内に存在していない。
/setblock の成功条件
- 上記の失敗条件を満たしていない場合。
- destroyの場合、例え空気ブロック(air 0)の座標を指定しても成功する。
- destroyで元々あった、ダイヤモンド鉱石等のシルクタッチの有無でドロップアイテムが変わるブロックを破壊した場合には、シルクタッチ無しの適正ツールで破壊した扱いになる。
/setblock の実行例
例1)
コマンド:/setblock 100 70 120 redstone_block
実行結果:座標( 100, 70, 120 )にあるブロックをレッドストーンブロック(redstone_block 0)に置換する。
例2)
コマンド:/setblock ~ ~5 ~ stone 0 replace air 0
実行結果:基準座標から高さ5ブロックの位置にあるブロックが空気ブロック(air 0)の場合、それを焼き石(stone 0)に置換する。
例3)
コマンド:/setblock ~ ~5 ~ stone 0 keep
実行結果:基準座標から高さ5ブロックの位置にあるブロックが空気ブロック(air 0)の場合、それを焼き石(stone 0)に置換する。
例4)
コマンド:/setblock 150 10 210 iron_block 0 destroy
実行結果:座標( 100, 70, 120 )にあるブロックを適正ツールで破壊し、鉄ブロック(iron_block 0)に置換する。
/setblock の詳細解説
/setblock の概要
/setblock は指定した座標のブロックを指定したブロックで置換するコマンドで、その性質上、一度に置換できるブロックは1つだけです。それ以外に関しては、ブロックのデータ値にさえ気を付ければさほど難しくないコマンドです。
上の例の例2と例3ですが、書き方が異なるものの同じ挙動をするコマンドになっています。keepに関してはreplace air 0と書くこともできるので、実質覚える必要があるのはdestroyとreplaceのみになります。
/setblock の実行結果等々
コマンドがエラーとなった場合には以下のように返ってきます。
- 「そのブロックは設置できません」
<元々のブロックの処理>がdestroy以外の時に、設置するブロックが元々存在するブロックと全く同じ場合、または<元々のブロックの処理>がkeepの時に空気ブロック(air 0)を設置しようとした場合のエラー。 - 「世界の範囲外にブロックを設置することはできません」
<座標(int)>がロードされているチャンク内に存在しない場合のエラー。
コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」のみです。成功した場合、RSコンパレーターを用いてRS動力を取り出すと必ず1になります。
/setblock の強み・使い道
ゲーム制作においては、もっぱらRS回路及びコマンドブロックの起動・停止の制御に用いられます。大体RSブロックを設置するかRSブロックを空気に置換してます。RSブロックの形でRS動力を無線通信させる目的もあります。
また、/give, /replaceitem の回でチラッと触れた、金床でエンチャントや名前を付与したアイテムを配布する方法の一部としても使うことができます。なお、その具体的な方法についてはこの /setblock とあともう1つ、「/clone」が必要になるため、↓ の「/clone」の解説をご覧下さい。
/setblock の弱み・弱点
このコマンドにこれといった弱点は存在しませんが、強いて言うなら簡単なコマンドであることだと思います。あまりにも成功しやすいコマンドなので、座標ミスやブロックの種類のミスなどには注意しましょう。
さて、続いては /fill です。/setblock との違いにも注目して見てみましょう。
/fill のコマンド構文
/fill <座標1(int)> <座標2(int)> <ブロックID> <データ値(int)> <元々のブロックの処理>
/fill <座標1(int)> <座標2(int)> <ブロックID> <データ値(int)> replace <置換元ブロックID> <置換元データ値(int)>
- <座標1(int)><座標2(int)>:必須
XYZ座標をint型で指定するか相対座標を入力する。相対座標を入力する場合、基準座標からの距離を指定する。ここで指定した座標を対角とする直方体状の範囲が指定範囲になる。 - <ブロックID>:必須
ブロックID。 - <データ値(int)>:省略可。<元々のブロックの処理>を指定する場合は必須
ブロックのデータ値をint型の数値で指定する。省略した場合は「0」として扱われる。データ値が特に存在しないブロックを設置する場合にこの後の<元々のブロックの処理>を指定したい場合、「0」を入力する必要がある。 - <元々のブロックの処理>:省略可。
指定した座標に元々存在するブロックの扱いを設定する。モードは以下の5種類で、指定しなかった場合はreplaceとして扱われる。
・destroy:指定した座標に元々存在するブロックを破壊し、そのブロック及びそのブロックに入っていたアイテムをドロップさせた上でブロックを置換する。破壊音も鳴る。要は適正ツールで破壊した扱いとして元あったブロックを破壊するモード。
・keep:指定した座標に存在するのが空気ブロック(air 0)だった場合のみ置換する。その他はreplaceと同じ。
・replace:指定した座標のブロックを単純に置換する。元々あったブロックやその中のアイテムがドロップすることはなく、破壊音も鳴らない。この後に<置換元ブロックID>や<置換元データ値int>を指定すると、指定したブロックがその指定した座標に存在する場合にのみ、指定したブロックを設置する。
・hollow:指定範囲の枠部分のみを指定したブロックに置換し、内側を空気ブロック(air 0)に置換する。指定範囲が小さく、内側が存在しない場合はreplaceと同じ挙動になる。
・outline:指定範囲の枠部分のみを指定したブロックに置換し、内側のブロックには影響を与えない。指定範囲が小さく、内側が存在しない場合はreplaceと同じ挙動になる。
- <置換元ブロックID>:省略可。
指定した座標に元々存在するブロックのブロックID。 - <置換元データ値(int)>:省略可。
指定した座標に元々存在するブロックのデータ値をint型の数値で指定する。省略した場合、データ値が無視される(ブロックIDだけで判断する)。
/fill の失敗条件
- 構文が適切でない(スペルミス等)。
- 指定範囲のブロック数が32768ブロック以下でない。
- 指定範囲に既に存在するブロックが全て、指定したブロックと同じデータ値のブロックの場合(keep、replace、outlineの場合)。
- hollowの場合、指定範囲に既に存在するブロックが全て、指定したブロックと同じデータ値のブロックで、かつ指定範囲の内側が全て空気ブロック(air 0)の場合。
- 空気ブロック(air 0)を指定している場合(keepの場合)。
- 指定した座標が読み込まれているチャンク内に存在していない。
/fill の成功条件
- 上記の失敗条件を満たしていない場合。
- destroyの場合、例え空気ブロック(air 0)しかない範囲を指定しても成功する。
- destroyで元々あった、ダイヤモンド鉱石等のシルクタッチの有無でドロップアイテムが変わるブロックを破壊した場合には、シルクタッチ無しの適正ツールで破壊した扱いになる。
- いずれのモードでも、1つでも置換に成功すれば成功扱いになる。
/fill の実行例
例1)
コマンド:/fill 100 70 120 115 75 130 air
実行結果:座標( 100, 70, 120 )と( 115, 75, 130 )を対角とする直方体状範囲にあるブロックを全て空気ブロック(air 0)に置換する。
例2)
コマンド:/fill ~ ~5 ~ ~ ~10 ~ stone 0 replace air 0
実行結果:「基準座標から高さ5ブロックの位置」~「基準座標から高さ10ブロックの位置」にある空気ブロック(air 0)全てを焼き石(stone 0)に置換する。
例3)
コマンド:/fill ~ ~5 ~ ~ ~10 ~ stone 0 keep
実行結果:「基準座標から高さ5ブロックの位置」~「基準座標から高さ10ブロックの位置」にある空気ブロック(air 0)全てを焼き石(stone 0)に置換する。
例4)
コマンド:/fill 150 10 210 150 10 220 iron_block 0 destroy
実行結果:座標( 100, 70, 120 )と( 115, 75, 130 )を対角とする直方体状範囲にあるブロックを全て適正ツールで破壊し、鉄ブロック(iron_block 0)に置換する。
例5)
コマンド:/fill -110 80 -220 -120 65 -280 concrete 0 hollow
実行結果:座標( -110, 80, -220 )と( -120, 65, -280 )を対角とする直方体状範囲の枠部分にあるブロックを全て白のコンクリート(concrete 0)に置換し、さらにその内側のブロックを全て空気ブロック(air 0)に置換する。
例6)
コマンド:/fill 100 70 120 100 70 120 redstone_block
実行結果:座標( 100, 70, 120 )にあるブロックをレッドストーンブロック(redstone_block 0)に置換する。
/fill の詳細解説
/fill の概要
/fill は指定した座標2点を対角とした直方体状の範囲内に存在するブロックを全て、指定したブロックで置換するコマンドで、/setblock と異なり、一度に複数のブロックを設置できるのが特徴です。
上の例の例2と例3ですが、書き方が異なるものの同じ挙動をするコマンドになっています。destroy、keep、replaceの動作については /setblock の時と同じなので、セットで覚えましょう。
また、上の例の例6ですが、このように<座標1(int)>と<座標2(int)>は同じ座標を指定することもできます。例6の場合は /setblock の例1と同じ挙動になります。要するに、<座標1(int)>と<座標2(int)>に同じ座標を指定すれば /fill で /setblock の代わりを務めさせることができます。
/fill の実行結果等々
コマンドがエラーとなった場合には以下のように返ってきます。
- 「0個のブロックで満たしました」
<元々のブロックの処理>がdestroy以外の時に、設置するブロックが元々存在するブロックと全く同じ場合、または<元々のブロックの処理>がkeepの時に空気ブロック(air 0)を設置しようとした場合のエラー。 - 「指定した領域にあるブロックが多すぎます ((指定領域の体積) > 32768)」
<座標1(int)><座標2(int)>で指定した領域の体積が32768ブロック以下でない場合のエラー。 - 「世界の範囲外にブロックを設置することはできません」
<座標1(int)><座標2(int)>で指定した領域の全てがロードされているチャンク内に収まっていない場合のエラー。
失敗した場合には「0個のブロックで満たした」または「指定した範囲内のブロックが多すぎる」と返って来ます。
コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」のみです。成功した場合、RSコンパレーターを用いてRS動力を取り出すと必ず1になります。
/fill の強み・使い道
/setblock とは異なり、複数のブロックをまとめて置換できるため、RS回路及びコマンドブロックの起動・停止の制御だけでなく、単純に大規模な建築・整地にも使えます。建築や整地の規模が大きいほど /fill は大活躍できます。
/fill の弱み・弱点
このコマンドの最大の弱点はその影響力の大きさです。このコマンドでは最大で32768ものブロックをまとめて置換できてしまいます。そのため、特に「destroy」では破壊するブロックの数やブロックのドロップの有無( /gamemode で言うところの dotiledrops )に気を付けましょう。destroyモードでの実行によってとんでもない量のアイテムがドロップしてしまい、ワールドがまともに動かなくなったり破損する可能性があります。
またワールド破損まで行かなくとも、範囲指定ミスで大事な建造物を復旧不可能・困難なレベルで破壊してしまうおそれもあります。指定範囲が大きければ大きいほど、ワールドのバックアップを取っておくなどしておくと良いでしょう。
影響力が大きいだけに注意点が多いですが、非常に便利なコマンドなので上手に使いましょう。
今回のまとめ
- 『 /setblock 』は指定した座標のブロックを、指定したブロックに置換するコマンド!
- 『 /fill 』は指定した座標2点を対角とする直方体状の範囲内全てのブロックを、指定したブロックに置換するコマンド!
- どちらのコマンドも、元々存在していたブロックをどうするかについて設定できる!
関連記事
- コマンド構文解説-霧を操る…?/fog-
- コマンド構文解説-エンティティにライド・オン!/ride-
- コマンド構文解説-モブがアクションを起こす!?/event, /mobevent-
- コマンド構文解説-あのモブのあのモーションを!?/playanimation-
- コマンド構文解説-何が起こるんだ!?PART1!/connect ( /wsserver ), /help ( /? ), /kick
- コマンド構文解説-何が起こるんだ!?PART2!/list, /locate, /schedule-
- コマンド構文解説-コマンドに革命を起こす…!?/function, /reload-
当記事及び当ブログへのご意見・ご質問はいつでも受け付けております。
お気軽にコメント欄までどうぞ!
↓良ければポチッとお願いします。