# ベーシックなMinecraft Pi API

Sonic Piは現在、下記のMinecraft Piの基本インタラクションをサポートしています:

- チャットメッセージの表示
- ユーザの位置設定
- ユーザの位置情報の取得
- 指定した座標のブロックタイプを設定
- 指定した座標のブロックタイプを取得

これらをそれぞれ順番に見てみましょう。

## チャットメッセージの表示

それではSonic PiからのMinecraft Piの制御が、どれだけ簡単か見てみましょう。まずはじめにMinecraft PiとSonic Piが同時に起動していることを確認し、Minecraftのワールドに入って歩くことができることを確認してください。

新しいSonic PiのBufferで、次のコードを入力してください。

    mc_message "Hello from Sonic Pi"

Runボタンを押すと、Minecraftウィンドウにメッセージが表示されます。おめでとう、あなたは初めてのMinecraftコードを書きました！ 簡単でしたよね。

## ユーザの位置設定

では、ちょっとした魔法を試してみましょう。どこかに瞬間移動してみましょう！ 以下を試してください。

    mc_teleport 50, 50, 50

`Run`を押すと、ブーン！ 新しい場所へあなたの座標が移動しました。たいていは、乾燥した土地、または水に落ちたか、空中のどこかでしょう。`50, 50, 50`、これらの数字は何でしょう？ これらは瞬間移動しようとしている場所の座標です。座標とは何なのか、そして座標がどのように動作するのかは、Minecraftをプログラムするにあたって本当に重要なので、少し時間を取って見ていきましょう。

## 座標

いくつかの宝の場所が大きな`X`でマーキングされた海賊の地図を想像してみてください。`X`の正確な位置は、左から右へ向かってどれくらい離れているか、下から上へ向かってどのくらい離れているか、この2つの数字で場所を記述することができます。例えば、横へ`10cm`、上に`8cm`。これら2つの数字`10`と`8`が座標です。他に隠された宝物の在処も別の2つの数字で容易に記述できることが想像できますね。おそらく、`2`つ横切り、`9`つ上には大きな金脈がありそうです…

さて、Minecraftの中では2つの数字では十分ではありません。それに加えて、私たちがどれだけ高い所にいるのかを知る必要があります。したがって、3つの数字が必要になります。

- どのくらい右端から左に離れてるか - `x`
- どのくらい手前から奥へ離れてるか - `z`
- どのくらい高くあがったか - `y`

通常、`x`, `y`, `z`でこれらの座標を記述します。

## 現在の座標を知る

座標を使って遊んでみましょう。Minecraftのマップで素敵な場所に移動した後、Sonic Piに切り替え、次を入力してください。

    puts mc_location

`Run`ボタンを押すと、ログ画面に、現在位置の座標が表示されます。座標の値を書き留め、続いてワールド内で前方に移動し、再び試してみてください。座標がどのように変化するかに注目しましょう！ これを繰り返すのに時間を使うことをお勧めします。すなわち、ワールド内で少し動いては座標を見てみるということです。あなたが移動すると座標がどのように変化するか感触を得られるまで、これを行いましょう。これを調整する方法が理解できれば、MinecraftのAPIを使用したプログラミングがほぼ完了します。

## さぁ、構築しましょう!

現在位置を取得する方法と、座標を利用して瞬間移動する方法を覚えたので、あなたはコードでMinecraft内に何かを構築し始めるために必要な道具をすべて持っています。たとえば、座標`40`, `50`, `60`にガラスのブロックを作りたかったら、それはとっても簡単ですね。

    mc_set_block :glass, 40, 50, 60

ハハ、本当に簡単だったでしょう。作ったものを見るには、近くに瞬間移動してみましょう。

    mc_teleport 35, 50, 60

振り向くと、あなたの作ったガラスのブロックが表示されるはずです！ それをダイヤモンドに変更してみましょう。

    mc_set_block :diamond, 40, 50, 60

見る角度が合えば、それがあなたの目の前で変更されることだってあるのです！ これはエキサイティングな何かの始まりです…

## ブロックを調べる

少し複雑なことに移る前に、最後の1つを見てみましょう。座標を与え、特定のブロックの種類が何であるかをMinecraftに尋ねることができます。では、先ほど作成したダイヤモンドブロックで試してみましょう。

    puts mc_get_block 40, 50, 60

イェイ！ それは`:diamond`（ダイヤモンド）ですね。ガラスに戻して、もう一度尋ねてみましょう。`:glass`を示しましたか？ きっとそうなったでしょう(^o^)

## 使用可能なブロックタイプ

Minecraft Piでコーディングで暴れに行く前に、利用可能なブロックタイプのリストがあると便利でしょう。以下に示します。

        :air			空気
        :stone			石
        :grass			草
        :dirt			汚れ
        :cobblestone		石畳
        :wood_plank		木の板
        :sapling		苗木
        :bedrock		岩盤
        :water_flowing		水流
        :water			水
        :water_stationary	静止した水
        :lava_flowing		溶岩流
        :lava			溶岩
        :lava_stationary	固まった溶岩
        :sand			砂
        :gravel			砂利
        :gold_ore		金の鉱石
        :iron_ore		鉄鉱石
        :coal_ore		石炭鉱石
        :wood			木材
        :leaves			葉
        :glass			ガラス
        :lapis			ラピス
        :lapis_lazuli_block	ラピスラズリブロック
        :sandstone		砂岩
        :bed			ベッド
        :cobweb			クモの巣
        :grass_tall		背の高い草
        :flower_yellow		黄色い花
        :flower_cyan		シアン色の花
        :mushroom_brown		茶色いキノコ
        :mushroom_red		赤いキノコ
        :gold_block		金のブロック
        :gold			金
        :iron_block		鉄のブロック
        :iron			鉄
        :stone_slab_double	石板（ダブル）
        :stone_slab		石板
        :brick			レンガ
        :brick_block		レンガブロック
        :tnt			TNT
        :bookshelf		本棚
        :moss_stone		苔石
        :obsidian		黒曜石
        :torch			トーチ
        :fire			火
        :stairs_wood		木の階段
        :chest			チェスト
        :diamond_ore		ダイアモンドの鉱石
        :diamond_block		ダイアモンドのブロック
        :diamond		ダイアモンド
        :crafting_table		作業テーブル
        :farmland		農地
        :furnace_inactive	廃炉
        :furnace_active		炉
        :door_wood		木のドア
        :ladder			はしご
        :stairs_cobblestone	石畳の階段
        :door_iron		鉄のドア
        :redstone_ore		レッドストーン鉱石
        :snow			雪
        :ice			氷
        :snow_block		雪のブロック
        :cactus			サボテン
        :clay			粘土
        :sugar_cane		サトウキビ
        :fence			フェンズ
        :glowstone_block	光る石のブロック
        :bedrock_invisible	目に見えない岩盤
        :stone_brick		石レンガ
        :glass_pane		ガラス板
        :melon			メロン
        :fence_gate		フェンスゲート
        :glowing_obsidian	輝く黒曜石
        :nether_reactor_core	原子炉コア