API > Turtle


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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

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




Turtle API

Turtle(タートル)の動作を制御する。
Turtleに何らかの行動させる関数は、その行動の結果が返ってくるまで次の処理へは進まない(8ticks、0.4秒間)。
行動結果を待つ処理にはos.pullEvent関数が含まれるため、ループを使ってTurtleに連続で行動させても"Too long without yielding"による強制中断は発生しない。

assets\computercraft\lua\rom\apis\turtle で定義

エラーメッセージについて

【1.56-】
成否をブーリアン型で返す関数が失敗した場合、2番目の戻り値として失敗の内容を示す文字列を返すようになった。

例:
r, e = turtle.forward()
rに移動の成否が、移動に失敗した場合はeにエラーメッセージが返る。
例えば燃料切れの場合はrにfalseが、eに"Out of fuel"が返る。

デフォルトのエラーメッセージ
メッセージ 解説
error 特定の失敗に対してエラーメッセージが設定されていない場合に返る

refuel

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

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

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

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

燃料アイテムと補給レベルの例
溶岩バケツ※1 石炭ブロック ブレイズロッド 石炭・木炭 原木・木材 棒・苗木
CC1.4-1.47 1200 - 144 96 18 6
CC1.48- 1000 800※2 120 80 15 5
※1:溶岩バケツを燃料にした場合、空のバケツが残る。
※2:CC1.56-。石炭より効率が良い(石炭9個からクラフト→石炭10個分の燃料)。

【1.56-】エラーメッセージ
メッセージ 解説
No items to refuel with 選択スロットにアイテムがなかった
Selected item not fuel 選択スロットに燃料アイテムがなかった


getFuelLevel

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

内部でos.pullEvent関数を使っていないため、結果は即時に返る。

例:
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.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

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

【1.56-】エラーメッセージ
メッセージ 解説
Movement obstructed ブロックやmob、プレイヤーなどに妨害された
Out of fuel 燃料切れ
Too high to move ブロックを設置できる限界高度にいる
Too low to move ブロックを設置できる限界深度にいる

例:
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(数値)番目のスロットのアイテム数を取得する
  • 戻り値:数値型。アイテムの数を整数値で返す。slotNumが不正(1未満または17以上)の場合はエラー

内部でos.pullEvent関数を使っていないため、結果は即時に返る。

getItemSpace

  • turtle.getItemSpace( slotNum )
  • slotNum(数値)番目のスロットのアイテムの空き数を取得する
  • 戻り値:数値型。アイテムの空き数を整数値で返す。空のスロットは64を返す。slotNumが不正(1未満または17以上)の場合はエラー

内部でos.pullEvent関数を使っていないため、結果は即時に返る。

transferTo

【1.45-】
  • turtle.transferTo( slotNum [, count] )
  • 選択スロットのアイテムをslotNum番目のスロットに最大で全部(count省略時)、またはcount個移動する
  • 戻り値:ブーリアン型。移動に成功したらtrueを、失敗したらfalseを返す。slotNumが不正(1未満または17以上)の場合はエラー。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

アイテムを一個も移動できなかった場合はfalse(ただしslotNum = 選択スロット番号 の場合やcountが0の場合はtrue)、一個でも移動できた場合はtrueが返る。なので、trueが返ったとしても、選択スロットのアイテムが全部、またはcountで指定しただけ移動されたという保証はない。

例えば、選択スロットにStoneが16個あり、移動先スロットにStoneが60個あった場合、turtle.transferTo(移動先スロット番号) は選択スロットから移動先スロットへ4個移動してtrueが返る(結果、選択スロットが12個、移動先スロットが64個になる)。

【1.56-】エラーメッセージ
メッセージ 解説
No items to transfer 選択スロットにアイテムがなかった
No space in target slot 移動先スロットに空きがなかった
Target slot has different item 選択スロットと移動先スロットのアイテムの種類が違った。
スタック不可な同種の武器・防具・道具同士であっても、耐久値やエンチャントが異なる場合はこちらが返る

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

craft

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

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を返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

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

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

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

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

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

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

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

【1.56-】エラーメッセージ
メッセージ 解説
Nothing to dig here 採掘対象が存在しない、または破壊不可能
Nothing to dig with ツールが装着されていない

例:
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を返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

選択スロットにTurtleが使用可能なアイテムがあった場合、それを持った状態で対象(エンティティやブロック)を右クリックしたときの動作をする。対象の優先順位はエンティティ>ブロック。ただし、スプラッシュポーションは使用できず、他mod追加アイテムについては正しく作動したり、しなかったりするため事前テスト推奨。

