Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local tArgs = {...}
- local x = tonumber(tArgs[1])
- local y = tonumber(tArgs[3])
- local z = tonumber(tArgs[2])
- local size = ""
- local fuel = turtle.getFuelLevel()
- local lane = 0
- local startPos = 0
- turtle.select(1)
- term.clear()
- term.setCursorPos(1, 1)
- term.setTextColor(colors.white)
- local function getStartPos()
- if x == 1 then
- if y % 2 == 0 then
- return 1
- else
- return 4
- end
- elseif z == 1 then
- if y % 2 == 0 then
- return 1
- else
- return 2
- end
- end
- if y % 2 == 0 then
- return 1
- else
- if z % 2 == 0 then
- return 4
- else
- return 3
- end
- end
- return 1
- end
- local function digx() --Dig straight lines
- for f = 1,x do
- turtle.dig()
- while not turtle.forward() do
- turtle.dig()
- end
- end
- end
- local function changeLane() --Change lane when digging
- if lane == 0 then --If lane=0 turn right
- turtle.turnRight()
- turtle.dig()
- while not turtle.forward() do
- turtle.dig()
- end
- turtle.turnRight()
- lane = 1
- return
- end
- if lane == 1 then --If lane=1 turn left
- turtle.turnLeft()
- turtle.dig()
- while not turtle.forward() do
- turtle.dig()
- end
- turtle.turnLeft()
- lane = 0
- return
- end
- end
- local function goUp() --Go up to next layer
- while not turtle.up() do
- turtle.digUp()
- end
- turtle.turnRight()
- turtle.turnRight()
- end
- local function backToStart() --Go back to starting position when finished
- for f = 1,y do
- turtle.down()
- end
- if startPos == 1 then
- turtle.turnRight()
- turtle.turnRight()
- elseif startPos == 2 then
- for b = 1,x do
- turtle.back()
- end
- elseif startPos == 3 then
- turtle.turnRight()
- for c = 1, z do
- turtle.back()
- end
- turtle.turnLeft()
- for d = 1,x do
- turtle.back()
- end
- elseif startPos == 4 then
- turtle.turnRight()
- for e = 1,z do
- turtle.forward()
- end
- turtle.turnRight()
- end
- end
- local function checkArgs() --Check if arguments provided by the user are correct
- if #tArgs ~= 3 then
- return false
- end
- for a = 1,3 do
- if tonumber(tArgs[a]) == nil then
- return false
- end
- end
- if x < 1 or y < 1 or z < 1 then
- return false
- end
- return true
- end
- if not checkArgs() then --If arguments are not correct print an error message
- term.setTextColor(colors.red)
- print("Invalid arguments!")
- term.setTextColor(colors.white)
- print("Specify size of the room like this:")
- term.write("rooms")
- term.setTextColor(colors.blue)
- print(" lenght width height")
- return
- end
- size = x * y * z
- startPos = getStartPos()
- if fuel - size <= 0 then --Check if there is enough fuel
- term.setTextColor(colors.orange)
- print("Not enough fuel!")
- return
- end
- x = x - 1
- y = y - 1
- z = z - 1
- print("Digging...")
- for j = 1,y do
- for i = 1,z do
- digx()
- changeLane()
- end
- digx()
- goUp()
- end
- for k = 1,z do
- digx()
- changeLane()
- end
- digx()
- backToStart()
- print("Done!")
- x = x + 1
- y = y + 1
- z = z + 1
- print(size, "blocks cleared")
Add Comment
Please, Sign In to add comment