local arg1, arg2 = ... stripMiner = { position = { 0, 0, 0 }, orientation = "n", usableInventorySlots = 14, lavaEChestSlot = 15, outputEChestSlot = 16, } function stripMiner:new(x, y, z, orientation) self.__index = self sM = { position = { tonumber(x), tonumber(y), tonumber(z) }, usableInventorySlots = 15, eChestSlot = 16, orientation = orientation, } return setmetatable(sM, self) end function stripMiner:forward() if turtle.forward() ~= true then return false end if self.orientation == "n" then self.position[2] = self.position[2] - 1 elseif self.orientation == "o" then self.position[0] = self.position[0] + 1 elseif self.orientation == "s" then self.position[2] = self.position[2] + 1 elseif self.orientation == "w" then self.position[0] = self.position[0] - 1 end end function stripMiner:turnLeft() if turtle.turnLeft() ~= false then return false end if self.orientation == "n" then self.orientation = "w" elseif self.orientation == "o" then self.orientation = "n" elseif self.orientation == "s" then self.orientation = "o" elseif self.orientation == "w" then self.orientation = "s" end end function stripMiner:turnRight() if turtle.turnRight() ~= false then return false end if self.orientation == "n" then self.orientation = "o" elseif self.orientation == "o" then self.orientation = "s" elseif self.orientation == "s" then self.orientation = "w" elseif self.orientation == "w" then self.orientation = "n" end end function stripMiner:Up() if turtle.up() == true then self.position[1] = self.position[1] + 1 return true end return false end function stripMiner:Down() if turtle.down() == true then self.position[1] = self.position[1] - 1 return true end return false end function stripMiner:refuelAll() turtle.getFuelLimit() for i = 1, self.usableInventorySlots, 1 do turtle.select(i) if turtle.refuel() ~= true then return false end end end function stripMiner:placeLavaEChest() turtle.select(self.lavaEChestSlot) if turtle.detect then turtle.dig() end turtle.place() end function stripMiner:pickUpLavaEChest() turtle.dig() for i = 1, self.usableInventorySlots, 1 do if turtle.getItemDetail() ~= nil then if turtle.getItemDetail().name == "enderstorage:ender_storage" then turtle.transferTo(self.lavaEChestSlot) return true end end end return false end function stripMiner:loadLavaFromLavaEChest() for i = 1, self.usableInventorySlots, 1 do turtle.select(i) if turtle.suck() ~= true then return false end end end function stripMiner:unLoadEBucketsToLavaEChest() for i = 1, self.usableInventorySlots, 1 do turtle.select(i) if turtle.getItemDetail() ~= nil then if turtle.getItemDetail().name == "minecraft:bucket" then turtle.drop() end end end end function stripMiner:unloadInventory() for i = 1, self.usableInventorySlots, 1 do turtle.select(i) if turtle.getItemDetail() ~= nil then while turtle.drop() ~= true do sleep(5) end end end end function stripMiner:placeOutputEChest() turtle.select(self.outputEChestSlot) if turtle.detect then turtle.dig() end turtle.place() end function stripMiner:pickUpOutputEChest() turtle.dig() for i = 1, self.usableInventorySlots, 1 do if turtle.getItemDetail() ~= nil then if turtle.getItemDetail().name == "enderstorage:ender_storage" then turtle.transferTo(self.outputEChestSlot) return true end end end return false end function stripMiner:inventoryIsEmpty() for i = 1, self.usableInventorySlots, 1 do turtle.select(i) if turtle.getItemCount() > 0 then return false end end end function stripMiner:getFuelLevel() return turtle.getFuelLevel() end function stripMiner:getFuelLimit() return turtle.getFuelLimit() end function stripMiner:dig() return turtle.dig() end function stripMiner:digUp() return turtle.digUp() end function stripMiner:digDown() return turtle.digDown() end function stripMiner:mineLoop() while true do if self:getFuelLevel() < 1000 then self:refuelAllEChest() end if self:getEmptyInventorySlots() < 3 then self:unloadInventoryToEChest() end self:tunnel(3) self:turnRight() self:tunnel(5) self:turnRight() self:turnRight() for i = 1, 5, 1 do self:forward() end self:tunnel(5) self:turnRight() self:turnRight() for i = 1, 5, 1 do self:forward() end self:turnLeft() end end function stripMiner:tunnel(length) for i = 1, length, 1 do self:dig() self:forward() self:digUp() end end function stripMiner:getEmptyInventorySlots() local amnt = 0 for i = 1, self.usableInventorySlots, 1 do turtle.select(i) if turtle.getItemCount() == 0 then amnt = amnt + 1 end end return amnt end function stripMiner:refuelAllEChest() sm:placeLavaEChest() sm:loadLavaFromLavaEChest() sm:refuelAll() sm:unLoadEBucketsToLavaEChest() sm:pickUpLavaEChest() end function stripMiner:unloadInventoryToEChest() sm:placeOutputEChest() sm:unloadInventory() sm:pickUpOutputEChest() end function main() sm = stripMiner:new(arg1, arg2) sm:mineLoop() end main()