Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local S_MINING = "MINING"
- local S_FINISH = "FINISH"
- local S_ADVANCE = "ADVANCE"
- local chestIndex = 1
- local CHEST = "Ender"
- local DepthTarget = 130
- local status = {}
- local statusFileName = "enderstatus"
- local function loadTable(name)
- local file = fs.open(name,"r")
- if file == nil then
- return
- end
- local data = file.readAll()
- file.close()
- return textutils.unserialize(data)
- end
- local function saveTable(table,name)
- local file = fs.open(name,"w")
- file.write(textutils.serialize(table))
- file.close()
- end
- local function saveStatus()
- saveTable(status, statusFileName)
- end
- local function loadStatus()
- status = loadTable(statusFileName)
- end
- local function CheckRefuel()
- if turtle.getFuelLevel() > 4000 then
- return
- end
- for i=2,16 do
- turtle.select(i)
- turtle.refuel(64)
- end
- end
- local function ReturnBack()
- for i=1,DepthTarget do
- turtle.up()
- end
- end
- local function DepositChest()
- if turtle.detectUp() == true then
- turtle.down()
- end
- turtle.select(1)
- turtle.placeUp()
- for i = 2,16 do
- turtle.select(i)
- turtle.dropUp()
- end
- turtle.select(1)
- turtle.digUp()
- turtle.select(2)
- turtle.up()
- end
- local function InventoryFull()
- -- check 2-16, backwards for efficiency
- for i=1,15 do
- if turtle.getItemCount(16-i) == 0 then
- return false
- end
- end
- return true
- end
- local function CheckInventory()
- if InventoryFull() then
- CheckRefuel()
- DepositChest()
- end
- end
- local function Harvest()
- if not turtle.detectDown() then
- return
- end
- while turtle.suckDown() == true do
- CheckInventory()
- end
- turtle.digDown()
- CheckInventory()
- end
- local function Finish()
- DepositChest()
- ReturnBack()
- status.status = S_ADVANCE
- end
- local function NextColumn()
- for i=1,4 do
- if turtle.detect() then
- turtle.dig()
- end
- turtle.forward()
- end
- status.status = S_MINING
- end
- local function StartMining()
- for i=1,DepthTarget do
- turtle.attackDown()
- Harvest()
- turtle.down()
- end
- status.status = S_FINISH
- end
- function Main()
- while status.status ~= S_STOP do
- saveStatus()
- sleep(1)
- if status.status == S_MINING then
- StartMining()
- elseif status.status == S_FINISH then
- Finish()
- elseif status.status == S_ADVANCE then
- NextColumn()
- else
- print("Unknown status: "..status.status)
- status.status = S_STOP
- end
- end
- ReturnBack()
- end
- -- ON LAUNCH
- loadStatus()
- if status == nil then
- status = { }
- status.status = S_MINING
- end
- Main()
Advertisement
Add Comment
Please, Sign In to add comment