お知らせ

『プログラミング能力検定(11月検定)』参加者募集中!

詳細はこちら

【07】アイテムを持たせる

「set_item」のイメージ画像 マイクラ(Python)

前回は、エージェントのインベントリを開いて、マウス操作でエージェントにアイテムを持たせました。今回はプログラミングのコードを使ってエージェントにアイテムを持たせる方法を学習します。

エージェントにダイヤモンドのブロックと鉱石を持たせる

agent.set_item(DIAMOND_BLOCK, 64, 1)
agent.set_item(DIAMOND_ORE, 64, 2)

アイテムを持たせるときには set_itemアイテム という命令を使います。前回出てきた set_slot と似ていますが間違えないように注意してください。set_item のあとに続く ( ) の中には、持たせたい「アイテムの名前(IDネーム)」、「数量」、「スロット番号」をそれぞれカンマで区切って入力します。

まずは上のコードをマネしてプログラムを実行してみましょう。

エージェントのインベントリ

これで上の画像のように、ダイヤモンドのブロック1番のスロットに、ダイヤモンド鉱石2番のスロットにそれぞれ64個ずつ入ったと思います。

それぞれのスロットに入れられるアイテムの数は最大で64個です。もし agent.set_item(DIAMOND_BLOCK, 100, 1) といったように64よりも大きな数を指定した場合でも、実際に渡されるのは64個となります。

指定したスロットにすでにアイテムが入っている場合は、元々入っていたアイテムは消去され、新しく指定したアイテムに入れ替わります。

主なアイテムのIDネーム(一部抜粋)

さて、これでエージェントにアイテムを持たせることができたのですが、問題は持たせたいアイテムを何という名前(IDネーム)で指定すればいいのかわからないことです。ダイヤモンドブロックを持たせたいと思ってもカタカナで「ダイヤモンドブロック」と入力してもダメです。英語で「Diamond Block」とやってもダメです。

DIAMOND_BLOCK という IDネームを知らなければ指定しようがありません。かといって、約800個もある Minecraft のアイテムのIDネームをすべて覚えるのも現実的ではないですよね。

一応ではありますが、以下に主なアイテムのIDネームを挙げておきますので参考にしてください。

樫の木材	PLANKS_OAK

樫の木材    5
PLANKS_OAK

丸石の壁	COBBLESTONE_WALL

丸石の壁    139
COBBLESTONE_WALL

樫の木の柵	OAK_FENCE

樫の木の柵    85
OAK_FENCE

樫の木の柵のゲート	OAK_FENCE_GATE

樫の木の柵のゲート    107
OAK_FENCE_GATE

樫の階段	OAK_WOOD_STAIRS

樫の階段    53
OAK_WOOD_STAIRS

鉄のドア	IRON_DOOR

鉄のドア    788
IRON_DOOR

鉄格子	IRON_BARS

鉄格子    101
IRON_BARS

ガラス	GLASS

ガラス    20
GLASS

ガラス板	GLASS_PANE

ガラス板    102
GLASS_PANE

はしご	LADDER

はしご    65
LADDER

レンガブロック	BRICKS

レンガブロック    45
BRICKS

丸石	COBBLESTONE

丸石    4
COBBLESTONE

金のブロック	GOLD_BLOCK

金のブロック    41
GOLD_BLOCK

ダイヤモンドのブロック	DIAMOND_BLOCK

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

干し草の俵	HAY_BLOCK

干し草の俵    170
HAY_BLOCK

白のウール	WOOL

白のウール    35
WOOL

白のカーペット	WHITE_CARPET

白のカーペット    171
WHITE_CARPET

ジャック・オ・ランタン	JACK_O_LANTERN

ジャック・オ・ランタン    91
JACK_O_LANTERN

草ブロック	GRASS

草ブロック    2
GRASS

DIAMOND_ORE

ダイヤモンド鉱石    56
DIAMOND_ORE

砂	SAND

砂    12
SAND

樫の丸太	LOG_OAK

樫の丸太    17
LOG_OAK

樫の苗木	OAK_SAPLING

樫の苗木    6
OAK_SAPLING

赤のチューリップ	RED_TULIP

赤のチューリップ    38
RED_TULIP

黒曜石	OBSIDIAN

黒曜石    49
OBSIDIAN

岩盤	BEDROCK

岩盤    7
BEDROCK

たいまつ	TORCH

たいまつ    50
TORCH

作業台	CRAFTING_TABLE

作業台    58
CRAFTING_TABLE

かまど	FURNACE

かまど    61
FURNACE

本棚	BOOKSHELF

本棚    47
BOOKSHELF

チェスト	CHEST

チェスト    54
CHEST

海のランタン	SEA_LANTERN

海のランタン    169
SEA_LANTERN

レール	RAIL

レール    66
RAIL

石のボタン	STONE_BUTTON

石のボタン    77
STONE_BUTTON

石の感圧板	STONE_PRESSURE_PLATE

石の感圧板    70
STONE_PRESSURE_PLATE

TNT 火薬	TNT

TNT 火薬    46
TNT

上のリストを見るとIDネームのほかに緑色の数字が書かれていると思います。これはそれぞれのアイテムに割り振られたID番号であり、set_item ではこのID番号でもアイテムを指定することができます。

agent.set_item(TNT, 64, 1)
agent.set_item(46, 64, 1)

例えばアイテム名を TNT と書いても、46 と書いても結果は同じになります。

いずれにしてもID番号を知らなければ書けないので、ここでは「一応、そういうやり方もある」ということを頭の片隅においておいてください。