読者です 読者をやめる 読者になる 読者になる

Minecraftとタートルと僕

PCゲームMinecraftのMOD「ComputerCraft」の情報を集めたニッチなブログです。

ComputerCraft1.6のTurtle APIまとめ

Lua API Minecraft ComputerCraft

はじめに

残念なことに、いまだComputerCraft日本語Wikiが更新停止中なので個人的な覚え書きも兼ねて、Turtle APIをまとめてみます。

特に変更が無いAPIについて、詳しくはCC日本語Wikiを見てください。

以下にTurtleAPIの全ての関数を並べます。 ComputerCraft1.63で変更されたAPIは青、追加されたAPIについては赤にしています。

2015年1月追記

CC非公式JapanWikiが新しくできたので、TurtleAPIは以下を参照しましょう。

燃料関係

タートルは、1移動するために1の燃料値を消費します。燃料値を増やすにはカマド燃料アイテムを与えなくてはなりません(例:石炭で80の燃料値)。 一度増やした燃料値は、タートルに名前(ラベル)をつけておくことで、撤去してもそのまま保持されます。

そのため、一度に数万数十万単位の燃料を補給しておいて、無補給でほぼ無限に動かせるようにするという裏技的な利用方法がありました。

しかしComputerCraft1.6より保持できる燃料値に上限ができたため、現在はこの裏技は使えません。

なお設定ファイル「ComputerCraft.cfg」で、燃料を必要とするかどうか、燃料値の上限をどれだけにするかを設定できます。 デフォルトでは、「燃料を必要とする」「普通のタートルの燃料値上限は20000、Advancedタートルは100000」となっています。

  • turtle.getFuelLevel()
    • 現在の燃料値を返します。
    • 戻り値1: 燃料値(number)
  • turtle.refuel( [quantity] )
    • 選択スロットにあるアイテムを全て(あるいはquantity個だけ)使って燃料を補給します。
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)
  • turtle.getFuelLimit()
    • 燃料値の上限を返します。
    • 戻り値1: 燃料値(number)

移動系

  • turtle.forward(), turtle.back()
    • 前進、後進
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String) 
  • turtle.up(), turtle.down()
    • 上昇、下降
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String) 
  • turtle.turnLeft(), turtle.turnRight()
    • 右回転、左回転
    • 戻り値1: 燃料を消費せず、常に成功(true)

インベントリの操作

タートルのインベントリにおいて、スロット番号は以下のようになっています。

  • f:id:hevohevo:20131208215351p:plain

また、現在どのスロットを選んでいるかという「選択スロット」の概念があります。上図のスロット1にカーソルがついているので、現在の選択スロットが1であることを意味しています(少々見づらいですががが)。

turtle.place()などのように「選択スロットのブロックを、○○する」という関数が多く存在するので注意しましょう。それら選択スロットが重要な意味を持つ関数を実行するときには、たとえ冗長でも、その関数の直前でturtle.select()を実行しておくとバグが減ります。

  • turtle.select( slotNum )
    • 現在の選択スロット番号を slotNum に変える。
    • 戻り値1: 成功(true)
  • turtle.getSelectedSlot()
    • 現在選択されているスロット番号を返す。これ、いつの間にか追加されていたのですね。気づかなかった。
    • 戻り値1: 個数(number)
  • turtle.getItemCount( [slotNum] )
    • スロット番号 slotNum にあるアイテムの個数を返す。
    • 引数slotNum省略時には、現在の選択スロットのアイテム個数を返す。
    • 戻り値1: 個数(number)
  • turtle.getItemSpace( [slotNum] )
    • スロット番号 slotNum にあとどれだけアイテムを入れることができるか返す。
    • 引数slotNum省略時には、現在の選択スロットについて返す。
    • 戻り値1: 個数(number)
  • turtle.compareTo( slotNum )
    • 現在の選択スロットとスロット番号slotNumのアイテムを同じかどうか比較。
    • (選択スロットと比較先スロット、ともにアイテムがないときもtrue)
    • 覚え方は、Compare selectedSlot to slotNum.
    • 戻り値1: 同じ(true)、異なる(false)。なお、メタ値・ダメージ値の違いも判別するため武器・道具の消耗具合によって異なるアイテムと判断される。
  • turtle.transferTo( slotNum, [quantity] )
    • 現在の選択スロットからスロット番号slotNumへ、アイテムを可能な限り全て(あるいはquantityだけ)移す。
    • 覚え方は、Transfer selectedSlot to slotNum.
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)
  • turtle.getItemDetail( [slotNum] ) ・・・CC1.64より追加
    • 指定スロットにあるアイテムの詳細情報を調べます。
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 成功したらアイテムデータをテーブルで、失敗ならエラーメッセージ
    • { count = 1, name = "minecraft:dirt", damage = 0 } など

