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

Minecraftとタートルと僕

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

クラフティタートルプログラミング チュートリアル(1)

クラフティタートルの仕様

まずはクラフティタートルの仕様をまとめましょう。

  • 1~16までの4x4インベントリのうちすべての3x3をクラフティングテーブルとして認識する。
  • f:id:hevohevo:20131031225640p:plain
  • 3x3のレシピの場合、1,2,3,5,6,7,9,10,11のような左上の3x3を使っても良いし、6,7,8,10,11,12,14,15,16のような右下の3x3を使っても良い。
  • インベントリの中に材料「だけ」が置いてあることが重要。関係ないアイテムがあるとクラフトに失敗する。
  • クラフトは、「turtle.craft(個数)」で行う。クラフトする数を指定できるが、その個数には以下のような制限がある。
    • 個数0:実際にはクラフトせず、クラフトできるかどうかだけをtrue/falseで返す。
    • 個数指定の最大値は、クラフトしたときの完成品を1スロットにスタックできる数だけ。
    • 例えば、砂糖なら一度に64個クラフトできるが、エンダーパールなら16個しかできない。
    • 個数を省略すると、この最大個数だけクラフトする。
  • クラフトした完成品は選択スロットに入るが、入らない場合はその次のスロットに入る

向いていること/向いていないこと

まず、タートルは個別のアイテムの種類を認識できないということに注意しなければなりません。
だから、複数種類の材料を複雑に並べてクラフトするという用途にはあまり向きません。
もちろんプログラムしだいで可能になるのですが、そうするくらいなら、他のModにある自動作成機械(たとえばThermal Expantionの Cyclic Assemblerなど)を使った方が圧倒的に楽なのです。
むしろ向いているのは、少数(できれば1か2)種類の材料で不定形レシピのクラフトだと思います。

例えばサトウキビは1個をそのままクラフトすることで砂糖になります。鉱石キビを導入しているなら、各鉱石キビも1個をそのままクラフトして鉱石1個にできます。

仮にこのようなクラフトを自動作成機械で自動化しようとすると、1種類につき1台必要になってしまいます。
砂糖キビクラフト用に1台、粘土キビ用に1台、ダイヤキビ用に1台……。これはひどい。
でもクラフティタートルなら、材料を並べる配置が同じならどんな材料であろうと1台(と簡単な1つのプログラム)で対応可能です。
色々とModを入れていると、キビ以外にも1個の材料をそのままクラフトするレシピが追加されます。それらをすべて1台のクラフティタートルで対応できる。ね? 便利でしょう?

まとめると

  • クラフティタートルは、複数種類の材料を複雑な配置に並べるクラフトにはあまり向かない
  • むしろ、材料を並べる配置が同じならどんな材料であろうと1台で対応可能という点を生かす方がいい

では、どうしたらそんなことできるの?

実際のプログラムは次回提示するとして。イメージは次のような感じで。

  1. タートルの真上には材料となるアイテムが詰まっているチェストを用意。今回は、各種のサトウキビを詰め込んでおく
  2. タートルの真下には完成品格納用のチェストを設置
  3. プログラムを開始したら、真上の材料チェストから材料を1スタックだけとる。「turtle.suck()」
  4. そして「turtle.craft()」でクラフト
  5. インベントリにある完成品を下のチェストに「turtle.dropDown()」

以上の繰り返し。

たったこれだけ。簡単でしょう?