マインクラフトで冒険に夢中になっていたら、いつの間にか夜に……ということはありませんか?
ゾンビやクリーパーから身を守れる安全な拠点を、パッと作れたら便利ですよね。
この記事では、Pythonを使ってマインクラフト内にかんたんな拠点を作るプログラムを紹介します。
プログラミングで、安全に夜をすごせるシェルターを作ってみましょう!
マインクラフトとPythonの連携について
マインクラフトをPythonで操作するためには、特定の環境が必要です。
セットアップ方法については、前回の記事でくわしく説明しているので、まだ準備ができていない方はそちらをチェックしてみてください。
マイクラでは座標を使って場所を指定する
マインクラフト内では、ブロックを設置する際に「座標」を使って場所を指定します。
座標とは、位置を表すための数字の組み合わせです。マイクラでは「x、y、z」の3つの軸で表します。
- x軸 … 東西の方向(東がプラス、西がマイナス)
- y軸 … 上下の方向(上がプラス、下がマイナス)
- z軸 … 南北の方向(南がプラス、北がマイナス)
前回の記事で座標の取り扱い方をくわしく説明しているので、座標についてよく分からない人はそちらを確認してください。
プログラム概要
今回作成するプログラムでは、プレイヤーの位置を基準にして、となりにオークの木材でできた立方体の建物を作ります。
いわゆる「とうふ建築」というやつですね。
建物の中にドアとベッドを置いて、かんたんな拠点として使えるようにします。
完成したソースコード
以下は、今回作成するプログラムのソースコードです。
import mcpi.minecraft as minecraft
# Minecraftに接続
mc = minecraft.Minecraft.create()
# プレイヤーの座標を取得
x, y, z = mc.player.getPos()
x += 1
# 立方体を設置 オークの木材
mc.setBlocks(x, y - 1, z, x + 4, y + 3, z + 4, 5, 0)
# 立方体の中をくり抜く
mc.setBlocks(x + 1, y, z + 1, x + 3, y + 2, z + 3, 0)
# ドアをつける
mc.setBlock(x + 3, y, z, 64, 1) # オークのドア下:南:閉
mc.setBlock(x + 3, y + 1, z, 64, 9) # オークのドア上:南:閉
# ベッドを設置
mc.setBlock(x + 1, y, z + 1, 26, 0) # 足側
mc.setBlock(x + 1, y, z + 2, 26, 8) # 頭側
プログラムの説明
以下の手順で拠点を作成します。
プレイヤーの座標を取得する
まず、プレイヤーの座標を取得し、その値を変数x、y、zに代入します。
次の行にある「x += 1」は、「x = x + 1」と同じ意味です。変数xの値に1を足し、その結果を再びxに代入します。
この処理は、プレイヤーのすぐとなり(1マス横)に建物を作って、プレイヤーが建物の中にうまらないようにするためです。
立方体の建物を作る
プレイヤーの位置から1マスとなりに、オークの木材で立方体の建物を作ります。
mc.setBlocks(x1, y1, z1, x2, y2, z2, block_id)は、指定した範囲にブロックを設置する命令です。fillコマンドと同じように、広い場所にブロックをならべられます。
範囲を指定するには、「始まり」と「終わり」の2つの点の座標を使います。x1, y1, z1が範囲の開始地点で、x2, y2, z2が範囲の終了地点です。
たとえば今回の場合、「右下の角」を始まり、「左上の角」を終わりとするようなイメージです。これで、その範囲すべてにブロックを置くことができます。
また、block_idで設置するブロックの種類を指定します。ここではオークの木材のID「5」を使用しています。
立方体の中をくりぬく
次に、作った立方体の中をくりぬきます。
立方体の座標より1マス内側に範囲を指定しています。
- x軸:立方体の始点 x から1マス内側の x + 1 から、4マス目の x + 3 まで。
- y軸:立方体の床(y – 1)の上にある y から始まり、天井の手前(y + 2 まで)。
- z軸:立方体の始点 z から1マス内側の z + 1 から、4マス目の z + 3 まで。
この範囲を空気ブロック(ブロックID 0)でうめることで、立方体の内部にスペースができます。
ドアをつける
mc.setBlock()を使って建物の出入口にオークのドアを設置します。
mc.setBlock(x + 3, y + 1, z, 64, 9) # オークのドア上:南:閉
ドアは上下で別々のデータ番号を持っているため、下側と上側に分けて設置します。
ベッドを置く
最後に、建物の中にベッドを置きましょう。
mc.setBlock(x + 1, y, z + 2, 26, 8) # 頭側
ベッドも頭側と足側で分けて設置します。
実行してみよう!
プログラムが完成したら「shelter.py」という名前でファイルを保存し、実行してみましょう。
プレイヤーのとなりにオークの木材でできた建物が作られているのを確認できるはずです。
ベッドも設置できました。これで夜も安心ですね!
まとめ
Pythonを使ってマインクラフト内にかんたんな拠点を作るプログラムを紹介しました。
- mc.setBlocks(x1, y1, z1, x2, y2, z2, block_id):指定した範囲に任意の種類のブロックを設置する。
x1, y1, z1:開始地点の座標
x2, y2, z2:終了地点の座標
block_id:設置するブロックの種類(ブロック番号とデータ番号)
mc.setBlocks()を使うと、大きな建物や構造物を作成できるようになります。ぜひチャレンジしてみてくださいね!