ブロック設置系

  • turtle.place(), turtle.placeUp(), turtle.placeDown()
    • 選択スロットにあるブロックを設置する(正面、上、下)
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)

道具の装備系

  • turtle.equipLeft(), turtle.equipRight()
    • 選択スロットにある道具と、左(右)側に装備した道具を交換する。
    • 選択スロットにダイヤ斧を置き装備していない状態でこの関数を実行すると装備する。選択スロットを空にして実行すると装備をはずす。
    • 装備可能な道具は、ダイヤ剣、つるはし、斧、スコップ、クワ。そしてクラフトテーブル、WirelessModemなど。
    • 戻り値1: 交換成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)。「Not a valid upgrade」など

採掘(伐採)系

  • turtle.dig( [toolSide] ), turtle.digUp( [toolSide] ), turtle.digDown( [toolSide] )
    • 正面(上、下)のブロックを採掘し回収する。適切な道具を使わなければ、ブロックを採掘できなかったりあるいは採掘できても回収できないことがある。
      • 例: ダイヤ剣では丸石を採掘できない。斧で他のタートルをdigすると破壊はできるが回収できない(涙目)。
    • また、ダイヤクワで土を耕すこともできる。
    • 引数toolSideによって、両手に2つの道具を持っているときにどちら側を使うか指定できる。省略すると適切な道具を使ってくれる?(要検討)
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)

攻撃系

  • turtle.attack( [toolSide] ), turtle.attackUp( [toolSide] ), turtle.attackDown( [toolSide] )
    • 正面(上、下)に向かって手に持っている道具で攻撃し、倒したらドロップアイテムを入手(選択スロットに格納)する。
    • 引数toolSideによって、両手に2つの道具を持っているときにどちら側を使うか指定できる。省略時にどちらを優先して使うかは不明。
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)
    • 攻撃力は、ダイヤ剣>斧>その他。敵対MOBはタートルに反撃しないので一方的に攻撃できる。
    • プレイヤーがその道具を使って攻撃したときと同じアイテムをドロップするので、たとえば経験値オーブなどもドロップする。ちなみに、ダイヤ斧でMobを倒すと女神装備のFragments Of The Faithをドロップできる。

正面(真上・真下)ブロック検知・比較系

  • turtle.detect(), turtle.detectUp(), turtle.detectDown()

    • 正面(下・上)にブロックがあるかどうかを調べる
    • 戻り値1: 存在する(true)、存在しない(false)
  • turtle.compare(), turtle.compareUp(), turtle.compareDown()

    • 選択スロットにあるアイテムと正面(上、下)にあるブロックを比較する。
    • 戻り値1: 同じブロック(true)、違うブロック(false)
  • turtle.inspect(), turtle.inspectUp(), turtle.inspectDown() ・・・cc1.64より追加

    • 正面(上・下)にあるブロックの詳細情報を調べる。turtle.detect()の完全上位互換
    • 戻り値1: 存在する(true)、存在しない(false)
    • 戻り値2: 存在するなら詳細情報をテーブルで、しないならエラーメッセージ
    • { name = "minecraft:dirt", metadata = 0 }

アイテムのドロップ・入手(チェストに格納・入手)

  • turtle.drop( [quantity] ), turtle.dropUp( [quantity] ), turtle.dropDown( [quantity] )

    • 正面(下・上)に選択スロットのアイテムを全て(あるいはquantityだけ)ドロップする。その方向にチェストなどインベントリを持つブロックがあったらその中に格納しようとする。
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)
    • (CC1.6で待望の個数指定機能が実装されました! ただし、ちょっとbuggyなので要注意。早く修正されるとよいのですが)
  • turtle.suck( [quantity] ), turtle.suckUp( [quantity] ), turtle.suckDown( [quantity] )

    • 正面(下・上)から1スタック(あるいはquantityだけ)のアイテムを拾う。その方向にチェストなどインベントリを持つブロックがあったらその中から取り出そうとする。
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)
    • (CC1.6で待望の個数指定機能が実装されました! ただし、ちょっとbuggyなので要注意。早く修正されるとよいのですが)

クラフト系(クラフティタートルのみ)

  • turtle.craft( [quantity] )
    • 計16のスロット全てをクラフティングテーブルのように使ってアイテムをできるだけ多く(あるいはquantity個だけ)クラフトします。
    • 16スロットのうち任意の3x3範囲をクラフティングテーブルのように使います。これは、16スロットにクラフトに関係ないアイテムがあったらクラフトに失敗することを意味します(不満)。
    • 戻り値1: 成功(true)、失敗(false)
    • 戻り値2: 失敗時のみエラーメッセージ(String)