API > Turtle

「API/Turtle」の編集履歴(バックアップ)一覧に戻る

API/Turtle - (2013/04/28 (日) 19:31:29) の編集履歴(バックアップ)


このページでは Turtle API について解説する。

参考資料:
執筆時のバージョン:
  • ComputerCraft 1.52 for Minecraft 1.5.1




Turtle API

Turtle(タートル)の動作を制御する。
Turtleに何らかの行動させる関数は、その行動の結果が返ってくるまで次の処理へは進まない。

refuel

【1.4-】
  • turtle.refuel( [count] )
  • 選択スロットのアイテムを全部、またはcount(数値)個だけ消費して燃料を補給する
  • 戻り値:ブーリアン型。燃料補給に成功したらtrueを、失敗したらfalseを返す。
    【1.5-】また、count = 0 のとき、選択スロットに燃料にできるアイテムがあるの場合はtrueを、ない場合はfalseを返す

燃料となるアイテムはかまどと同じ。かまどでの燃焼時間(秒)×1.2 が補給量であったが、【1.48】より燃焼時間(秒)が補給量となった。

Turtleを破壊すると補給した燃料はすべて消えてしまうが、【1.43】よりラベルを付けたTurtleは破壊しても燃料が消えなくなった。

【1.5】より、選択スロットに燃料にできるアイテムがあるの場合、turtle.refuel(0) はtrueを返すようになった。これにより、実際に燃料補給を試みることなくスロットに燃料アイテムがあるのかを調べることができるようになった。

燃料アイテムと補給レベルの例
溶岩バケツ※ ブレイズロッド 石炭・木炭 原木・木材 棒・苗木
CC1.4-1.47 1200 144 96 18 6
CC1.48- 1000 120 80 15 5
※溶岩バケツを燃料にした場合、空のバケツが残る。

getFuelLevel

【1.4-】
  • turtle.getFuelLevel()
  • 現在の残存燃料量を取得する
  • 戻り値:数値型。残っている燃料の量を整数値で返す

例:
turtle.refuel()
print(turtle.getFuelLevel())
燃料を補給し、燃料の量を表示する。

移動

  • turtle.forward()
    turtle.back()
    turtle.up()
    turtle.down()
  • Turtleを1メートル前進(forward)、後退(back)、上昇(up)、下降(down)させる。
    【1.4-】1メートルの移動につき燃料を1消費する(cfgファイルで変更可)
  • 戻り値:ブーリアン型。移動に成功したらtrueを、失敗したらfalseを返す

【1.48-】移動方向にアイテムがある場合、移動しながらそのアイテムを押せるようになった(Mobなどは押せない)。

例:
print(turtle.back())
Turtleに1メートル後退するように命令し、その結果を表示する。
(後退に成功したら"true"が、失敗したら"false"が表示される)

回転

  • turtle.turnLeft()
    turtle.turnRight()
  • Turtleを90度左(turnLeft)、右(turnRight)へ回転させる
  • 戻り値:ブーリアン型。回転に成功したらtrueを返す

例:
print(turtle.turnLeft())
Turtleを左へ90度回転させ、その結果を表示する。
(回転には失敗することが無いので、"true"が表示される)

select

  • turtle.select( slotNum )
  • slotNum(数値)番目のスロットを選択する。スロットの番号は下記の表を参照
  • 戻り値:ブーリアン型。選択に成功したらtrue。slotNumが無効(1未満または17以上)の場合はエラー

【1.4-】スロット番号
10 11 12
13 14 15 16

getItemCount

  • turtle.getItemCount( slotNum )
  • slotNum(数値)番目のスロットのアイテム数を取得する
  • 戻り値:数値型。アイテムの数を整数値で返す

getItemSpace

  • turtle.getItemSpace( slotNum )
  • slotNum(数値)番目のスロットのアイテムの空き数を取得する
  • 戻り値:数値型。アイテムの空き数を整数値で返す。空のスロットは64を返す。

transferTo

