Magicode logo
Magicode
1

pythonでマイクラのfillコマンドを分割生成

5 min read

恐らくMagicode初のマイクラ関連投稿です。

fillコマンドの仕様

本記事は統合版マイクラを前提としています。

fillコマンドは指定した範囲をブロックで埋めるマイクラのコマンドです。

/fill <from:x y z> <to: x y z> <tileName:Block> <blockStates:blockstates>

指定できる範囲には上限があり
32 ^ 3 = 32768 ブロック
までとなっています。

これは実際に埋められたブロック数(replaceの対象など)ではなく
対象となる範囲全体のブロック数です。

32768ブロック以上の範囲を指定するとエラーになります。

pythonでfillコマンドを分割する

広範囲を一度にfillすることはできないため、
fillの対象となる範囲を分割、32768ブロック以下になるようにします。


1辺の長さが32以下になるように座標を分割
fillコマンドに成形します。

定数・関数


座標の指定

開始座標より終了座標が大きくなるようにします。


fillコマンド生成


生成したfill 48 fill -32 63 1021 -1 94 1052 stone 0 replace air 0 fill -32 63 1053 -1 94 1084 stone 0 replace air 0 fill -32 63 1085 -1 94 1116 stone 0 replace air 0 fill -32 63 1117 -1 94 1148 stone 0 replace air 0 fill -32 63 1149 -1 94 1180 stone 0 replace air 0 fill -32 63 1181 -1 94 1203 stone 0 replace air 0 fill -32 95 1021 -1 126 1052 stone 0 replace air 0 fill -32 95 1053 -1 126 1084 stone 0 replace air 0 fill -32 95 1085 -1 126 1116 stone 0 replace air 0 fill -32 95 1117 -1 126 1148 stone 0 replace air 0 fill -32 95 1149 -1 126 1180 stone 0 replace air 0 fill -32 95 1181 -1 126 1203 stone 0 replace air 0 fill 0 63 1021 31 94 1052 stone 0 replace air 0 fill 0 63 1053 31 94 1084 stone 0 replace air 0 fill 0 63 1085 31 94 1116 stone 0 replace air 0 fill 0 63 1117 31 94 1148 stone 0 replace air 0 fill 0 63 1149 31 94 1180 stone 0 replace air 0 fill 0 63 1181 31 94 1203 stone 0 replace air 0 fill 0 95 1021 31 126 1052 stone 0 replace air 0 fill 0 95 1053 31 126 1084 stone 0 replace air 0 fill 0 95 1085 31 126 1116 stone 0 replace air 0 fill 0 95 1117 31 126 1148 stone 0 replace air 0 fill 0 95 1149 31 126 1180 stone 0 replace air 0 fill 0 95 1181 31 126 1203 stone 0 replace air 0 fill 32 63 1021 63 94 1052 stone 0 replace air 0 fill 32 63 1053 63 94 1084 stone 0 replace air 0 fill 32 63 1085 63 94 1116 stone 0 replace air 0 fill 32 63 1117 63 94 1148 stone 0 replace air 0 fill 32 63 1149 63 94 1180 stone 0 replace air 0 fill 32 63 1181 63 94 1203 stone 0 replace air 0 fill 32 95 1021 63 126 1052 stone 0 replace air 0 fill 32 95 1053 63 126 1084 stone 0 replace air 0 fill 32 95 1085 63 126 1116 stone 0 replace air 0 fill 32 95 1117 63 126 1148 stone 0 replace air 0 fill 32 95 1149 63 126 1180 stone 0 replace air 0 fill 32 95 1181 63 126 1203 stone 0 replace air 0 fill 64 63 1021 71 94 1052 stone 0 replace air 0 fill 64 63 1053 71 94 1084 stone 0 replace air 0 fill 64 63 1085 71 94 1116 stone 0 replace air 0 fill 64 63 1117 71 94 1148 stone 0 replace air 0 fill 64 63 1149 71 94 1180 stone 0 replace air 0 fill 64 63 1181 71 94 1203 stone 0 replace air 0 fill 64 95 1021 71 126 1052 stone 0 replace air 0 fill 64 95 1053 71 126 1084 stone 0 replace air 0 fill 64 95 1085 71 126 1116 stone 0 replace air 0 fill 64 95 1117 71 126 1148 stone 0 replace air 0 fill 64 95 1149 71 126 1180 stone 0 replace air 0 fill 64 95 1181 71 126 1203 stone 0 replace air 0

ビヘイビアーパック作成

生成したfillコマンドを1つ1つコピペして実行するのは大変なので
ビヘイビアーパックのfunctionにします。

構成

ビヘイビアーパック/ ←任意の名前
 ├ manifest.json
 └ functions/
   └ fillcommand.mcfunction ←任意の名前.mcfunction

manifest.jsonは生成サイトを利用するのが楽です。

テキストファイルに作成したfillコマンドを貼り付け
拡張子を.mcfunctionにします。

ビヘイビアーパックフォルダごとzipに圧縮します。
zipファイルの拡張子を.mcpackに書き換えるとマイクラのアイコンになります。
クリックすると自動でマイクラにインポートされます。

適当なワールドを選択または作成し、
設定画面のビヘイビアーパックから
作成したパックを選択します。

ワールドに入り、コマンドに

/function 

と入力すると作成したmcfunctionが選択できます。
実行するとmcfunctionに記述されたコマンドが一度に実行されます。
コマンドの数やマシンスペックによっては重くなるのでご注意ください。

functionの公式ドキュメントはこちら
https://docs.microsoft.com/ja-jp/minecraft/creator/documents/functionsintroduction

Discussion

コメントにはログインが必要です。