タートルのインベントリと横のチェストの関係が重要となります
黄色のタートルが自動植林のタートルです
横のチェストからアイテムを入手
16個の自動植林タートルにプログラムを起動させるのは面倒くさいですが、この問題は検討中です。
スロット1が苗木、スロット2が骨粉、スロット3が木炭
苗木と木炭が2 、骨粉が10個を下回るとプログラムはスリープになります
スロット1.2.3に違うアイテムが入るとエラーを起こします
原木を伐採して横のチェストに原木を入れます
プログラムの流れ
- 横のチェストからアイテムを入手
- スロット1に苗木、スロット2に骨粉、スロット3に木炭を移動
- 燃料レベルが80より少なければ燃料の補給
- 苗木を植える
- 骨粉を散布
- 前のブロックが原木になれば伐採
- 上昇、上昇できなければ上を破壊
- 前のブロックが原木でないなら下降
- 下が土か草ブロックで下降を終える
- アイテムが規定数より少なくなるとチェストから入手
- スロット1.2.3以外のアイテムをチェストに戻す
複数タートルでの自動植林 プログラム4
4.のプログラムはここから
--####自動植林プログラム
local Sleep=60
turtle.turnRight()
turtle.turnRight()
while true do--メイン処理の無限ループ
while true do--アイテム補充の無限ループの実行
if turtle.getItemCount(1)<2 or--スロット1の下限
turtle.getItemCount(2)<10 or--スロット2の下限
turtle.getItemCount(3)<2 then--スロット3の下限
for A=4,16 do--スロット4~16までアイテムをチェストから入手
turtle.select(A)
turtle.suck()
local Slot=turtle.getItemDetail()
if Slot then
if Slot.name=="minecraft:sapling" then--苗木なら
turtle.transferTo(1)--スロット1に入れる
elseif Slot.name=="minecraft:dye" then--骨粉なら
turtle.transferTo(2)--スロット2に入れる
elseif Slot
.name=="minecraft:coal" then--木炭なら
turtle.transferTo(3)--スロット3に入れる
end
end
end
for A=4,16 do--スロット4~16までのアイテムをチェストに戻す
turtle.select(A)
turtle.drop()
end
else
break--アイテムの補充の無限ループを終える
end
if turtle.getItemCount(1)<2 or
turtle.getItemCount(2)<10 or
turtle.getItemCount(3)<2 then
print("Item_Supply:OsSleep",Sleep,"ms")
os.sleep(Sleep)--アイテムが足りなかったらスリープ
end
end
turtle.turnRight()
if turtle.getFuelLevel()<80 then--タートルの燃料が80より少ないなら
turtle.select(3)
turtle.refuel(1)--燃料の補給
end
turtle.select(1)
turtle.place()--苗木を植える
turtle.select(2)
for A=1,9 do--骨粉を巻く無限ループの実行
local There,What=turtle.inspect()
if There then
if What.name=="minecraft:log" then--前が原木なら
break--骨粉を巻く無限ループを終える
else--原木でないなら
turtle.place()--骨粉散布
os.sleep(1)
end
end
end
for A=1,100 do--原木伐採のループの実行
local There,What=turtle.inspect()
if There then
if What.name=="minecraft:log" then--前が原木なら
turtle.dig()--原木を破壊
if turtle.up() then
else--上昇できなければ
turtle.digUp()--上の葉を破壊
turtle.up()
end
else
break--原木でないなら原木伐採ループを終える
end
end
end
while true do--下降の無限ループ
local There,What=turtle.inspectDown()
if There then
if What.name=="minecraft:grass" or--下が草ブロック
What.name=="minecraft:dirt" then--下が土ブロック
break--下降の無限ループを終える
end
else
turtle.down()
end
end
turtle.suck()
turtle.turnLeft()
end
4.のプログラムはここまで
1台のタートルでの自動植林ならドロップした苗木をタートルを移動して回収することも可能ですが、極力動きを少なくすることがエラーを出さない条件となりますので行いません。また葉っぱを刈るために回転しながら破壊を試してみましたが、メインの分配タートルを破壊してしまいました。
次のプログラムです
複数タートルでの自動植林 プログラム5
関連サイト
コンピュータークラフトを極める その2
0 件のコメント:
コメントを投稿