Edited at

Minecraftでプログラミングを楽しむ方法(Ruby, Python)

More than 3 years have passed since last update.

Minecraft PC版にRaspberry Jam Modを入れると、プログラムでMinecraft内のブロック、プレイヤーを動かして遊ぶことができます。


手順の概略


  1. Minecraftをインストール

  2. Forgeをインストール

  3. Modをインストール

  4. gemをインストール(Rubyの場合)

  5. プログラムの実行

※ Raspberry Piでは1〜3の手順が省略できる。


環境


  • OS X 10.11 El Capitan または Windows 7

  • Minecraft 1.8.8

  • Minecraft Forge 18-11.14.4.1563

  • Raspberry Jam Mod 0.51

  • Minecraft-Pi-Ruby 0.0.1


1-a.Minecraftのインストール

Minecraftのウェブサイトから購入(US$26.95)、あるいは体験版をインストールする。

(体験版はサイト右側の「Get Minecraft」の下にある「Download it here」をクリック)


1-b.Minecraftの起動

Minecraftを起動すると、Minecraft Launcher (1.6.48) が起動する。

※ Macで、"Javaのインストールが必要です" というようなメッセージが出た場合は、Javaをインストールする。


1-c.Profileの設定

release 1.8.xに設定する。


  1. Minecraft Launcherの左下の「Profile」には、ユーザー名の付いたProfileが表示されているはずなので、「Edit Profile」ボタンを押す。

  2. 「Use Version」で最新の「release 1.8.8」を選ぶ。

  3. 右下の「Save Profile」ボタンを押して、設定を保存する。

※「1.8.xではなく、1.8そのものを選ばなくてはいけない」という情報もあったので、うまくいかなかった場合は、release 1.8を選ぶ。


1-d.Minecraftで新規ワールドを作る

次でForgeをインストールするには、1.8系で作ったワールドを一度は起動しておく必要がある。


  1. Minecraft Launcherの「Play」を押すと、Minecraft(1.8.8)が起動する。

  2. 「シングルプレイ(Singleplayer)」を押し、「ワールド新規作成(Create New World)」を押すと、Minecraftワールドが作られる。(ワールド名、ゲームモードはお好みで。)

  3. 少し遊んでみて動作を確認したら、Minecraftを終了する。

※ ワールドの画面からマウスポインタを外に出したい時、ワールドを終了したい時は、Escキーを押す。


※Minecraftの基本操作


○キーボード


  • W 前進

  • S 後退

  • A 左に水平移動

  • D 右に水平移動

  • E アイテム一覧(Escで閉じる)

  • スペースを素早く2回 飛行モード/ 通常モードの切り替え

    (飛行モードはクリエイティブモードのみ)


  • スペース 上昇(飛行モード)/ ジャンプ(通常モード)


  • 左Shift 下降(飛行モード)/ 身をかがめる(通常モード)


  • Esc メニュー画面(設定、LANに公開、セーブしてタイトルに戻る)、マウスカーソルを画面外に出す


  • T チャット/サーバーコマンド、マウスカーソルを画面外に出す



○マウス


  • マウスカーソル 見る向きを変える

  • 右クリック ブロックを置く

  • 左クリック ブロックを壊す

  • ホイール ホットバー中のアイテムから選択(または1~9のキーで指定)


○ファンクションキー(Mac、ノートPCの場合、fnキーと共に押す)


  • F1 ヘッドアップディスプレイ(追加情報)表示の切り替え

  • F2 スクリーンショットの撮影

    保存場所;

    ・Mac;~/Library/Application Support/minecraft/versions/1.8-Forge11.14.4.1563/screenshots

    ・Windows; C:\Users\ユーザー名\AppData\Roaming.minecraft\versions\screenshots


  • F3 デバッグ情報表示の切り替え、他のキーとの組み合わせでその他の機能も


※ F3 + P 他のウィンドウに切り替わった時、「ゲームメニューを出す、一時停止する」/「ゲームメニューを出さない、一時停止しない」の切り替え


  • F5 視点の切り替え(自己、後方から、前方から)

  • F11 全画面表示の切り替え(Macでは、fn + option + F11 の時も)


