Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print("")--editor shenanigans
- local walls = {}
- walls["minecraftl:dirt"] = true
- walls["minecraftl:stone"] = true
- walls["minecraftl:cobblestone"] = true
- walls["minecraftl:granite"] = true
- walls["minecraftl:diorite"] = true
- walls["minecraftl:andesite"] = true
- walls["minecraftl:deepslate"] = true
- walls["minecraftl:cobbled_deepslate"] = true
- walls["minecraftl:calcite"] = true
- walls["minecraftl:tuff"] = true
- local liquids = {}
- liquids["minecraftl:water"] = true
- liquids["minecraftl:lava"] = true
- local fuels = {}
- fuels["minecraft:coal"] = true
- fuels["minecraft:coal_block"] = true
- fuels["minecraft:charcoal"] = true
- fuels["minecraft:lava_bucket"] = true
- fuels["minecraft:oak_planks"] = true
- local orePattern = ".+:%a+_ore"
- --check for right arguments
- local args = {...}
- if #args ~= 3 then
- print("please enter x,y and z dimensions to be mined")
- print("from the starting position the mined area will extend forward, right and down")
- error()
- end
- --check for enderchests
- local slot15 = turtle.getItemDetail(15)
- local slot16 = turtle.getItemDetail(16)
- if slot15 and slot16 then
- if not(slot15.name == "enderstorage:ender_chest" and slot15.name == "enderstorage:ender_chest") then
- print("enderchest missing")
- error()
- end
- else
- print("enderchest missing")
- error()
- end
- --args to vars
- local xrange,yrange,zrange = tonumber(args[1]),tonumber(args[2]),tonumber(args[3])
- print(string.format("xrange = %d, yrange = %d, zrange = %d", xrange, yrange, zrange))
- --check if turtle has empty inventory slot
- function invFull()
- for i=1,14 do
- if turtle.getItemCount(i) == 0 then
- return false
- end
- end
- return true
- end
- local REFUEL_SLOT = 16
- local EMPTY_SLOT = 15
- --place enderchest, take lava bucket, refuel and put enderchest back in inventory
- function refuel()
- turtle.select(REFUEL_SLOT)
- turtle.digUp()
- turtle.up()
- turtle.digUp()
- turtle.down()
- local ok,err = turtle.placeUp()
- if not ok then
- print("could not place enderchest")
- print(err)
- error()
- end
- turtle.suckUp()
- turtle.refuel()
- turtle.dropUp()
- turtle.digUp()
- end
- --place enderchest, empty all slots except enderchest slots and put enderchest back in inverntory
- function emptyInv()
- turtle.select(EMPTY_SLOT)
- turtle.digUp()
- turtle.up()
- turtle.digUp()
- turtle.down()
- local ok,err = turtle.placeUp()
- if not ok then
- print("could not place enderchest")
- print(err)
- error()
- end
- for i=1,14 do
- turtle.select(i)
- turtle.dropUp()
- end
- turtle.select(EMPTY_SLOT)
- turtle.digUp()
- end
- --basic mining move
- function digAndMove()
- turtle.dig()
- turtle.forward()
- end
- --digs a cube of size xrange*zrange*yrange (input args) including the starting block
- --digs forward,right and down
- function quarryOneLayer(xrange,yrange,zrange)
- --mine cube
- for y = 1,yrange do
- --refuel if needed
- if turtle.getFuelLevel() < 1000 then
- print("fuel = "..turtle.getFuelLevel())
- refuel()
- end
- for z = 1,zrange do
- -- empty inventory if needed
- if invFull() then
- print("inventory full")
- emptyInv()
- end
- for x = 1,xrange do
- if x < xrange then
- digAndMove()
- end
- end
- if z < zrange then
- --BUG!!!!! 2x2 not "mirrored"
- if yrange % 2 == 0 then
- if ((y % 2 == 1) and (z % 2 == 1)) or ((y % 2 == 0) and (z % 2 == 0)) then
- turtle.turnRight()
- digAndMove()
- turtle.turnRight()
- else
- turtle.turnLeft()
- digAndMove()
- turtle.turnLeft()
- end
- else
- if z % 2 == 1 then
- turtle.turnRight()
- digAndMove()
- turtle.turnRight()
- else
- turtle.turnLeft()
- digAndMove()
- turtle.turnLeft()
- end
- end
- end
- end
- if y < yrange then
- turtle.turnLeft()
- turtle.turnLeft()
- turtle.digDown()
- turtle.down()
- end
- end
- --return to start
- if yrange % 2 == 1 then
- if zrange % 2 == 1 then
- turtle.turnLeft()
- for i=1,zrange-1 do
- turtle.forward()
- end
- turtle.turnLeft()
- for i=1,xrange-1 do
- turtle.forward()
- end
- turtle.turnLeft()
- turtle.turnLeft()
- else
- turtle.turnRight()
- for i=1,zrange-1 do
- turtle.forward()
- end
- turtle.turnRight()
- end
- else
- turtle.turnLeft()
- turtle.turnLeft()
- end
- for i=1,yrange-1 do
- turtle.up()
- end
- print("done")
- end
- quarryOneLayer(xrange,yrange,zrange)
Add Comment
Please, Sign In to add comment