【1.4】より選択スロットのアイテムのみが設置・使用の対象となるようになった。CC1.3x以前は、選択スロットにアイテムがない場合はそれ以降のスロットのアイテムが設置されていた。また、それ以前より多くのブロックが意図した通り(向きなど)に置けるようになった。が、やはり念のために事前テストを推奨。

看板は基本的に地面に立てる形で設置される。ブロック側面へ設置するには設置位置の左右と真下が看板設置不可な状態である必要がある。引数の文字列中に改行文字(\n)を含めるとそこで改行できる。看板の仕様通り4行まで表示可能。5行目以降は表示されない。

【1.5】これまで失敗していたブロックの向きも設置できるようになった。

【1.56-】エラーメッセージ
メッセージ 解説
Cannot place block here ブロックが設置できなかった
Cannot place item here アイテムが設置・使用できなかった
No items to place 選択スロットにアイテムが無かった

detect

  • turtle.detect()
    turtle.detectUp()
    turtle.detectDown()
  • Turtleの正面(detect)、真上(detectUp)、真下(detectDown)にブロックが存在するか調べる
  • 戻り値:ブーリアン型。ブロックが存在したらtrueを、しなかったらfalseを返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

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

compare

  • turtle.compare()
    turtle.compareUp()
    turtle.compareDown()
  • Turtleの正面(compare)、真上(compareUp)、真下(compareDown)のブロックと選択スロットのアイテムを比較する
  • 戻り値:ブーリアン型。比較結果が等しかったらtrueを、等しくなかったらfalseを返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

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

compareTo

【1.4-】
  • turtle.compareTo( slotNum )
  • slotNum番目のスロットと選択スロットのアイテムを比較する
  • 戻り値:ブーリアン型。比較結果が等しかったらtrueを、等しくなかったらfalseを返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

同種の武器・防具・道具同士の比較の場合、耐久値やエンチャントが異なってもtrueが返る。

drop

  • turtle.drop( [count] )
    turtle.dropUp( [count] )
    turtle.dropDown( [count] )
  • 選択スロットのアイテムを全部、またはcount(数値)個だけTurtleの正面(drop)、真上(dropUp)、真下(dropDown)からドロップする
  • 戻り値:ブーリアン型。ドロップが成功したらtrueを、失敗したらfalseを返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

選択スロットにアイテムがない場合は、選択スロット以降(16番目の次は1番目とループ)でアイテムがあるスロットを検索し、アイテムがあるスロットが見つかったらそこからドロップしてtrueを返す。その際、検索やドロップで選択スロット番号は動かず、選択していないスロットからドロップされる。全スロットにアイテムがない場合はfalseを返す。
【1.56】より選択スロットからのみドロップされるようになった。

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

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

【1.56-】エラーメッセージ
メッセージ 解説
Inventory full ドロップ先のインベントリが満杯だった
No items to drop 選択スロットにアイテムが無かった

suck

【1.4-】
  • turtle.suck()
    turtle.suckUp()
    turtle.suckDown()
  • Turtleの正面(drop)、真上(dropUp)、真下(dropDown)に落ちているアイテムを1スタック拾得する
  • 戻り値:ブーリアン型。拾得に成功したらtrueを、失敗したらfalseを返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

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

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

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

【1.56-】エラーメッセージ
メッセージ 解説
No items to suck 拾えるアイテムが無かった
No space for items アイテムの収納場所が無かった

attack

【1.4-】
  • turtle.attack()
    turtle.attackUp()
    turtle.attackDown()
  • Turtleの正面(detect)、真上(detectUp)、真下(detectDown)にいる対象を攻撃する
  • 戻り値:ブーリアン型。攻撃が成功したらtrueを、失敗したらfalseを返す。
    【1.56-】ブーリアン型, 文字列型。1番目の戻り値がfalseの場合、2番目の戻り値にエラーメッセージが返るようになった

道具や剣を持つTurtle限定。

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

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

【1.51】攻撃範囲がとても短かったのが修正された。
【1.56】CC1.55で攻撃力が1になっていたのが修正された。しかし、CC1.53以前とは若干攻撃力が異なっている。

【1.56-】Turtle vs. Mob (攻撃回数)
Mob Melee(剣)
HP-9
Felling(斧)
HP-6
Mining(ツルハシ)
Digging(シャベル)
Farming(クワ)
HP-3
Spider HP16 2 3 6
Skeleton HP20 3 4 7
Creeper HP20 3 4 7
Zombie HP20 AP2 3 4 8
Enderman HP40 5 7 14
※ハート1 = HP2
+ 【1.4-1.53】Turtle vs. Mob (攻撃回数)

【1.56-】エラーメッセージ
メッセージ 解説
Nothing to attack here 攻撃対象が存在しない
Nothing to attack with 武器・ツールが装着されていない