2-a.Minecraft Forgeのインストール

Modを管理するためのMinecraft Forgeをインストールする。


  1. Minecraft Forgeのウェブサイトで、「Minecraft Versions」の「1.8」を選んで、「Download Recommended (11.14.4.1563)」の「Installer」(Windowsなら「Installer-win」)をクリックする。

  2. 広告が表示されるが、数秒後に出る右上の「SKIP」ボタンを押すとダウンロードが始まる。
    (バージョンを選びたければ、「Show all downloads」をクリック。)

  3. ダウンロードされた forge-1.8-11.14.4.1563-installer.jar をダブルクリックしてインストール。

→・【1.8対応】Mac OS X でMinecraftにMod導入 - AQUAALTA

→・[Minecraft] これなら導入できる! 修正版新しいMODの導入方法- Forgeやフォルダの設定を解説 [1.7.10/1.8~] - ナポアンのマイクラ

→・【Minecraft】 1.8対応 はじめてのMod導入方法 for Windows - AQUAALTA


2-b.再度Profileの設定(Forge用の設定を作る)


  1. 再び Minecraft を起動。

  2. Minecraft Launcherの左下の「Profile」に、「Forge」 Profile が追加されているはずなのでそれを選んで、「Edit Profile」ボタンを押す。

  3. 「Use Version」でインストールしたForgeのバージョン「release 1.8-Forge11.14.4.1563」を選ぶ。


  4. 「Profile Info」の「Game Directory」にチェックを入れて、

     /Users/ユーザー名/Library/Application Support/minecraft/versions/1.8-Forge11.14.4.1563(Mac)あるいは、

     C:¥Users¥ユーザー名¥AppData¥Roaming¥.minecraft¥versions¥1.8-Forge-11.14.4.1563(Windows)

    のように指定する。


※ このディレクトリのパスの確認法


  • Mac;

    「Finder」>「メニュー」>「移動」>optionキーを押すと「ライブラリ」が表示されるので選ぶ>「Application Support」>「Minecraft」>「versions」>「1.8-Forge11.14.4.1563」フォルダ で見つかる。


  • Windows;

    「コンピューター」>「ローカルディスク(C:)」>「ユーザー」>ユーザー名>「AppData」>「Roaming」>「.minecraft」>「versions」>「1.8-Forge-11.14.4.1563」のように辿っていける。


5.設定できたら、右下の「Save Profile」ボタンを押して、設定を保存する。


2-c.Minecraftの起動(Forgeのインストールの確認)


  1. Minecraft Launcherの「Profile」が「Forge」になっているのを確認して、「Play」を押す。Forgeの適用されたMinecraftが起動する。

  2. Forgeが適用されると、「Mods」ボタンが増え、画面左下に Forgeのバージョンなどが表示されるのを確認する。


3-a.Raspberry Jam Modのインストール


  1. Raspberry Jam ModのGitHubサイトの上の方にある「releases」をクリックする。


  2. 「Latest release(0.51)」の「Downloads」にある「RaspberryJamMod.jar」をクリックするとダウンロードされる。


  3. ダウンロードされた RaspberryJamMod.jar を先ほど「Game Directory」で指定したディレクトリ(Macだと、/Users/ユーザ名/Library/Application Support/minecraft/versions/1.8-Forge11.14.4.1563)にある「mods」フォルダの中に移動 or コピーする。


※ 注意;

Windowsの場合も、「Downloads」にある「RaspberryJamMod.jar」を選ぶこと。

「RaspberryJamMod-Installer.exe」を選ぶと、RaspberryJamMod.jarが上記とは別のフォルダに自動でインストールされてしまう。

※ Pythonを使う場合;

「Downloads」にある「python2-scripts.zip」と「python3-scripts.zip」もダウンロードする。

※ Minecraft 1.8に対応したRaspberry Jam Modとは別に、1.7に対応したmcpiapi modもある。


