ブロック設置

目標 : 自分の頭上に DIAMOND_OREブロックを置く!

f:id:pongsuke:20160530175431p:plain

ながれとしては、

1 自分の座標を取得する

2 自分の座標の上にブロックを設置する

練習 自分の座標を取得し、チャットエリアに表示する

注意点として、F3を押して表示される x,y,x とは、異なります。

特に、y が、F3の場合と大きく異なり、

F3 : yは岩盤が0かな?

API: yは水面が0かな?

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()
playerPos = mc.player.getPos()
mc.postToChat("Pos : " + str(playerPos))

出力

Pos : Vec3(941.7811125650827,-49.0,449.30000001192093)

f:id:pongsuke:20160530175138p:plain

注釈 .create(address = "localhost", port = 4711)

本番

import mcpi.minecraft as minecraft
import mcpi.block as block

mc = minecraft.Minecraft.create()
playerPos = mc.player.getPos()
mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_ORE)

サンプルに含まれている、helloworld.pyほぼそのままです。

playerPos.y+2 とすることで、自分の足元(下半身)から、2ブロック分上(自分の頭上)に、 ブロックを出現させています。

コマンド実行

方法1 チャットエリアから

/ を押してチャットモードに入り、

/py sample

方法2 Windowのコマンドラインから

コマンドプロンプトを出し(cmdなど)、スクリプト保存フォルダから、

PS C:\Users\***\AppData\Roaming\.minecraft\forge.1.9\mcpipy> python.exe .\sample.py

上記サンプルでは、forge.1.9というデータフォルダを作成し、そこに mcpipy を作成しています。

改良1 ブロックを変える

サンプルを改良してみましょう

設置するブロックを変更する

mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_ORE)

の、block.DIAMOND_OREを書き換えれば、いかにも別のブロックを設置できるようになりそうですが、 まさにその通りです。

例えば、

mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_BLOCK)

として実行すると、

f:id:pongsuke:20160530175754p:plain

ダイヤモンドブロックが設置されました!

どのようなブロックが利用可能なのかは、APIを見てください。

<Stuff about="code" />: Minecraft API

改良2 複数のブロックを設置する

次に、頭上に1つではなく、2つ設置しましょう。 2つ上と、3つ上にしましょう。

import mcpi.minecraft as minecraft
import mcpi.block as block

mc = minecraft.Minecraft.create()
playerPos = mc.player.getPos()
mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_BLOCK)
mc.setBlock(playerPos.x, playerPos.y+3, playerPos.z, block.DIAMOND_BLOCK)

f:id:pongsuke:20160530180024p:plain

Minecraft API

Minecraft API

<Stuff about="code" />: Minecraft API

移動系

import time
import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()
mc.postToChat("Hello World!")

playerPos = mc.player.getPos()
mc.postToChat("Pos : " + str(playerPos))
time.sleep(1)
mc.player.setPos(0.0,20.0,0.0)

移動先で、足元に何もなければ、落下します。 移動先にブロックがあると、埋まります。

Forge + Raspberry Jam Mod + Python3

インストールと設定

2016-05-24 現在 マインクラフトの最新バージョン 1.9.4

Raspberry Jam Mod

Raspberry Jam Modの最新バージョン 1.9.4対応

Releases · arpruss/raspberryjammod · GitHub

This is the same as 0.66 basically, but repacked to also work with Forge for 1.9.4.

Forge

Forgeの最新バージョン 1.9.4 対応 Minecraft Forge

プロファイルを作成する データディレクトリをバージョンごとに分ける

"Use version" で、 release 1.9-forge・・・ を選択する。 f:id:pongsuke:20160524111601j:plain

mod フォルダに、RaspberryJamMod.jarを入れる。

python3-scripts.zip(Python2 なら、python2-scripts.zip なのかな?) を展開し、データフォルダ直下mcpipyフォルダに入れる。

動作テスト

ゲームを起動し、動作テストする。 ゲームモードは、クリエイティブが、無難。

/gamemode 1

動作テスト1

マインクラフトのチャットコマンドからスクリプトを実行する。

/py nt7s_sphere

f:id:pongsuke:20160524112739j:plain

結果 f:id:pongsuke:20160524112641j:plain

動作テスト2

Windowsコマンドラインから、Pythonスクリプトを実行して、マインクラフトを操作する。

スクリプトは、mcpipyフォルダに入れる。

hw.py

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()
mc.postToChat("Hello World!")
PS C:\Users\***\AppData\Roaming\.minecraft\forge.1.9\mcpipy> python.exe .\hw.py

結果 f:id:pongsuke:20160524113339j:plain