Archived
sand and sandStone update and "stable"
This commit is contained in:
1 parent
944ce2beea
commit
82fb45a9ed
2 files changed
+256
-23
No files matched your search
+221
@@ -0,0 +1,221 @@
|
|||||||
|
local xC, yC, zC, currentDir
|
||||||
|
local nbBlocs, nbFuel
|
||||||
|
local sizeLine, toDoLine
|
||||||
|
MAXBLOCS = 960
|
||||||
|
MAXFUEL = 64
|
||||||
|
|
||||||
|
local direction = {
|
||||||
|
NORTH = function() -- X ++
|
||||||
|
xC = xC + 1
|
||||||
|
end,
|
||||||
|
SOUTH = function() -- X --
|
||||||
|
xC = xC - 1
|
||||||
|
end,
|
||||||
|
EAST = function() -- Y ++
|
||||||
|
yC = yC + 1
|
||||||
|
end,
|
||||||
|
WEST = function() -- Y --
|
||||||
|
yC = yC - 1
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
local function goUp()
|
||||||
|
assert(turtle.up())
|
||||||
|
zC = zC + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function goDown()
|
||||||
|
assert(turtle.down())
|
||||||
|
zC = zC - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function turnRight()
|
||||||
|
if (currentDir == direction.NORTH) then
|
||||||
|
currentDir = direction.EAST
|
||||||
|
elseif (currentDir == direction.EAST) then
|
||||||
|
currentDir = direction.SOUTH
|
||||||
|
elseif (currentDir == direction.SOUTH) then
|
||||||
|
currentDir = direction.WEST
|
||||||
|
else
|
||||||
|
currentDir = direction.NORTH
|
||||||
|
end
|
||||||
|
turtle.turnRight()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function turnLeft()
|
||||||
|
if (currentDir == direction.NORTH) then
|
||||||
|
currentDir = direction.WEST
|
||||||
|
elseif (currentDir == direction.WEST) then
|
||||||
|
currentDir = direction.SOUTH
|
||||||
|
elseif (currentDir == direction.SOUTH) then
|
||||||
|
currentDir = direction.EAST
|
||||||
|
else
|
||||||
|
currentDir = direction.NORTH
|
||||||
|
end
|
||||||
|
turtle.turnLeft()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function turnDir(dir)
|
||||||
|
while currentDir ~= dir do
|
||||||
|
turnRight()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function forward()
|
||||||
|
if not turtle.forward() then
|
||||||
|
goDown()
|
||||||
|
forward()
|
||||||
|
end
|
||||||
|
currentDir()
|
||||||
|
end
|
||||||
|
|
||||||
|
local function gotoCoo(x, y, z, startZ)
|
||||||
|
if startZ then
|
||||||
|
while zC ~= z do
|
||||||
|
if zC < z then
|
||||||
|
goUp()
|
||||||
|
else
|
||||||
|
goDown()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
while yC ~= y do
|
||||||
|
if yC < y then
|
||||||
|
turnDir(direction.EAST)
|
||||||
|
forward()
|
||||||
|
else
|
||||||
|
turnDir(direction.WEST)
|
||||||
|
forward()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
while xC ~= x do
|
||||||
|
if xC < x then
|
||||||
|
turnDir(direction.NORTH)
|
||||||
|
forward()
|
||||||
|
else
|
||||||
|
turnDir(direction.SOUTH)
|
||||||
|
forward()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not startZ then
|
||||||
|
while zC ~= z do
|
||||||
|
if zC < z then
|
||||||
|
goUp()
|
||||||
|
else
|
||||||
|
goDown()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function setSlotBloc()
|
||||||
|
local i = 1
|
||||||
|
local is_fuel, isEmpty, reason = true, false, false
|
||||||
|
while is_fuel or isEmpty do
|
||||||
|
turtle.select(i)
|
||||||
|
is_fuel, reason = turtle.refuel(0)
|
||||||
|
isEmpty = turtle.getItemCount() == 0
|
||||||
|
i = i + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function setSlotFuel()
|
||||||
|
local i = 1
|
||||||
|
local is_fuel, reason = false, false
|
||||||
|
while not is_fuel do
|
||||||
|
turtle.select(i)
|
||||||
|
is_fuel, reason = turtle.refuel(0)
|
||||||
|
i = i + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function reFuel()
|
||||||
|
pcall(setSlotFuel)
|
||||||
|
while (nbFuel > 0) and (turtle.getFuelLevel() < turtle.getFuelLimit()) do
|
||||||
|
turtle.refuel(1)
|
||||||
|
nbFuel = nbFuel - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function refill()
|
||||||
|
local saveX, saveY, saveZ, saveDir = xC, yC, zC, currentDir
|
||||||
|
gotoCoo(0, 0, 0, false)
|
||||||
|
turnDir(direction.NORTH)
|
||||||
|
reFuel()
|
||||||
|
turtle.suck(MAXFUEL - nbFuel)
|
||||||
|
nbFuel = MAXFUEL
|
||||||
|
reFuel()
|
||||||
|
turtle.suck(MAXFUEL - nbFuel)
|
||||||
|
nbFuel = MAXFUEL
|
||||||
|
turnRight()
|
||||||
|
forward()
|
||||||
|
turnLeft()
|
||||||
|
while nbBlocs < MAXBLOCS do
|
||||||
|
if nbBlocs + 64 <= MAXBLOCS then
|
||||||
|
turtle.suck(64)
|
||||||
|
nbBlocs = nbBlocs + 64
|
||||||
|
else
|
||||||
|
turtle.suck(MAXBLOCS - nbBlocs)
|
||||||
|
nbBlocs = MAXBLOCS
|
||||||
|
end
|
||||||
|
end
|
||||||
|
gotoCoo(saveX, saveY, saveZ, true)
|
||||||
|
turnDir(saveDir)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function placeBlock()
|
||||||
|
if nbBlocs <= 0 then
|
||||||
|
refill()
|
||||||
|
end
|
||||||
|
if nbBlocs % 64 == 0 then
|
||||||
|
setSlotBloc()
|
||||||
|
end
|
||||||
|
if turtle.placeDown() then
|
||||||
|
nbBlocs = nbBlocs - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function checkFuel()
|
||||||
|
if (turtle.getFuelLevel() <= turtle.getFuelLimit() / 2) then
|
||||||
|
if nbFuel > 0 then
|
||||||
|
reFuel()
|
||||||
|
checkFuel()
|
||||||
|
else
|
||||||
|
refill()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function fill()
|
||||||
|
local nbLine = 0
|
||||||
|
while true do
|
||||||
|
while nbLine < 2 do
|
||||||
|
while toDoLine > 0 do
|
||||||
|
checkFuel()
|
||||||
|
while not turtle.detectDown() do
|
||||||
|
placeBlock()
|
||||||
|
sleep(1)
|
||||||
|
end
|
||||||
|
forward()
|
||||||
|
toDoLine = toDoLine - 1
|
||||||
|
end
|
||||||
|
turnLeft()
|
||||||
|
toDoLine = sizeLine
|
||||||
|
nbLine = nbLine + 1
|
||||||
|
end
|
||||||
|
sizeLine = sizeLine + 1
|
||||||
|
nbLine = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function main()
|
||||||
|
xC, yC, zC, currentDir = 0, 0, 0, direction.NORTH
|
||||||
|
nbFuel, nbBlocs = 0, 0
|
||||||
|
refill()
|
||||||
|
goDown()
|
||||||
|
goDown()
|
||||||
|
sizeLine, toDoLine = 1, 1
|
||||||
|
fill()
|
||||||
|
end
|
||||||
|
|
||||||
|
main()
|
||||||
+35
-23
@@ -63,13 +63,22 @@ end
|
|||||||
|
|
||||||
local function forward()
|
local function forward()
|
||||||
if not turtle.forward() then
|
if not turtle.forward() then
|
||||||
goDown()
|
goUp()
|
||||||
forward()
|
forward()
|
||||||
end
|
end
|
||||||
currentDir()
|
currentDir()
|
||||||
end
|
end
|
||||||
|
|
||||||
local function gotoCoo(x, y, z)
|
local function gotoCoo(x, y, z, startZ)
|
||||||
|
if startZ then
|
||||||
|
while zC ~= z do
|
||||||
|
if zC < z then
|
||||||
|
goUp()
|
||||||
|
else
|
||||||
|
goDown()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
while yC ~= y do
|
while yC ~= y do
|
||||||
if yC < y then
|
if yC < y then
|
||||||
turnDir(direction.EAST)
|
turnDir(direction.EAST)
|
||||||
@@ -88,11 +97,13 @@ local function gotoCoo(x, y, z)
|
|||||||
forward()
|
forward()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
while zC ~= z do
|
if not startZ then
|
||||||
if zC < z then
|
while zC ~= z do
|
||||||
goUp()
|
if zC < z then
|
||||||
else
|
goUp()
|
||||||
goDown()
|
else
|
||||||
|
goDown()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -118,21 +129,23 @@ local function setSlotFuel()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function reFuel()
|
||||||
|
pcall(setSlotFuel)
|
||||||
|
while (nbFuel > 0) and (turtle.getFuelLevel() < turtle.getFuelLimit()) do
|
||||||
|
turtle.refuel(1)
|
||||||
|
nbFuel = nbFuel - 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function refill()
|
local function refill()
|
||||||
local saveX, saveY, saveZ, saveDir = xC, yC, zC, currentDir
|
local saveX, saveY, saveZ, saveDir = xC, yC, zC, currentDir
|
||||||
gotoCoo(0, 0, 0)
|
gotoCoo(0, 0, 0, false)
|
||||||
turnDir(direction.NORTH)
|
turnDir(direction.NORTH)
|
||||||
pcall(setSlotFuel)
|
reFuel()
|
||||||
if nbFuel < 8 then
|
turtle.suck(MAXFUEL - nbFuel)
|
||||||
turtle.refuel(nbFuel)
|
nbFuel = MAXFUEL
|
||||||
nbFuel = 0
|
reFuel()
|
||||||
else
|
turtle.suck(MAXFUEL - nbFuel)
|
||||||
turtle.refuel(8)
|
|
||||||
nbFuel = nbFuel - 8
|
|
||||||
end
|
|
||||||
turtle.suck(MAXFUEL)
|
|
||||||
turtle.refuel(8)
|
|
||||||
turtle.suck(8)
|
|
||||||
nbFuel = MAXFUEL
|
nbFuel = MAXFUEL
|
||||||
turnRight()
|
turnRight()
|
||||||
forward()
|
forward()
|
||||||
@@ -146,7 +159,7 @@ local function refill()
|
|||||||
nbBlocs = MAXBLOCS
|
nbBlocs = MAXBLOCS
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
gotoCoo(saveX, saveY, saveZ)
|
gotoCoo(saveX, saveY, saveZ, true)
|
||||||
turnDir(saveDir)
|
turnDir(saveDir)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -163,10 +176,9 @@ local function placeBlock()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function checkFuel()
|
local function checkFuel()
|
||||||
if (turtle.getFuelLevel() <= 10) or (turtle.getFuelLevel() < (math.abs(xC) + math.abs(yC) + math.abs(zC) + 10)) then
|
if (turtle.getFuelLevel() <= turtle.getFuelLimit() / 2) then
|
||||||
if nbFuel > 0 then
|
if nbFuel > 0 then
|
||||||
setSlotFuel()
|
reFuel()
|
||||||
turtle.refuel()
|
|
||||||
checkFuel()
|
checkFuel()
|
||||||
else
|
else
|
||||||
refill()
|
refill()
|
||||||
|
|||||||
Reference in new issue
Block a user