3-b.Minecraftの起動(Raspberry Jam Modのインストールの確認)


  1. 再びMinecraft Launcherの「Profile」が「Forge」になっているのを確認して、「Play」を押す。

  2. Minecraftが起動したら「Mods」ボタンを押す。
    左側にModのリストの中に「Raspberry Jam Mod」があればインストールされている。


3-c.新規ワールドを作る(ウィンドウ切り替え時の設定)


  1. 動作確認用に「シングルプレイ」を選択し、「ゲームモード」は「クリエイティブ」、「ワールド名」は好きに入力して、「ワールド新規作成」を押す。

  2. できたワールド画面で、F3 + P(もしくは fn + F3 + P)を押して、別のウィンドウがアクティブになっても、一時停止したり、ゲームメニューが出ないようにする。(この後、デバッグ画面表示が邪魔なら、F3を押す。)

  3. Cmd + Tab(Mac)または Alt + Tab(Windows)で別のウィンドウに切り替える。(ウィンドウは2つ以上開いておく)

  4. ワールド画面にゲームメニューが出ず、一時停止しないことを確認する。

※ Minecraftウィンドウ自体の移動などの操作は Escキーを押さないとできない。

※ プログラムの実行中は、Minecraftワールドの画面を開いておく。(Launcher画面ではなく)

※ 同じ LAN環境にいれば、ゲームメニューで「LANに公開」を選ぶと、別の人とワールドを共有(マルチプレイ)できる。


4.Minecraft-Pi-Ruby gemのインストール(Rubyの場合)


4-A.通常のMinecraft-Pi-Ruby gemのインストール

$ gem install minecraft-pi-ruby

Successfully installed minecraft-pi-ruby-0.0.1
Parsing documentation for minecraft-pi-ruby-0.0.1
Done installing documentation for minecraft-pi-ruby after 1 seconds
1 gem installed


4-B.独自拡張したMinecraft-Pi-Ruby gemのインストール(おすすめ)

Pythonに比べ機能が不足していたので、機能追加した。

→・https://github.com/noanoa07/minecraft-pi-ruby/tree/feature

$ gem install specific_install

$ gem specific_install https://github.com/noanoa07/minecraft-pi-ruby.git feature

※ Windowsの場合、gitが必要。


5-A.プログラムの実行(Ruby)


5-A-1.Rubyプログラムを書く


hello.rb

require 'minecraft-pi-ruby'

mc = Minecraft.new
mc.say 'Hello Minecraft World!'



5-A-2.Rubyプログラムの実行

Minecraftワールドを開いた状態のままで;

$ ruby hello.rb

Minecraftワールドの画面に;

Hello Minecraft World!

と表示されれば成功!

※ irbでも実行可能

※ 使える命令は、下記の参考A あるいは Minecraft-Pi-Rubyのウェブサイト参照


5-B.プログラムの実行(Python)


5-B-1.MCPIフォルダ


  1. Raspberry Jam ModのGitHubサイトから、python2-scripts.zip(Python2の場合)あるいは python3-scripts.zip(Python3の場合)をダウンロードして展開する。


  2. 展開してできた「mcpipy」フォルダの中には様々な Pythonのサンプルプログラムが入っているが、それと共に「MCPI」フォルダも入っている。



5-B-2.Pythonプログラムを書く

MCPIフォルダと同じ場所に作成する。


hello.py

import mcpi.minecraft as minecraft

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



5-B-3.Pythonプログラムの実行

Minecraftワールドを開いた状態のままで;

$ cd  mcpipy

$ python hello.py

Minecraft の画面に

Hello Minecraft World!

と表示されれば成功!

mcpipyフォルダにある他のサンプルプログラムも実行してみる。

※ インタラクティブシェルでも実行可能

※ 命令一覧;

→・Minecraft API - <Stuff about="code" />

※ Pythonで書かれたプログラム、解説;

→・Digital Clock in Minecraft - Raspberry Pi • View topic

→・Python & Minecraft on Raspberry Pi! - import minecraft - MCPIPY.com

