マインクラフトで再現する中世城郭#5-1

(4)マインクラフトのPython Modで標高データから地形を作成(前半)

<MODの導入>

用意した地理情報をマインクラフトに取り込むため、マインクラフト上から外部のプログラムを呼び出すためのMOD(Raspberry Jam Mod)を事前に導入します。Raspberry Jam Modの最新版が、マインクラフト1.12.2にしか対応していないため、いったん古いバージョンに導入します(ここからダウンロード)。

<データファイルのコピー>

Raspberry Jam Modを導入すると、マインクラフトのフォルダに新しく「mcpipy」というフォルダが作成されます。ここに(2)で作成したデータファイル「npy_5x5-5339-31-72.npy(例)」をコピーします。

<ブロック配置のプログラム>

マインクラフト上から実行するブロック配置のPythonプログラム「loadnpy.py」を同じ「mcpipy」フォルダ内に配置します。

loadnpy.py

# coding: utf-8

import mcpi.minecraft as minecraft
import mcpi.block as block
import numpy as np
import sys
from time import sleep

NPY_DIR = "./"
NPY_FILE = "npydata-{0:04d}-{1:02d}-{2:02d}.npy"

mc = minecraft.Minecraft()
mc.postToChat("Loadnpy.py Start!")

if len(sys.argv) < 4:
    print("loadnpy.py mesh1 mesh2 mesh3")
    exit(-1)

mesh1 = int(sys.argv[1])
mesh2 = int(sys.argv[2])
mesh3 = int(sys.argv[3])

array = np.load(NPY_DIR+"/"+NPY_FILE.format(mesh1, mesh2, mesh3))
(zshape, xshape) = array.shape

for z in range(zshape):
    sleep(0.01)  # sleep1
    for x in range(xshape):
        hval = array[z][x]
        mc.setBlocks(x, hval-1, z, x, hval-5, z, block.DIRT)
        mc.setBlock(x, hval, z, block.GRASS)
        sleep(0.001)  # sleep2

mc.postToChat("Loadnpy.py Finish!!!")

配置が終わったら、改めてバージョン1.12.2のマインクラフトに入りなおします。MODを確認しRaspberry Jam Modが有効になっていることを確認します。最初の画面で「Mods」を選択します。

左側のMOD一覧の一番下を見ると、Raspberry Jam Modが導入されていることが確認できます。

これで準備は終わりです。

フォロー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です