CCCPaste

StripMiner1.6+

-- 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