→・Python coding for Minecraft - instructables

→・Adventures in Minecraft - <Stuff about="code" >

→・Minecraft Pi Recipe Cards - arghbox

→・Python Programming with Minecraft Pi: Early Draft - arghbox


参考A.Minecraft-Pi-Rubyのコマンド一覧


○初期設定

 require 'minecraft-pi-ruby'

 mc = Minecraft.new

 実行には、上記の2行が必要。(mcは任意の変数名。)


○コマンド


  • say "message"

    画面に文字(message)を表示


  • set_camera_mode(Raspberry Pi環境のみ)

    カメラモードを設定(:fixed、:normal、:follow)


  • set_block(x, y, z, ブロックID[, ブロックデータ]) または

    set_block(position, ブロックID[, ブロックデータ])


  例)set_block(0, 0, 0, Block::STONE)

  ブロックIDは数字でも良い

  ブロックデータは省略可

 (ブロックID、ブロックデータは後述)

※ 座標の指定は、(x, y, z) または position = Position.new(x, y, z) で指定

※ Minecraftの座標は、ブロック単位で、y座標が高さ方向になる(上方が +)


  • get_block(x, y, z)  ※独自拡張

    座標(x, y, z) のブロックIDを返す


  • set_blocks または make_cuboid

    引数の指定は (x1, y1, z1, x2, y2, z2, ブロックID[, ブロックデータ]) または (position1, position2, ブロックID[, ブロックデータ])


  例)set_blocks(0, 0, 0, 20, 20, 20, Block::OBSIDIAN)

  ブロックIDは数字でも良い

  ブロックデータは省略可

 (ブロックID、ブロックデータは後述)


  • get_ground_height(x, z) または ground_height(x, z)

     座標 (x, z) の地面の高さ(y座標)を返す


  • set_player_position(x ,y, z) または set_player_position(position)

     プレーヤーを座標 (x, y, z) に置く


  • get_player_position  ※独自拡張

    プレーヤーの座標を Positionクラスで返す。


  • キー入力の取得

    Minecraftからキー入力の情報を取得することは(現状では)できない。また、Minecraftウィンドウがアクティブだと、ターミナルで実行中のプログラムにはキー入力の取得はできない。

    そこで、ターミナルウィンドウをアクティブにしつつ、Minecraftウィンドウを表示させることで、キー入力の情報をターミナル側で取得する。

    (上記 3-c.「ウィンドウ切り替え時の設定」で、別のウィンドウがアクティブになっても、一時停止したり、ゲームメニューが出ないようにしておくこと)

     

     なお、キー入力の取得には、Rubyの io/consoleライブラリが使える。

     →・Ruby - ターミナルのキー入力を得てカーソル移動とかする (curses無し) - Qiita



参考B.サンプルプログラム(Ruby)

(license; public domain)

○画面に文字を表示


hello.rb


require 'minecraft-pi-ruby'

mc = Minecraft.new
mc.say 'Hello Minecraft World!'


○土地を平地化


reset.rb

require 'minecraft-pi-ruby'

mc = Minecraft.new

sleep 5
mc.say 'Reset this World!'
mc.set_blocks(-100, 0, -100, 100, 63, 100, Block::AIR)
mc.set_blocks(-100, -1, -100, 100, -1, 100, Block::GRASS)
mc.set_blocks(-100, -63, -100, 100, -2, 100, Block::STONE)

mc.set_player_position(0, 100, 0)


○ブロックを文字の形に地面に置く


chars.rb

require 'minecraft-pi-ruby'

mc = Minecraft.new

chars = [
'##### # # #### # # #',
'# # # # # # # # #',
'# # # # #### # #',
'#### # # # # # #',
'# # # # # # # ',
'# # #### #### # #',
]

sleep 5
mc.set_player_position(0, 100, 0)
mc.say 'Hello Ruby !'

