8x8の小麦の自動栽培
タートルが、スロットのアイテムを調べるAPI、turtle.getItemDetail() を使いこなすことが重要です。lua>turtle.getItemDetail(スロット)と入力して小麦を調べるます。
count = 64,
スロットにアイテムが、64個ある
name = "minecraft:wheat",
アイテム名は"マインクラフトの小麦"
damage = 0,
ダメージは、0
このタートルAPIを使用してチェストにドロップするアイテムを指定します。
クワを持ったファーミングタートル
ラージチェスト4個と8x8の農地
タートルの前のチェストに木炭
次のチェストに種
※最終プログラムでは種のドロップするのでスタート時は、1スタックです
次のチェストに骨粉
プログラムスタート、タートルは前のチェストから燃料を補給して農地を耕します
燃料補給、スロット1に種64個、スロット2~4に骨粉を入手
1周目でスロット1の種を植え付けます
2周目でスロット2の骨粉を散布
3周目でスロット3の骨粉を散布
4周目でスロット4の骨粉を散布
最後に収穫します
タートルの農地での動きを考えます
タートルの動きは1~64まで動き最後に1に戻ります
--####1~8までのタートルの動き
for A=1,7 do
turtle.forward()
end
--####最初の列の移動
turtle.turnRight()
turtle.forward()
turtle.turnRight()
--####9~16までのタートルの動き
for A=1,7 do
turtle.forward()
end
--####2回目の列の移動
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
最後の64の地点で、1の位置に戻るので上のタートルの動きは、3回のループ+1で最後の部分の2回目の列の移動をこのようにします
--####最後の列の移動
turtle.turnRight()
for A=1,7 do
turtle.forward()
end
この基本となるタートルの動きに農地を耕す、小麦を収穫を追加します
--####前に進んで下を破壊
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
種を植える、骨粉を散布を追加します
--####前に進んで下に設置
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
※注意
このように最後が前に進むでは農地からはみ出してしまいます
--####下に設置して前に進む
for A=1,7 do
turtle.placeDown()
turtle.forward()
end
上のような場合は、最後が下に設置、もしくは下を破壊となります
--####下に設置して前に進む
for A=1,7 do
turtle.placeDown()
turtle.forward()
end
turtle.placeDown()
タートルの農地でのループを考えます
1回目、耕す、turtle.digDown()
2回目、種を植える、turtle.placeDown()
3回目、骨粉を散布、turtle.placeDown()
4回目、骨粉を散布、turtle.placeDown()
5回目、骨粉を散布、turtle.placeDown()
6回目、収穫、turtle.digDown()
これをループで考えると
タートルが下を破壊、turtle.digDown()、を1回
タートルが下に置く、turtle.placeDown()、を4回
さらにチェストへの動きを考えると
前のチェストから燃料の補給、turtle.refuel()
--####無限ループの開始
--####農地での動き
タートルが下を破壊、turtle.digDown()、を1回
--####チェストでの動き
下のチェストへアイテムをドロップ、turtle.dropDown()
下のチェストから燃料の補給、turtle.refuel()
下のチェストからのアイテムの入手、turtle.suckDown()
--####農地での動き
タートルが下に置く、turtle.placeDown()、を4回
--####無限ループの終わり
--####とりあえず動かしてみるプログラム
--####燃料の補給
turtle.select(1)
turtle.suck()
turtle.refuel()
turtle.up()
--####農地に移動
for A=1,8 do
turtle.forward()
end
--####無限ループの開始
while true do
--####耕すと収穫のループ
for A=1,3 do
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
end
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
--####チェストに戻る
turtle.turnRight()
for A=1,7 do
turtle.forward()
end
turtle.turnRight()
turtle.back()
--####収穫チェストにドロップ
for Slot=1,16 do
turtle.select(Slot)
turtle.dropDown()
end
for A=1,6 do
turtle.back()
end
--####燃料補給
turtle.select(1)
turtle.suckDown()
turtle.refuel()
for A=1,2 do
turtle.forward()
end
--####スロット1、種の補給
turtle.select(1)
turtle.suckDown()
for A=1,2 do
turtle.forward()
end
--####スロット2~4骨粉の補給
for Slot=2,4 do
turtle.select(Slot)
turtle.suckDown()
end
for A=1,3 do
turtle.forward()
end
--####種の植え付けと骨粉の散布3回
for Slot=1,4 do
turtle.select(Slot)
for A=1,3 do
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
end
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnRight()
for A=1,7 do
turtle.forward()
end
turtle.turnRight()
end
end
--####とりあえず動かしてみるプログラムの終わり
このプログラムは、収穫が終わったタートルが、すべての持ち物を収穫用のチェストにドロップするのでラージチェストがすぐに満杯になります。満杯になった収穫用のチェスト
こうなるとタートルのインベントリも思い通りにはなりません
問題点は作物の成長が不確実なので、3回の骨粉散布が不確定となり骨粉が余ってしまい収穫用のチェストに入ることと、収穫時にドロップする種の量が多い、これが収穫用のチェストの圧迫の原因です。
問題となる部分
タートルのスロットの全アイテムをドロップする
--####収穫チェストにドロップ
for Slot=1,16 do
turtle.select(Slot)
turtle.dropDown()
end
for A=1,6 do
turtle.back()
end
変更後
タートルのスロットの指定したアイテムだけをドロップする
--####収穫用のチェストに小麦をドロップ
for Slot=1,16 do
turtle.select(Slot)
local Wheat=turtle.getItemDetail()
if Wheat then
if Wheat.name=="minecraft:wheat" then
turtle.dropDown()
end
end
end
for A=1,2 do
turtle.back()
end
--####骨粉のチェストに余った骨粉をドロップ
for Slot=1,16 do
turtle.select(Slot)
local Dye=turtle.getItemDetail()
if Dye then
if Dye.name=="minecraft:dye" then
turtle.dropDown()
end
end
end
for A=1,2 do
turtle.back()
end
--####種のチェストにドロップした種をドロップ
for Slot=1,16 do
turtle.select(Slot)
local Wheat_Seeds=turtle.getItemDetail()
if Wheat_Seeds then
if Wheat_Seeds.name=="minecraft:wheat_seeds" then
turtle.dropDown()
end
end
end
for A=1,2 do
turtle.back()
end
これで収穫用のチェストに骨粉や種が入ることがなくなりました
燃料の補給もタートルの燃料レベルに合わせて補給するようにします
変更前
燃料補給は、1回のループで必ず行う
--####燃料補給
turtle.select(1)
turtle.suckDown()
turtle.refuel()
変更後
燃料の補給は、燃料レベルが500を下回ったら行う
--####燃料補給
if turtle.getFuelLevel()<500 then
turtle.select(1)
turtle.suckDown()
turtle.refuel()
end
--####小麦の自動農業プログラム
--####木炭を満タン、種を1スタック、骨粉を満タンでプログラムをスタート
--####燃料の補給
turtle.select(1)
turtle.suck()
turtle.refuel()
turtle.up()
--####農地に移動
for A=1,8 do
turtle.forward()
end
--####無限ループの開始
while true do
--####耕すと収穫のループ
for A=1,3 do
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
end
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.digDown()
for A=1,7 do
turtle.forward()
turtle.digDown()
end
--####チェストに戻る
turtle.turnRight()
for A=1,7 do
turtle.forward()
end
turtle.turnRight()
turtle.back()
--####収穫用のチェストに小麦をドロップ
for Slot=1,16 do
turtle.select(Slot)
local Wheat=turtle.getItemDetail()
if Wheat then
if Wheat.name=="minecraft:wheat" then
turtle.dropDown()
end
end
end
for A=1,2 do
turtle.back()
end
--####骨粉のチェストに余った骨粉をドロップ
for Slot=1,16 do
turtle.select(Slot)
local Dye=turtle.getItemDetail()
if Dye then
if Dye.name=="minecraft:dye" then
turtle.dropDown()
end
end
end
for A=1,2 do
turtle.back()
end
--####種のチェストにドロップした種をドロップ
for Slot=1,16 do
turtle.select(Slot)
local Wheat_Seeds=turtle.getItemDetail()
if Wheat_Seeds then
if Wheat_Seeds.name=="minecraft:wheat_seeds" then
turtle.dropDown()
end
end
end
for A=1,2 do
turtle.back()
end
--####燃料補給
if turtle.getFuelLevel()<500 then
turtle.select(1)
turtle.suckDown()
turtle.refuel()
end
for A=1,2 do
turtle.forward()
end
--####スロット2種の補給
turtle.select(1)
turtle.suckDown()
for A=1,2 do
turtle.forward()
end
--####スロット2~4骨粉の補給
for Slot=2,4 do
turtle.select(Slot)
turtle.suckDown()
end
for A=1,3 do
turtle.forward()
end
--####種の植え付けと骨粉の散布3回
for Slot=1,4 do
turtle.select(Slot)
for A=1,3 do
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
end
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnRight()
turtle.forward()
turtle.turnRight()
turtle.placeDown()
for A=1,7 do
turtle.forward()
turtle.placeDown()
end
turtle.turnRight()
for A=1,7 do
turtle.forward()
end
turtle.turnRight()
end
end
--####小麦の自動農業プログラムの終わり
最終的に骨粉が一番最初になくなりました
集まった小麦は22スタックと53個
種は19スタックと3個まで増えました
骨粉のラージチェストを2個に増やすと丁度良くなりそうです
関連サイト
コンピュータークラフトを極める その3
最終的に骨粉が一番最初になくなりました
集まった小麦は22スタックと53個
種は19スタックと3個まで増えました
骨粉のラージチェストを2個に増やすと丁度良くなりそうです
関連サイト
コンピュータークラフトを極める その3
0 件のコメント:
コメントを投稿