タートルのインベントリが16個なので、今のところ、24x24の露天掘りが限界なのでチェストは20個あれば足ります。やりすぎた感はあるのですが、脱初心者を目指しています、それが今後につながると思っています。
特徴
回収用のチェストにアイテムが入ると輸送タートルが動き出します
燃料用のチェストには、採掘した石炭を入れます
燃料は自分で補給します
1列目の10個のチェストは、すべて同じアイテム
2列目と3列目はひとつのチェストでひとつのアイテムを登録
4列目のチェストは登録していないアイテムを入れます
縦のチェストの数は可変式で最大10までです
このようにチェストを配置します、前のタートルがマイニングタートルで後ろのタートルが配送タートルです。横がアイテム回収チェスト、その横が燃料チェストです。
プログラムスタート時にタートルに多少の燃料を入れておきます。また燃料のチェストに石炭、木炭を5スタックほど入れておきます。
アイテム回収用のチェストにアイテムが入っていないと輸送タートルは動き出しません。
マイニングタートルがアイテム回収用のチェストにアイテムを入れると輸送タートルが動き出します。
チェスト番号とタートルの配置、採掘場所はこのようになります
--####コンフィグ
local CHEST=10--縦方向のチェストの数、最大10
local COUNT=0--チェストに移動に関する変数
--####"minecraft:アイテム名"
--1列目
local ITEM1RETU="minecraft:cobblestone"--1列目はすべて丸石
--2列目
local ITEM1="minecraft:dirt"--1~5までは土
local ITEM2="minecraft:dirt"
local ITEM3="minecraft:dirt"
local ITEM4="minecraft:dirt"
local ITEM5="minecraft:dirt"
local ITEM6="minecraft:gravel"--6~7までは砂利
local ITEM7="minecraft:gravel"
local ITEM8="minecraft:stone"--8~10までは石類
local ITEM9="minecraft:stone"
local ITEM10="minecraft:stone"
--3列目
local ITEM11="minecraft:sand"--1~3までは砂
local ITEM12="minecraft:sand"
local ITEM13="minecraft:sand"
local ITEM14="minecraft:sandstone"--4~5までは砂岩
local ITEM15="minecraft:sandstone"
local ITEM16="minecraft:redstone"--6番目はレッドストーン
local ITEM17="minecraft:iron_ore"--7番目は鉄鉱石
local ITEM18="minecraft:gold_ore"--8番目は金鉱石
local ITEM19="minecraft:diamond"--9番目はダイヤモンド
local ITEM20="minecraft:emerald"--10番目はエメラルド
--####アイテム回収分別プログラム
turtle.up()--上に行く
turtle.turnLeft()--左を向く
turtle.forward()--前に行く
--####メインの処理
--採掘アイテムの回収
for MAIN=1,200 do--MAINの処理を1~200回ループ
turtle.select(1)--スロット1を選択
while true do--無限ループの開始
if turtle.suckDown() then--もしもスロット1にアイテムを回収できたら
break--無限ループの終わり
else os.sleep(10)--アイテム回収できなかったら10秒停止
end--もしもアイテム回収できたらの終わり
end--無限ループの終わり
for A=2,16 do--タートルのスロットを2~16までループ変数は、「A」
turtle.select(A)--タートルはスロット変数「A」を選択
turtle.suckDown()--下からのアイテムを吸収
end--スロットのループ「A」の終わり
--燃料のチェストに石炭を入れる
turtle.forward()--前に行く
turtle.forward()--前に行く
for A=1,16 do--タートルのスロットを1~16までループ変数は、「A」
turtle.select(A)--タートルはスロット変数「A」を選択
local DATA=turtle.getItemDetail()--関数「DATA」を定義して実行
if DATA then--もしもタートルのスロットに「DATA」があるなら
if DATA.name=="minecraft:coal" then--もしも「DATA」が石炭なら
turtle.dropDown()--下に落とす
end--もしもの終わり
end--もしもの終わり
end--スロットのループ「A」の終わり
--1列目ににアイテムを入れる
for B=1,CHEST do--ループ「B」はチェストを移動
turtle.forward()
turtle.forward()
for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM1RETU then
turtle.dropDown()
end
end
end
end
--次の列への移動
turtle.turnRight()
turtle.forward()
turtle.forward()
turtle.forward()
turtle.turnRight()
--2列目の一番目のチェストにアイテムを入れる
for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM1 then
turtle.dropDown()
end
end
end
--2列目の2番目以降のチェストにアイテムを入れる
for B=1,CHEST-1 do--ループ「B」はチェストを移動
turtle.forward()
turtle.forward()
COUNT=COUNT+1--ループ「1回」の処理でCOUNT+1
for A=1,16 do
turtle.select(A)
if COUNT==1 then--もしもCOUNTがループ1回目なら
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM2 then
turtle.dropDown()
end
end
elseif COUNT==2 then--もしもCOUNTがループ2回目なら
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM3 then
turtle.dropDown()
end
end
elseif COUNT==3 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM4 then
turtle.dropDown()
end
end
elseif COUNT==4 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM5 then
turtle.dropDown()
end
end
elseif COUNT==5 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM6 then
turtle.dropDown()
end
end
elseif COUNT==6 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM7 then
turtle.dropDown()
end
end
elseif COUNT==7 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM8 then
turtle.dropDown()
end
end
elseif COUNT==8 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM9 then
turtle.dropDown()
end
end
elseif COUNT==9 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM10 then
turtle.dropDown()
end
end
end--もしもCUNT...の終わり
end--ループ「A」の終わり
end--ループ「B」の終わり
COUNT=0--COUNTのリセット
--次の列への移動
turtle.turnLeft()
turtle.forward()
turtle.forward()
turtle.forward()
turtle.turnLeft()
--3列目の1番目のチェストにアイテムを入れる
for A=1,16 do
turtle.select(A)
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM11 then
turtle.dropDown()
end
end
end
--3列目の2番目以降のチェストにアイテムを入れる
for B=1,CHEST-1 do
turtle.forward()
turtle.forward()
COUNT=COUNT+1
for A=1,16 do
turtle.select(A)
if COUNT==1 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM12 then
turtle.dropDown()
end
end
elseif COUNT==2 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM13 then
turtle.dropDown()
end
end
elseif COUNT==3 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM14 then
turtle.dropDown()
end
end
elseif COUNT==4 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM15 then
turtle.dropDown()
end
end
elseif COUNT==5 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM16 then
turtle.dropDown()
end
end
elseif COUNT==6 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM17 then
turtle.dropDown()
end
end
elseif COUNT==7 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM18 then
turtle.dropDown()
end
end
elseif COUNT==8 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM19 then
turtle.dropDown()
end
end
elseif COUNT==9 then
local DATA=turtle.getItemDetail()
if DATA then
if DATA.name==ITEM20 then
turtle.dropDown()
end
end
end
end
end
COUNT=0
--次の列に移動
turtle.turnRight()
turtle.forward()
turtle.forward()
turtle.forward()
turtle.turnRight()
--4列目の1番目のチェストにアイテムを入れる
for A=1,16 do
turtle.select(A)
turtle.dropDown()
end
--4列目の2番目以降のチェストにアイテムを入れる
for B=1,CHEST-1 do--ループ「B」はチェストを移動
turtle.forward()
turtle.forward()
for A=1,16 do
turtle.select(A)
turtle.dropDown()
end
end--ループ「B」の終わり
--1番最初のチェストに戻る
turtle.turnRight()
for C=1,9 do--ループ「C」は、1のチェストに移動
turtle.forward()
end--ループ「C」の終わり
--燃料チェストで燃料の補給
turtle.turnLeft()
turtle.forward()
turtle.forward()
turtle.suckDown(1)
turtle.refuel()
--採掘アイテムチェストへ移動
turtle.forward()
turtle.forward()
turtle.turnRight()
turtle.turnRight()
end--ループ「MAIN」の終わり
Y値75で24x24で露天掘りした結果
単純計算で、24x24x(75-5)=40320個のアイテム回収
※岩盤位置はY値5ですので「-5」
ラージチェストの容量は、6x9x64=3456
回収した丸石の数はラージチェスト8個弱
3456x8=27648個の丸石
露天掘り範囲を広げていくとチェストは、丸石で圧迫されてしまいます
Y値70で256x256を露天掘りをすると
単純計算で、256x256(70-5)=4259840個のアイテム回収
ラージチェストの容量は、6x9x64=3456
4259840÷3456=約1233個のラージチェストが必要となります
いちばん簡単なプログラムであるのなら、1直線にチェストを配置して順番にアイテムを入れていけばいいんですが、それではロマンがないと考えていますので、複雑なプログラムになってしまいました。
縦に40個チェストを並べてアイテムをチェストに入れるだけのプログラムです
turtle.up()
turtle.turnLeft()
turtle.forward()
turtle.select(1)
for MAIN=1,200 do
for A=1,16 do
turtle.select(A)
turtle.suckDown()
end
turtle.forward()
turtle.forward()
turtle.suckDown(2)
turtle.refuel()
for B=1,40 do
turtle.forward()
turtle.forward()
for A=1,16 do
turtle.select(A)
turtle.dropDown()
end
end
turtle.turnLeft()
turtle.turnLeft()
for B=1,40 do
turtle.forward()
turtle.forward()
end
turtle.forward()
turtle.forward()
turtle.turnLeft()
turtle.turnLeft()
end
効率を考えると「os.sleep(秒)」をMAINの処理の前に入れた方がいいですね
関連サイト
縦に40個チェストを並べてアイテムをチェストに入れるだけのプログラムです
turtle.up()
turtle.turnLeft()
turtle.forward()
turtle.select(1)
for MAIN=1,200 do
for A=1,16 do
turtle.select(A)
turtle.suckDown()
end
turtle.forward()
turtle.forward()
turtle.suckDown(2)
turtle.refuel()
for B=1,40 do
turtle.forward()
turtle.forward()
for A=1,16 do
turtle.select(A)
turtle.dropDown()
end
end
turtle.turnLeft()
turtle.turnLeft()
for B=1,40 do
turtle.forward()
turtle.forward()
end
turtle.forward()
turtle.forward()
turtle.turnLeft()
turtle.turnLeft()
end
効率を考えると「os.sleep(秒)」をMAINの処理の前に入れた方がいいですね
関連サイト
0 件のコメント:
コメントを投稿