# Reset the world
mc.set_blocks(-100, 0, -100, 100, 63, 100, Block::AIR)
mc.set_blocks(-100, -1, -100, 100, -1, 100, Block::GRASS)
mc.set_blocks(-100, -63, -100, 100, -2, 100, Block::STONE)

x = -10
y = 0
z = -10

chars.each do |line|
line.each_char do |ch|
if ch == '#'
mc.set_block(x, y, z, Block::GOLD_BLOCK)
end
x += 1
end
x = -10
z += 1
end


参考)→・Minecraft Pi Editionで遊びながらプログラミングの勉強! - TONGARISM.COM

○押したキーを表示


chat.rb

require 'minecraft-pi-ruby'

require 'io/console'

mc = Minecraft.new
mc.say 'chat start!'

# ctrl + C to exit
while ch = STDIN.getch
exit if ch == ?\C-c
mc.say ch
end


※ Cmd + Tab(Mac)または Alt + Tab(Windows)でMinecraftワールドを開いたまま、ターミナル(コマンドプロンプト)ウィンドウに切り替えて実行。

プログラムの終了は Ctrl + C。

(上記 3-c.「ウィンドウ切り替え時の設定」で、別のウィンドウがアクティブになっても、一時停止したり、ゲームメニューが出ないようにしておくこと)。


参考C.ブロックID、ブロックデータ


○ブロックID(* はブロックデータあり)

0 AIR(空気、何もない状態にする)

1 STONE(石)

2 GRASS(草)

3 DIRT(土)

4 COBBLESTONE(丸石)

5* WOOD_PLANKS(木材)

6* SAPLING(苗木)

7 BEDROCK(岩盤)

8 WATER_FLOWING

WATER(水)

9* WATER_STATIONARY(静止した水)

10 LAVA_FLOWING

LAVA(溶岩)

11* LAVA_STATIONARY(静止した溶岩)

12 SAND(砂)

13 GRAVEL(砂利)

14 GOLD_ORE(金鉱石)

15 IRON_ORE(鉄鉱石)

16 COAL_ORE(石炭鉱石)

17* WOOD(原木)

18* LEAVES(葉)

20 GLASS(ガラス)

21 LAPIS_LAZULI_ORE(ラピスラズリ鉱石)

22 LAPIS_LAZULI_BLOCK(ラビスラズリブロック)

24* SANDSTONE(砂岩)

26 BED(ベッド)

30 COBWEB(クモの巣)

31* GRASS_TALL(草)

35* WOOL(羊毛)

37 FLOWER_YELLOW(黄色い花)

38 FLOWER_CYAN(赤いバラ)

39 MUSHROOM_BROWN(キノコ 茶)

40 MUSHROOM_RED(キノコ 赤)

41 GOLD_BLOCK(金ブロック)

42 IRON_BLOCK(鉄ブロック)

43* STONE_SLAB_DOUBLE(重ねたハーフブロック)

44* STONE_SLAB(ハーフブロック)

45 BRICK_BLOCK(レンガブロック)

46* TNT(TNT爆弾)

47 BOOKSHELF(本棚)

48 MOSS_STONE(苔石)

49 OBSIDIAN(黒曜石)

50* TORCH(松明 たいまつ)

51 FIRE(炎)

53* STAIRS_WOOD(樫の木の階段)

54* CHEST(チェスト)

56 DIAMOND_ORE(ダイヤモンド鉱石)

57 DIAMOND_BLOCK(ダイヤモンドブロック)

58 CRAFTING_TABLE(作業台)

60 FARMLAND(耕地)

61* FURNACE_INACTIVE(かまど)

62* FURNACE_ACTIVE(燃えているかまど)

64 DOOR_WOOD(木のドア)

65* LADDER(はしご)

67* STAIRS_COBBLESTONE(丸太の階段)

71 DOOR_IRON(鉄のドア)

73 REDSTONE_ORE(レッドストーン鉱石)

78 SNOW(雪)

79 ICE(氷)

80* SNOW_BLOCK(雪ブロック)

81 CACTUS(サボテン)

82 CLAY(粘土)

83 SUGAR_CANE(サボテン)

