Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print "my very first mining program"
- print "how far should the square be?"
- local size = tonumber(io.read())
- print "how deep"
- local yLevel = tonumber(io.read())
- -- inc X / increase Z / deacrease X / decrease Z /
- -- 0 - front / 1 - right / 2 - back / 3 - left /
- local direction = 0
- local traveledX = 0
- local traveledY = 0 --
- local traveledZ = 0 -- to the right
- function CheckFuel()
- --if he needs some, refuelhalf a stack of what's to eat
- if turtle.getFuelLevel() ~= "unlimited" and turtle.getFuelLevel() < math.ceil(turtle.getFuelLimit() / 5) then
- print "I will try refueling"
- for i = 1, 16 do
- turtle.select(i)
- if turtle.refuel(0) then
- print "Fuel level before refueling: " + turtle.getFuelLevel()
- local half = math.ceil(turtle.getItemCount(i)/2)
- turtle.refuel(half)
- print "And after: " + turtle.getFuelLevel()
- return true
- end
- end
- print "I'm out of FUEL :-("
- return false
- else
- --if turtle.getFuelLevel() < math.ceil(turtle.getFuelLimit() * 0.1) then
- -- print "I'm low on energy, I will return home"
- -- ReturnHome()
- --else
- return true
- --end
- end
- end
- -- not finished yet
- function ReturnHome()
- if traveledY > 0 then
- for i = 0, traveledY do
- MoveUp()
- end
- end
- if traveledX > 0 then
- while direction ~= 2 do
- TurnRight()
- end
- LongForwardMove(traveledX)
- end
- if traveledZ > 0 then
- while direction ~= 3 do
- TurnRight()
- end
- LongForwardMove(traveledZ)
- end
- end
- function MoveDown()
- if (turtle.detectDown()) then
- turtle.digDown()
- end
- if(turtle.down()) then
- traveledY = traveledY + 1
- print "I'm going down"
- return true
- end
- return false
- end
- function MoveUp()
- if (turtle.detectUp()) then
- turtle.digUp()
- end
- if(turtle.up()) then
- traveledY = traveledY - 1
- return true
- end
- return false
- end
- function MoveForward()
- if (turtle.detect()) then
- turtle.dig()
- end
- if(turtle.forward()) then
- if direction == 0 then
- traveledX = traveledX + 1
- elseif direction == 1 then
- traveledZ = traveledZ + 1
- elseif direction == 2 then
- traveledX = traveledX - 1
- else
- traveledZ = traveledZ - 1
- end
- end
- return
- end
- function TurnLeft()
- if direction == 0 then
- direction = 3
- else
- direction = direction - 1
- end
- return
- end
- function TurnRight()
- if direction == 3 then
- direction = 0
- else
- direction = direction + 1
- end
- return
- end
- function LongForwardMove(length)
- for i = 1, length do
- CheckFuel()
- MoveForward()
- end
- end
- function SquareMine()
- LongForwardMove(size-1)
- TurnRight()
- for i = 1, size do
- LongForwardMove(size-2)
- TurnRight()
- MoveForward()
- TurnRight()
- end
- return
- end
- function Main()
- CheckFuel()
- -- goes down to the yLevel and mines the whole square, then he goes up and mines there and so on
- for i = 1, yLevel do
- CheckFuel()
- MoveDown()
- end
- if math.ceil(size % 2) == 0 then
- SquareMine()
- end
- ReturnHome()
- end
- Main() -- !
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement