Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Functions
- function distance () return long + haut + pitPos - 2 end
- function uTurn ()
- checkMode = false
- breakRoutine()
- if haut%2 == 1 then turtle.turnRight() else turtle.turnLeft() end
- haut = haut + 1
- move(true)
- if haut%2 == 0 then turtle.turnRight() else turtle.turnLeft() end
- checkMode = true
- end
- function mouvementLine ( _length, _state )
- for i = 1, _length, 1 do
- if _state then breakRoutine() end
- move(_state)
- if _state then if haut%2 == 1 then long = long + 1 else long = long - 1 end end
- end
- end
- function breakRoutine ()
- repeat
- turtle.digUp()
- checkItem()
- until not turtle.detectUp()
- turtle.digDown()
- checkItem()
- end
- function move ( _state )
- if _state then
- repeat
- turtle.dig()
- checkItem()
- until not turtle.detect()
- print("l: " .. long .. " h: " .. haut .. " p: " .. pitPos .. " d: " .. distance() .. " f: " .. turtle.getFuelLevel())
- if turtle.getFuelLevel() < 3 * distance() + 5 then refuel() end
- if turtle.getFuelLevel() < 3 * distance() + 5 and checkMode then backHome(0) end
- end
- turtle.forward()
- end
- function checkItem ()
- Items.dropIfItems(unwantedBlocks, 1)
- local result = Items.moveItem(1)
- if not result then refuel() end
- result = Items.moveItem(1)
- if checkMode then if not result then backHome(1) end end
- end
- function backHome ( _state )
- print("Come from: " .. long .. " " .. haut .. " " .. pitPos)
- goUp()
- if haut%2 == 1 then turtle.turnLeft()
- elseif haut%2 == 0 then turtle.turnRight()
- end
- mouvementLine(haut - 1, false)
- turtle.turnLeft()
- mouvementLine(long - 1, false)
- turtle.turnLeft()
- if _state == 0 then print("No fuel left!")
- elseif _state == 1 then print("Turtle is full!")
- elseif _state == 2 then print("Job done!")
- elseif _state == 3 then print("Floor done!") long, haut = 1, 1
- end
- emptyInv(_state)
- end
- function refuel ()
- local slot = Items.checkForItem("minecraft:coal", 0, false)
- if slot ~= 0 then turtle.select(slot) turtle.refuel() end
- turtle.select(1)
- end
- function emptyInv ( _state )
- turtle.turnLeft() turtle.turnLeft()
- for i = 1, 16, 1 do
- turtle.select(i)
- turtle.drop()
- end
- turtle.select(1)
- turtle.turnLeft() turtle.turnLeft()
- if _state == 0 then
- print("Need fuel ...")
- repeat refuel()
- until turtle.getFuelLevel() > 3 * distance() + 5
- goBack()
- elseif _state == 1 or _state == 3 then goBack()
- elseif _state == 2 then error()
- end
- end
- function goBack ()
- turtle.turnLeft()
- mouvementLine(long - 1, false)
- turtle.turnRight()
- mouvementLine(haut - 1, false)
- if haut%2 == 0 then turtle.turnRight()
- elseif haut%2 == 1 then turtle.turnLeft()
- end
- goBackDown()
- end
- function goDown ()
- checkMode = false
- for i = 1, 3, 1 do
- turtle.digDown()
- checkItem()
- if turtle.detectDown() then bedrockFound = true print("Bedrock found") return end
- turtle.down()
- pitPos = pitPos + 1
- end
- checkTrue = false
- end
- function goUp ()
- for i = 1, pitPos, 1 do turtle.up() end
- end
- function goBackDown ()
- for i = 1, pitPos, 1 do turtle.down() end
- end
- function usage ()
- print("Usage:. \nMining <side> <depth> <pit mode (boolean)> [old coordonates]")
- end
- -- Variables
- side = 5
- depth = 5
- long = 1
- haut = 1
- pitMode = false
- pitPos = 0
- checkMode = true
- bedrockFound = false
- unwantedBlocks = {"minecraft:cobblestone", "minecraft:dirt", "minecraft:gravel", "chisel:marble", "chisel:andesite", "chisel:granite", "chisel:diorite", "chisel:limestone"}
- -- Main
- os.loadAPI("Items")
- local tArgs = { ... }
- if #tArgs ~= 3 or #tArgs ~= 6 then usage() return end
- side = tonumber(tArgs[1]) - 1
- depth = tonumber(tArgs[2])
- pitMode = (tArgs[3] == "true")
- if side == nil or depth == nil then usage() return end
- if #tArgs == 6 then
- long = tonumber(tArgs[4])
- haut = tonumber(tArgs[5])
- pitPos = tonumber(tArgs[6])
- if long == nil or haut == nil or pitPos == nil then usage() return end
- if long > side - 1 or haut > depth then usage() return end
- goBack()
- local rest
- if haut%2 == 0 then rest = long else rest = side - long + 1 end
- mouvementLine(,true)
- uTurn()
- end
- turtle.select(1)
- turtle.turnLeft()
- if depth == 0 then
- while true do
- mouvementLine(side, true)
- uTurn()
- end
- else
- if not pitMode then
- while haut < depth do
- mouvementLine(side, true)
- uTurn()
- end
- mouvementLine(side, true)
- breakRoutine()
- backHome(2)
- else
- bedrockFound = false
- repeat
- while haut < depth do
- mouvementLine(side, true)
- uTurn()
- end
- mouvementLine(side, true)
- breakRoutine()
- backHome(3)
- goDown()
- until bedrockFound
- backHome(2)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement