Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local partnerID = 0
- local debug = false
- --Constants
- local MY_ID = os.getComputerID()
- local MINING_DELAY = 4
- local CHARGE_LEVEL = 500
- local DIG_DELAY = 1
- local ENDER_CHEST = 2
- local FUEL = 16
- local MINING_WELL = 1
- local RESERVE_FUEL_LEVEL = 10
- local FUEL_DELAY = 10
- local FUEL_RATION = 4
- local CONDUIT = 3
- local CHUNK_LOADER_1 = 4
- local CHUNK_LOADER_2 = 5
- function checkItem(item)
- if(turtle.getItemCount(item.slot) < 1) then
- print("\t->"..item.name..": FAILURE")
- print("\t\tPlease insert a "..item.name.." into slot "..item.slot)
- --If it doesn't exist, prompt for it and wait until it gets it
- turtle.select(item.slot)
- while(turtle.getItemCount(item.slot) == 0) do
- sleep(1)
- end
- end
- print("\t->"..item.name..": OK")
- end
- function checkStatus()
- print("-------Checking Biggs's Schedule-------")
- --Check tor the Mining Well
- checkItem{slot=MINING_WELL, name="mining well"}
- --Check for Ender Chest
- checkItem{slot=ENDER_CHEST, name="ender chest"}
- --Check for Redstone Energy Conduit
- checkItem{slot=CONDUIT, name="redstone energy conduit"}
- --Check for Chunker Loader 1
- checkItem{slot=CHUNK_LOADER_1, name="chunk loader 1"}
- --Check for Chunker Loader 2
- checkItem{slot=CHUNK_LOADER_2, name="chunk loader 2"}
- checkFuel()
- print("----------BIGGS READY TO ROLL----------")
- end
- function pairWithWedge()
- rednet.open("right")
- rednet.broadcast("Waiting to pair with partner")
- local id,msg, distance
- while (id==nil or id==MY_ID) do
- id, msg, distance = rednet.receive()
- end
- partnerID = id
- rednet.broadcast("Partner found")
- end
- function sendMessageToWedge(message)
- rednet.send(partnerID,message)
- end
- function waitForWedge(message)
- local id, msg, distance
- while(id==nil or id==MY_ID or id ~= partnerID) do
- id, msg, distance = rednet.receive()
- end
- if (msg ~= message) then
- print("ERROR - Unexpected Partner Message")
- print("Expected:" .. message)
- print("Received: .. msg")
- shell.exit()
- end
- end
- function moveForward()
- while(turtle.forward()==false) do
- turtle.dig()
- sleep(DIG_DELAY)
- end
- end
- function moveUp()
- while(turtle.up()==false) do
- turtle.digUp()
- sleep(DIG_DELAY)
- end
- end
- function turn180()
- turtle.turnLeft()
- turtle.turnLeft()
- end
- function placeItem(item)
- turtle.select(item.slot)
- while(turtle.placeDown() == false) do
- turtle.digDown()
- sleep(DIG_DELAY)
- end
- end
- function digItem(item)
- turtle.select(item.slot)
- --If there's something already in the slot, junk it
- if(turtle.getItemCount(item.slot) > 0) then
- turtle.dropDown()
- end
- turtle.digDown()
- end
- function refuel()
- turtle.select(FUEL)
- while(turtle.refuel(FUEL_RATION) == false) do
- print("Error: Not enough fuel in slot 16 to refuel! Minimal 4")
- sleep(FUEL_DELAY)
- end
- turtle.select(1)
- end
- function checkFuel()
- if(turtle.getFuelLevel() < RESERVE_FUEL_LEVEL) then
- print("\t->Fuel: FAILURE")
- print("\t\tOut of fuel, attempting refuel")
- refuel()
- end
- end
- function leapFrogLoaders()
- --Two run modes
- --The first is if no loaders have been placed, where the turtle will set down an initial loader.
- --The second is if there's already a loader, where the turtle will put down a loader after the first
- --then go back and pick the first up.
- if(turtle.getItemCount(CHUNK_LOADER_1) == 1 and turtle.getItemCount(CHUNK_LOADER_2) == 1) then
- --Mode 1
- turtle.select(CHUNK_LOADER_1)
- turtle.turnRight()
- turtle.forward()
- placeItem{slot=CHUNK_LOADER_1}
- turtle.back()
- turtle.turnLeft()
- else
- if(turtle.getItemCount(CHUNK_LOADER_1) == 1) then
- turtle.select(CHUNK_LOADER_1)
- else
- turtle.select(CHUNK_LOADER_2)
- end
- turtle.turnRight()
- turtle.forward()
- placeItem{slot=turtle.getSelectedSlot()}
- turtle.turnRight()
- turtle.forward()
- if(turtle.getSelectedSlot == CHUNK_LOADER_1) then
- turtle.select(CHUNK_LOADER_2)
- else
- turtle.select(CHUNK_LOADER_1)
- end
- turtle.digDown()
- turn180()
- turtle.forward()
- turtle.turnLeft()
- turtle.forward()
- turtle.turnRight()
- end
- end
- --Check to make sure it has all the items it needs
- checkStatus()
- --Wait to find Wedge
- pairWithWedge()
- --Main loop
- while true do
- checkFuel()
- placeItem{slot=MINING_WELL, "Mining well"}
- moveUp()
- placeItem{slot=ENDER_CHEST, "Ender chest"}
- turtle.back()
- turtle.down()
- placeItem{slot=CONDUIT, "Energy Conduit"}
- leapFrogLoaders()
- sendMessageToWedge("powerdown")
- waitForWedge("powerdown")
- sleep(MINING_DELAY)
- sendMessageToWedge("powerup")
- waitForWedge("powerup")
- digItem{slot=CONDUIT}
- turtle.up()
- turtle.forward()
- digItem{slot=ENDER_CHEST}
- turtle.down()
- digItem{slot=MINING_WELL}
- moveForward()
- sendMessageToWedge("forward")
- waitForWedge("forward")
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement