/fill <from:x y z> <to: x y z> <tileName:Block> <blockStates:blockstates>
32 ^ 3 = 32768 ブロック
# 定数
SPACE = " "
FILL = "fill"
# タプルでの位置(X, Y, Z)
X = 0
Y = 1
Z = 2
# 分割座標のfromリストを作成
def create_from_coordinates(coordinate, end_coordinate):
# 最初と最後の座標が同じ場合
if coordinate == end_coordinate:
return [coordinate, end_coordinate]
coordinate_divisions = []
# 32ずつ分割
while coordinate < end_coordinate:
coordinate_divisions.append(coordinate)
coordinate = coordinate + 32
# 最後のエリアの1辺の長さが33になる場合
if coordinate == end_coordinate:
coordinate_divisions.append(end_coordinate - 1)
# 最後の座標
coordinate_divisions.append(end_coordinate)
return coordinate_divisions
# fromの座標からtoの座標を生成する
def create_to_coordinate(position, coordinate_divisions):
length = len(coordinate_divisions)
if position == length - 2:
# 最後の座標を返す
return str(coordinate_divisions[length - 1])
# 次の座標 -1 を返す
return str(coordinate_divisions[position + 1] - 1)
# 開始座標(北西の角)
start_coordinate = (-32, 63, 1021)
# 終了座標(南東の角)
end_coordinate = (71, 126, 1203)
# 埋めるブロック
fill_block = "stone 0"
# 必要なものを一つコメントアウトしてください。
# option = "" # 指定なし
# option = "\n" # 改行コード
option = SPACE + "replace air 0" # 置換
# option = SPACE + "destroy"
# 各座標軸の分割リストを生成
x_division = create_from_coordinates(start_coordinate[X], end_coordinate[X])
y_division = create_from_coordinates(start_coordinate[Y], end_coordinate[Y])
z_division = create_from_coordinates(start_coordinate[Z], end_coordinate[Z])
# 生成したfillコマンド
command = []
for x in range(len(x_division) - 1):
x_from = str(x_division[x])
x_to = create_to_coordinate(x, x_division)
for y in range(len(y_division) - 1):
y_from = str(y_division[y])
y_to = create_to_coordinate(y, y_division)
for z in range(len(z_division) - 1):
z_from = str(z_division[z])
z_to = create_to_coordinate(z, z_division)
# コマンド用テキスト生成
fill_from = x_from + SPACE + y_from + SPACE + z_from
fill_to = x_to + SPACE + y_to + SPACE + z_to
_command = FILL + SPACE + fill_from + SPACE + fill_to + SPACE + fill_block + option
command.append(_command)
print("生成したfill", len(command))
# 表示
for c in command:
print(c)
ビヘイビアーパック/ ←任意の名前
├ manifest.json
└ functions/
└ fillcommand.mcfunction ←任意の名前.mcfunction
.mcfunction
にします。.mcpack
に書き換えるとマイクラのアイコンになります。/function