【1.45-】
  • turtle.transferTo( slotNum [, count] )
  • 選択スロットのアイテムをslotNum番目のスロットに最大で全部(count省略時)、またはcount個移動する
  • 戻り値:ブーリアン型。移動に成功したらtrueを、失敗したらfalseを返す

アイテムを一個も移動できなかった場合はfalse、一個でも移動できた場合はtrueが返る。
なので、trueが返ったとしても、選択スロットのアイテムが全部、またはcountで指定しただけ移動されたという保証はない。例えば、選択スロットにStoneが16個あり、移動先スロットにStoneが60個あった場合、turtle.transferTo(移動先スロット番号) は選択スロットから移動先スロットへ4個移動してtrueが返る(結果、選択スロットが12個、移動先スロットが64個になる)。
ちなみに、slotNumに選択スロットの番号を指定した場合はtrueが返る。

例:
turtle.transferTo(6, 32)
選択スロットのアイテムを6番スロットへ32個移動する。

craft

【1.4-】
  • turtle.craft( [count] )
  • Turtleインベントリ内の3×3のスロットをクラフトテーブルとして、各スロットに配置したアイテムからクラフトする。材料があるだけ(引数省略時)、またはcount(数値)個だけクラフトする
  • 戻り値:ブーリアン型。クラフトに成功したらtrueを、失敗したらfalseを返す。
    【1.5-】また、count = 0 のとき、スロットにあるアイテムでクラフトが可能な場合はtrueを、不可能な場合はfalseを返す

Crafty系のTurtle限定。
いずれかのスロットにレシピに関係ないアイテムがあった場合は失敗する。
実際にクラフト可能な最大数は、完成品が1スロットに収まるだけの数である。例えば、原木64個からは木材64個がクラフトされ、原木48個が残る。同様に、サトウキビ64個x3からは紙63枚がクラフトされ、サトウキビ43個x3が残る。
完成品は選択スロットに入るが、選択スロットに材料が残っている場合はそれ以降のスロットに入る。

【1.5】より、スロットにあるアイテムでクラフトが可能な場合、turtle.craft(0) はtrueを返すようになった。これにより、実際にクラフトを試みることなく現在のスロットのアイテムでクラフト可能かを調べることができるようになった。

dig

  • turtle.dig()
    turtle.digUp()
    turtle.digDown()
  • Turtleの正面(dig)、真上(digUp)、真下(digDown)を1ブロック掘る
  • 戻り値:ブーリアン型。採掘に成功したらtrue、採掘できなかったらfalseを返す

道具や剣を持つTurtle限定。
対象のブロックが採掘できるかどうかはTurtleの種類ごとに決まっている。また、採掘したブロックを獲得できるかどうかはTurtleに装着されている道具そのもので判定される。

例えば、Mining TurtleとFelling Turtleは両方とも岩盤を除くブロックを破壊できるように設定されているが、破壊したブロックの獲得判定ではそれぞれダイヤツルハシとダイヤ斧で判定される。そのため、鉱石系のブロックを採掘した場合は、Mining Turtleが鉱石を獲得できる一方で、Felling Turtleは破壊できるもののアイテムを獲得することはできない。

これは、他のmodで追加される回収に特殊な道具(mod追加工具など)が必要なブロックに対しても同様で、既存のTurtleではそのようなブロックを正しい方法で破壊することができない(ただし、専用のツールアップグレードが存在するなら可能)。

掘ったブロックを獲得できる場合、選択スロットへ収納される。選択スロットへ収納できなかった場合は、それ以降のスロットに収納される。全スロットに収納できなかった場合は、その場にドロップする。CC1.5付近より、スロットに収納できなかったアイテムはTurtleの真後ろにドロップするようになった。更に真後ろにチェストなどインベントリを持つブロックがある場合はドロップをせずそこに収納する。ただし、Turtleのスロットにも真後ろのブロックのインベントリにも収納できなかった場合は、以前と変わらずその場にドロップする。

Farming Turtle(クワ)では土ブロックや草ブロックを耕すことができる。

Turtleごとの破壊・獲得可能ブロック
Turtle 破壊可能ブロック 獲得判定ツール
Mining 岩盤以外何でも ダイヤツルハシ
Felling 岩盤以外何でも ダイヤ斧
Digging 雪系、土系、砂系、草系、葉系、カボチャ系 ダイヤシャベル
Farming 草系、葉系、カボチャ系 ダイヤクワ
Melee 草系、葉系、蜘蛛の巣、羊毛ブロック ダイヤ剣

耕耘可能ブロック
turtle.dig() Turtleの正面にあり、 その一つ上が空気である土・草ブロック
Turtleの正面が空気であり、 その一つ下にある土・草ブロック
turtle.digUp() Turtleの上にあり、 その一つ上が空気である土ブロック
turtle.digDown() Turtleの下が空気であり、 その一つ下にある土・草ブロック

例:
print(turtle.dig())
Turtleに正面のブロックを採掘するように命令し、その結果を表示する。
(採掘できたら"true"が、できなかったら"false"が表示される)

place

  • turtle.place( [signText] )
    turtle.placeUp( [signText] )
    turtle.placeDown( [signText] )
  • Turtleの正面(place)、真上(placeUp)、真下(placeDown)へ選択スロットのブロックを設置する。
    【1.4-】看板設置時に看板に記載する文章をsignText(文字列)で指定できる。
    【1.4-】一部の道具をTurtleの正面(place)、真上(placeUp)、真下(placeDown)の対象に対して使用する
  • 戻り値:ブーリアン型。設置に成功したらtrueを、失敗したらfalseを返す

CC1.3x以前は、選択スロットにアイテムがない場合はそれ以降のスロットのアイテムが設置されていた(CC1.4以降は選択スロットのみが対象)。

CC1.4になって多くのブロックが意図した通りに置けるようになったが、やはり念のために事前テストを推奨。
看板は基本的に地面に立てる形で設置される。ブロック側面へ設置するには設置位置の左右と真下が看板設置不可な状態である必要がある。引数の文字列中に改行文字(\n)を含めるとそこで改行できる。看板の仕様通り4行まで表示可能。5行目以降は表示されない。

CC1.5で、これまで失敗していたブロックの向きも設置できるようになった。

detect

  • turtle.detect()
    turtle.detectUp()
    turtle.detectDown()
  • Turtleの正面(detect)、真上(detectUp)、真下(detectDown)にブロックが存在するか調べる
  • 戻り値:ブーリアン型。ブロックが存在したらtrueを、しなかったらfalseを返す

例:
if turtle.detect() then
    turtle.dig()
end
正面にブロックがあったら、それを採掘する。

compare

  • turtle.compare()
    turtle.compareUp()
    turtle.compareDown()
  • Turtleの正面(compare)、真上(compareUp)、真下(compareDown)のブロックと選択スロットのアイテムを比較する
  • 戻り値:ブーリアン型。比較結果が等しかったらtrueを、等しくなかったらfalseを返す

木の種類や羊毛ブロックの色などメタ値・ダメージ値の違いも別ブロックとして区別される。

compareTo

【1.4-】
  • turtle.compareTo( slotNum )
  • slotNum番目のスロットと選択スロットのアイテムを比較する
  • 戻り値:ブーリアン型。比較結果が等しかったらtrueを、等しくなかったらfalseを返す

drop

  • turtle.drop( [count] )
    turtle.dropUp( [count] )
    turtle.dropDown( [count] )
  • 選択スロットのアイテムを全部、またはcount(数値)個だけTurtleの正面(drop)、真上(dropUp)、真下(dropDown)からドロップする
  • 戻り値:ブーリアン型。ドロップが成功したらtrueを、失敗したらfalseを返す

選択スロットにアイテムがない場合は、選択スロット以降(16番目の次は1番目とループ)でアイテムがあるスロットを検索し、アイテムがあるスロットが見つかったらそこからドロップしてtrueを返す。その際、検索やドロップで選択スロット番号は動かず、選択していないスロットからドロップされる。全スロットにアイテムがない場合はfalseを返す。
(※選択していないスロットからドロップする件については公式フォーラムでも頻出の質問だが、不具合ではなく仕様である。)

