Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --This section sets the variables. WARNING, THESE ARE GLOBAL VARIABLES!!!!--
- store, fuel, torches, sand, gravel, dirt, stone = 1, 2, 3, 4, 5, 6, 7
- ore = false
- --x is "left/right" w/ left = +
- --y is "forward/back" w/ forward = +
- --z is "up/down" w/ up = +
- front, left, rear, right = 0,1,2,3
- x, y, z, o = 0,0,0,0 --Current Co-ordinates
- xo,yo,zo,oo = 0,0,0,0 --Origin Point, where the turtle starts the program
- xb,yb,zb,ob = 0,0,0,0 --Saved Co-ordinates, where the turtle goes back to betwwen routines
- function turn() --just keep turning, turning, turning
- turtle.turnLeft()
- o = o + 1
- end
- function ff() --short for "Face-Forward"
- while (o)%4 ~= 0 do
- turn()
- end
- end
- function fl() --"face-left"
- while (o)%4 ~= 1 do
- turn()
- end
- end
- function fb() --"face-back"
- while (o)%4 ~= 2 do
- turn()
- end
- end
- function fr() --"face-right"
- while (o)%4 ~= 3 do
- turn()
- end
- end
- --Actual Movement functions below this line.
- function forward()
- ff()
- turtle.dig()
- turtle.forward()
- y = y + 1
- end
- function left()
- fl()
- turtle.dig()
- turtle.forward()
- x = x +1
- end
- function back()
- fb()
- turtle.dig()
- turtle.forward()
- y = y - 1
- end
- function right()
- fr()
- turtle.dig()
- turtle.forward()
- x = x - 1
- end
- function up()
- turtle.digUp()
- turtle.up()
- z = z + 1
- end
- function down()
- turtle.digDown()
- turtle.down()
- z = z - 1
- end
- --Go back functions
- function savearea() --The all important reference point, tells the turtle to go back to this spot when used
- xb,yb,zb,ob = x,y,z,o
- end
- function goback()
- while xb ~= x do
- if xb > x then
- right()
- end
- if xb < x then
- left()
- end
- end
- while yb ~= y do
- if yb > y then
- back()
- end
- if yb < y then
- forward()
- end
- end
- while zb ~= z do
- if zb > z then
- down()
- end
- if zb < z then
- up()
- end
- end
- while ob ~= o do
- turn()
- end
- end
- --Checks surrounding blocks against "noise" inventory
- function checkforward()
- ff()
- if turtle.detect() then
- turtle.select(stone)
- if turtle.compare() == false then
- turtle.select(dirt)
- if turtle.compare() == false then
- turtle.select(gravel)
- if turtle.compare() == false then
- turtle.select(sand)
- if turtle.compare() == false then
- ore = true
- end
- end
- end
- end
- end
- end
- function checkleft()
- fl()
- if turtle.detect() == true then
- turtle.select(stone)
- if turtle.compare() == false then
- turtle.select(dirt)
- if turtle.compare() == false then
- turtle.select(gravel)
- if turtle.compare() == false then
- turtle.select(sand)
- if turtle.compare() == false then
- ore = true
- end
- end
- end
- end
- end
- end
- function checkback()
- fb()
- if turtle.detect() == true then
- turtle.select(stone)
- if turtle.compare() == false then
- turtle.select(dirt)
- if turtle.compare() == false then
- turtle.select(gravel)
- if turtle.compare() == false then
- turtle.select(sand)
- if turtle.compare() == false then
- ore = true
- end
- end
- end
- end
- end
- end
- function checkright()
- fr()
- if turtle.detect() == true then
- turtle.select(stone)
- if turtle.compare() == false then
- turtle.select(dirt)
- if turtle.compare() == false then
- turtle.select(gravel)
- if turtle.compare() == false then
- turtle.select(sand)
- if turtle.compare() == false then
- ore = true
- end
- end
- end
- end
- end
- end
- function checkup()
- if turtle.detectUp() == true then
- turtle.select(stone)
- if turtle.compareUp() == false then
- turtle.select(dirt)
- if turtle.compareUp() == false then
- turtle.select(gravel)
- if turtle.compareUp() == false then
- turtle.select(sand)
- if turtle.compareUp() == false then
- ore = true
- end
- end
- end
- end
- end
- end
- function checkdown()
- if turtle.detectDown() == true then
- turtle.select(stone)
- if turtle.compareDown() == false then
- turtle.select(dirt)
- if turtle.compareDown() == false then
- turtle.select(gravel)
- if turtle.compareDown() == false then
- turtle.select(sand)
- if turtle.compareDown() == false then
- ore = true
- end
- end
- end
- end
- end
- end
- --The "Smart Mine" functions
- function deepmine()
- checkforward()
- if ore == true then
- forward()
- ore = false
- deepmine()
- else checkup()
- if ore == true then
- up()
- ore = false
- deepmine()
- else checkdown()
- if ore == true then
- down()
- ore = false
- deepmine()
- else checkleft()
- if ore == true then
- left()
- ore = false
- deepmine()
- else checkback()
- if ore == true then
- back()
- ore = false
- deepmine()
- else checkright()
- if ore == true then
- right()
- ore = false
- deepmine()
- end
- end
- end
- end
- end
- end
- goback()
- end
- function checkrabbit()
- print("rabbit?")
- checkforward()
- print("check forward")
- if ore == true then
- forward()
- ore = false
- deepmine()
- else
- print("Left?")
- checkleft()
- print("Check Left")
- if ore == true then
- left()
- ore = false
- deepmine()
- else checkback()
- if ore == true then
- back()
- ore = false
- deepmine()
- else checkright()
- if ore == true then
- right()
- ore = false
- deepmine()
- end
- end
- end
- end
- end
- function checktunnel()
- checkup()
- if ore == true then
- forward()
- ore = false
- deepmine()
- else checkleft()
- if ore == true then
- left()
- ore = false
- deepmine()
- else checkright()
- if ore == true then
- right()
- ore = false
- deepmine()
- end
- end
- end
- end
- function checkreturn()
- checkdown()
- if ore == true then
- down()
- ore = false
- deepmine()
- else checkleft()
- if ore == true then
- left()
- ore = false
- deepmine()
- else checkright()
- if ore == true then
- right()
- ore = false
- deepmine()
- end
- end
- end
- end
- --Functions Actually to be used
- function start()
- term.clear()
- term.setCursorPos(1,1)
- print("Please place two unique enderchests in the last two slots, then torches, sand, gravel, dirt, and stone.")
- write("How far down should I go? ")
- depth = tostring( read())
- write("How far forward should I go? ")
- length = tostring( read())
- end
- function rabbithole()
- for i=1,depth do
- savearea()
- print("lets mine")
- checkrabbit()
- down()
- end
- end
- function tunnel()
- for i=1,length do
- savearea()
- checktunnel()
- forward()
- turtle.digDown()
- end
- end
- function rere()
- down()
- for i = 1,length do
- savearea()
- back()
- checkreturn()
- end
- for i = 1,depth do
- savearea()
- up()
- end
- while ob ~= o do
- turn()
- end
- end
- --Finally, the end of this crap
- start()
- rabbithole()
- tunnel()
- rere()
Advertisement
Add Comment
Please, Sign In to add comment