-- Strip Mining Program V1.6.1 --
-- Includes anti-gravel protocol --
-- tunnels are always two wide, 3 high in current version --
-- Planned features --
-- Mine until full --
-- Mine until full then deposit --
-- Defining tables and variables --
local ores = {
["minecraft:diamond_ore"]=true,
["minecraft:emerald_ore"]=true,
["minecraft:emerald_ore"]=true,
["minecraft:gold_ore"]=true,
["minecraft:iron_ore"]=true,
["minecraft:redstone_ore"]=true,
["minecraft:lapis_ore"]=true,
["minecraft:coal_ore"]=true,
["ic2:blockmetal"]=true,
["galacticraftcore:basic_block_core"] = true
}
local gravel = {
["minecraft:gravel"]=true
}
local inv = {}
local Cscan = {}
local logFile = fs.open("minelog", "a")
-- Assinging functions --
function log(data) -- function to write data into minelog file
logFile.writeLine(data)
end
function minenup(repeats) -- turtle moving up then mining
cl()
print("Mining...")
for i = 1,repeats do
turtle.up()
turtle.dig()
scan()
cl()
print("Mining...")
end
end
function minend(repeats) -- turtle moving down then mining
cl()
print("Mining...")
for l = 1,repeats do
turtle.down()
turtle.dig()
scan()
cl()
print("Mining...")
end
end
function scan() -- scanning blocks around turtle
cl()
print("Scanning surroundings...")
success, Cscan = turtle.inspectUp()
if ores[Cscan.name] then
turtle.digUp()
log(Cscan.name)
end
success, Cscan = turtle.inspectDown()
if ores[Cscan.name] then
turtle.digDown()
log(Cscan.name)
end
for i = 1,4 do
success, Cscan = turtle.inspect()
if ores[Cscan.name] then
log(Cscan.name)
turtle.dig()
turtle.turnRight()
elseif gravel[Cscan.name] then
while gravel[Cscan.name] do
turtle.dig()
success, Cscan = turtle.inspect()
end
turtle.turnRight()
else
turtle.turnRight()
end
end
end
function mineLayer(reps)
cl()
print("Mining...")
for k = 1,reps do
scan()
turtle.dig()
minenup(2)
turtle.turnLeft()
turtle.forward()
turtle.turnRight()
turtle.dig()
scan()
minend(2)
turtle.forward()
turtle.turnRight()
scan()
turtle.forward()
turtle.turnLeft()
end
end
function cl()
term.clear()
term.setCursorPos(1,1)
end
function writeFull ()
file.open("full", w)
full.writeLine("term.clear()")
full.writeLine("term.setCursorPos(1,1)")
full.writeLine("print("_G.printError("Inventory full, terminating program..."))
full.close()
end
function readInv() -- no use atm
cl()
print("Reading inventory...")
sleep(0.5)
table.insert(inv, {"Slot", "Name", "Count"})
turtle.select(1)
for i = 1,16 do
turtle.select(i)
local detail = turtle.getItemDetail(i, true)
if detail then
table.insert (inv, {tostring(i), detail.name, tostring(detail.count)})
end
end
textutils.tabulate(table.unpack(inv))
turtle.select(1)
if inv["1","2","3","4","5","6","7,","8","9","10","11","12","13","14","15","16"] then
cl()
_G.printError("Inventory full, terminating program...")
logFile.close()
writeFull()
shell.run("full")
end
-- Start of program, obtaining parameters with human friendly interface --
cl()
print("Initialising strip mining program...")
sleep(1)
cl()
print("Enter length of desired tunnel: ")
term.setCursorPos(33,1)
local length = read()
sleep(0.5)
cl()
print("Calculating.")
sleep(0.5)
cl()
print("Calculating..")
sleep(0.5)
cl()
print("Calculating...")
sleep(0.5)
cl()
-- main body of mining procress --
--while true do
--end
-- TESTING AREA --
mineLayer(length)
logFile.close() -- closing log file