ドロップ先がチェストやかまど、Turtleなどインベントリを持つブロックだった場合は、そのインベントリに左上から順番にアイテムが収納される。インベントリに1つも収納できない場合はアイテムの移動は行われずfalseを返す。一部だけでも収納する余裕がある場合はその分だけアイテムを移動しtrueを返す。

かまどの各スロットへのアクセス
CC1.4-1.51 CC1.52-※
かまど上面 素材 素材
かまど側面 完成品 燃料
かまど下面 燃料 完成品
※config\forge.cfgのB:removeErroringEntitiesをtrueにするとCC1.51以前と同じ仕様になる(他のMinecraft Forge利用modにも影響)。

suck

【1.4-】
  • turtle.suck()
    turtle.suckUp()
    turtle.suckDown()
  • Turtleの正面(drop)、真上(dropUp)、真下(dropDown)に落ちているアイテムを一塊拾得する
  • 戻り値:ブーリアン型。拾得に成功したらtrueを、失敗したらfalseを返す

ドロップアイテムが選択スロットに収納できない場合は、それ以降のスロットに収納される。CC1.5付近より、どのスロットにも収納できなかった場合には拾得した直後にアイテムをTurtleの真後ろにドロップしてtrueを返す。更にTurtleの真後ろにチェストなどインベントリを持つブロックがある場合はドロップをせずそこに収納するが、Turtleのスロットにも真後ろのブロックのインベントリにも収納できなかった場合は拾得アイテムが消失するので注意。

拾得先がチェストやかまど、Turtleなどインベントリを持つブロックだった場合は、そのインベントリの左上にあるアイテムから順番にTurtleの選択スロットへ収納する。インベントリからの収納はドロップアイテムの拾得より優先される。

インベントリのアイテムが選択スロットに収納できない場合は、それ以降のスロットに収納される。どのスロットにも収納できない場合はアイテムの移動は行われずにfalseを返す。一部だけでも収納する余裕がある場合はその分だけアイテムを収納しtrueを返す。
かまどを扱う場合のスロットとTurtleの位置についてはdropの解説を参照。

attack

【1.4-】
  • turtle.attack()
    turtle.attackUp()
    turtle.attackDown()
  • Turtleの正面(detect)、真上(detectUp)、真下(detectDown)にいる対象を攻撃する
  • 戻り値:ブーリアン型。攻撃が成功したらtrueを、失敗したらfalseを返す

道具や剣を持つTurtle限定。

攻撃力はTurtleに装着されている道具(武器)のごとに決まっている。
CC1.4では攻撃されたMobが攻撃したTurtleに対して反撃していたが、CC1.5付近以降はTurtleに反撃しなくなった。
Mobを倒すと経験値やプレイヤーによる撃破限定のアイテムもドロップする。ドロップしたアイテムは経験値を除いてタートルに収納される。

ドロップアイテムが選択スロットに収納できない場合は、それ以降のスロットに収納される。どのスロットにも収納できない場合はその場にドロップする。CC1.5付近より、スロットに収納できなかったアイテムはTurtleの真後ろにドロップするようになった。更にTurtleの真後ろにチェストなどインベントリを持つブロックがある場合はドロップをせずそこに収納するが、Turtleのスロットにも真後ろのブロックのインベントリにも収納できなかった場合は拾得アイテムが消失するので注意。

【1.51-】攻撃範囲がとても短かったのが修正された。

Turtle vs. Mob (攻撃回数)
Mob Melee(剣)
HP-10
Felling(斧)
HP-6
Mining(ツルハシ)
Digging(シャベル)
HP-2
Farming(クワ)
HP-1
Spider HP16 2 3 8 16
Skeleton HP20 2 4 10 20
Creeper HP20 2 4 10(※) 20(※)
Zombie HP20 AP2 3 4 11 22
Enderman HP40 4 7 20 40
※CC1.4xでは倒す前に自爆