fugitiveplatypus

Enderage.lua

Jun 23rd, 2013
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.08 KB | None | 0 0
  1. write("Loading Enderage module... ")
  2.  
  3. Enderage = {}
  4. Enderage.item = 0
  5. Enderage.chest = 0
  6. Enderage.pullFunc = nil
  7. Enderage.BreakFunc = nil
  8. Enderage.turns = 0
  9. Enderage.count = 0
  10.  
  11. function Enderage:new(item, chest)
  12.  
  13.         local o = {}
  14.         setmetatable(o, self)
  15.         self.__index = self
  16.  
  17.         o.item = item
  18.         o.chest = chest
  19.         o.count = turtle.getItemCount(item)
  20.         return o
  21. end
  22.  
  23. function Enderage:prepare()
  24.         turtle.select(self.chest)
  25.         self.turns = 0
  26.         local ret
  27.  
  28.         if not turtle.detectUp() and turtle.placeUp() then
  29.                 self.breakFunc = turtle.digUp
  30.                 self.pullFunc = turtle.suckUp
  31.  
  32.         elseif not turtle.detectDown() and turtle.placeDown() then
  33.                 self.breakFunc = turtle.digDown
  34.                 self.pullFunc = turtle.suckDown
  35.  
  36.         elseif not turtle.detect() and turtle.place() then
  37.                 self.breakFunc = turtle.dig
  38.                 self.pullFunc = turtle.suck
  39.  
  40.         else
  41.                 while true do
  42.                         sleep(0)
  43.                         if turns >= 3 then
  44.                                 Panic.panic("Gassy: No space to refuel!")
  45.                                 error("That's really bad, not sure how to recover.")
  46.                         end
  47.  
  48.                         turtle.turnRight()
  49.                         self.turns = self.turns + 1
  50.  
  51.                         if not turtle.detect() and turtle.place() then
  52.                                 break
  53.                         end
  54.                 end
  55.                 self.breakFunc = turtle.dig
  56.                 self.pullFunc = turtle.suck
  57.         end
  58. end
  59.  
  60. function Enderage:pull()
  61.  
  62.         turtle.select(self.item)
  63.         while not self.pullFunc() do
  64.                 Panic.panic("No more items!")
  65.         end
  66.         self.count = turtle.getItemCount(self.item)
  67. end
  68.  
  69. function Enderage:clean()
  70.  
  71.         turtle.select(self.chest)
  72.         while not self.breakFunc() do
  73.                 Panic.panic("Could not break chest! (Can I dig?)")
  74.         end
  75.         while self.turns > 0 do
  76.                 turtle.turnLeft()
  77.                 self.turns = self.turns - 1
  78.         end
  79. end
  80.  
  81. function Enderage:refill()
  82.         local slot = turtle.getItemCount(self.item)
  83.  
  84.         if slot ~= 0 then
  85.                 self.count = slot
  86.  
  87.         else
  88.                 self:prepare()
  89.                 self:pull()
  90.                 self:clean()
  91.         end
  92. end
  93.  
  94. function Enderage:sel()
  95.         turtle.select(self.item)
  96. end
  97.  
  98. function Enderage:safePlace(func)
  99.         if self.count <= 0 then
  100.                 self:refill()
  101.                 self:sel()
  102.         end
  103.  
  104.         if not func() and self.count ~= 0 and turtle.getItemCount(self.item) == 0 then
  105.                 self:refill()
  106.                 func()
  107.         end
  108.  
  109.         self.count = self.count - 1
  110. end
  111.  
  112. function Enderage:place()
  113.         self:safePlace(turtle.place)
  114. end
  115.  
  116. function Enderage:placeUp()
  117.         self:safePlace(turtle.placeUp)
  118. end
  119.  
  120. function Enderage:placeDown()
  121.         self:safePlace(turtle.placeDown)
  122. end
  123.  
  124. print("Done.")
Advertisement
Add Comment
Please, Sign In to add comment