85 FENCE(フェンス)

89 GLOWSTONE_BLOCK(グロウストーンブロック)

95 BEDROCK_INVISIBLE(鍵のかかったチェスト)

98* STONE_BRICK(石レンガ)

102 GLASS_PANE(板ガラス)

103 MELON(スイカ ブロック)

107* FENCE_GATE(フェンスゲート)

246 GLOWING_OBSIDIAN(輝く黒曜石)

247* NETHER_REACTOR_CORE(ネザーリアクターコア)


○ブロックデータ

5 WOOD_PLANKS(木材)

 0: Oak

 1: Spruce

 2: Birch

 3: Jungle

6 SAPLING(苗木)

 0: Oak

 1: Spruce

 2: Birch

 3: Jungle

9 WATER_STATIONARY(静止した水)

11 LAVA_STATIONARY(静止した溶岩)

 0-7: Level of the water, 0 being the highest, 7 the lowest

(0-7: 高さ、0が一番低く、7が一番高い)

17 WOOD(原木)

  0: Oak (up/down)

  1: Spruce (up/down)

  2: Birch (up/down)

  3: Jungle (up/down)

  4: Oak (east/west)

  5: Spruce (east/west)

  6: Birch (east/west)

  7: Jungle (east/west)

  8: Oak (north/south)

  9: Spruce (north/south)

 10: Birch (north/south)

 11: Jungle (north/south)

 12: Oak (only bark)

 13: Spruce (only bark)

 14: Birch (only bark)

 15: Jungle (only bark)

18 LEAVES(葉)

 1: Oak leaves

 2: Spruce leaves

 3: Birch leaves

24 SANDSTONE(砂岩)

 0: Sandstone

 1: Chiseled sandstone

 2: Smooth sandstone

31 GRASS_TALL(草)

 0: Shrub

 1: Grass

 2: Fern

 3: Grass (color affected by biome)

35 WOOL(羊毛)

  0: White

  1: Orange

  2: Magenta

  3: Light Blue

  4: Yellow

  5: Lime

  6: Pink

  7: Grey

  8: Light grey

  9: Cyan

 10: Purple

 11: Blue

 12: Brown

 13: Green

 14: Red

 15:Black

43 STONE_SLAB_DOUBLE(重ねたハーフブロック)

44 STONE_SLAB(ハーフブロック)

 0: Stone

 1: Sandstone

 2: Wooden

 3: Cobblestone

 4: Brick

 5: Stone Brick

 6: Nether Brick

 7: Quartz

46 TNT(TNT爆弾)

 0: Inactive

 1: Ready to explode

50 TORCH(松明 たいまつ)

 1: Pointing east

 2: Pointing west

 3: Pointing south

 4: Pointing north

 5: Facing up

53 STAIRS_WOOD(樫の木の階段)

67 STAIRS_COBBLESTONE(丸太の階段)

 0: Ascending east

 1: Ascending west

 2: Ascending south

 3: Ascending north

 4: Ascending east (upside down)

 5: Ascending west (upside down)

 6: Ascending south (upside down)

 7: Ascending north (upside down)

54 CHEST(チェスト)

61 FURNACE_INACTIVE(かまど)

62 FURNACE_ACTIVE(燃えているかまど)

65 LADDER(はしご)

107 FENCE_GATE(フェンスゲート)

 2: Facing north

 3: Facing south

 4: Facing west

 5: Facing east

80 SNOW_BLOCK(雪ブロック)

 0-7: Height of snow, 0 being the lowest, 7 being the highest.

(0-7: 雪の高さ、0が一番低く、7が一番高い)

98 STONE_BRICK(石レンガ)

 0: Stone brick

 1: Mossy stone brick

 2: Cracked stone brick

 3: Chiseled stone brick

247 NETHER_REACTOR_CORE(ネザーリアクターコア)

 0: Unused

 1: Active

 2: Stopped / used up

→・Minecraft API - <Stuff about="code" />


参考;

(画面下の「Next」や「View All Steps」で続きが表示される)


元記事;