MinoCraft72

Tool Charger/User

Jan 31st, 2015
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.57 KB | None | 0 0
  1. -- Config:
  2.  
  3.   -- Charging Config:
  4.   local chestSide = "top"
  5.   local chestDir = "down"
  6.   local errorLog = true
  7.   local slotColor = colors.green
  8.   local toolColor = colors.purple
  9.   local chargColor = colors.lightBlue
  10.   local errorColor = colors.orange
  11.   name = "Electric Scribing Tools"
  12.   mod_id = "Mekanism"  
  13.  
  14.   -- Using Config:
  15.   local useBat = false
  16.   maxSlot = 1
  17.   batName = "EnderIO:blockCapBank"
  18.   batDmg = 2
  19.   batDebug = false
  20. -- Function:
  21.  
  22.   function charge()
  23.    chest = peripheral.wrap(chestSide)
  24.    local chestData = chest.getAllStacks()
  25.     if chestData ~= nil then
  26.       for slot, data in pairs(chestData) do
  27.        local toolSlot = slot
  28.        local toolName = data.display_name
  29.        rawName = data.rawName
  30.        local toolModId = data.mod_id
  31.         if data.electric ~= nil then
  32.          toolData = data.electric
  33.          energyStored = toolData.charge
  34.          maxEnergyStored = toolData.maxCharge
  35.          energyUnit = "EU"
  36.         elseif data.energy_te ~= nil then
  37.          toolData = data.energy_te  
  38.          energyStored = toolData.energyStored
  39.          maxEnergyStored = toolData.maxEnergyStored
  40.          energyUnit = "RF"
  41.         end
  42.         term.setTextColor(slotColor)
  43.         write(toolSlot)
  44.         term.setTextColor(colors.white)
  45.         write(" - ")
  46.         term.setTextColor(toolColor)
  47.         print(toolName)
  48.         term.setTextColor(chargColor)
  49.         if data.electric == nil and data.energy_te == nil then
  50.           if errorLog then
  51.            term.setTextColor(errorColor)
  52.            strg = "This item isn't electric !"
  53.               print(strg)
  54.            term.setTextColor(chargColor)    
  55.              end
  56.         else
  57.          strg = string.format("%s/%s %s",energyStored, maxEnergyStored, energyUnit)
  58.          print(strg)
  59.            end
  60.         --print(strg)
  61.         if energyStored < maxEnergyStored then
  62.          chargeTool = true
  63.         elseif toolName == name and data.dmg > 1  then
  64.          chargeTool = true
  65.         elseif toolModId == mod_id and data.dmg > 1 then
  66.          chargeTool = true
  67.         else
  68.          chargeTool = false
  69.         end
  70.         if chargeTool then
  71.          chest.pushItem(chestDir, toolSlot, 1, 1)
  72.          sleep(1)
  73.           if energyUnit == "EU" then  
  74.            turtle.select(1)
  75.            turtle.dropDown()
  76.            --print("item dropped")
  77.            sleep(5)
  78.            turtle.suckDown()
  79.            --print("item suck")
  80.            turtle.dropUp()
  81.           elseif energyUnit == "RF" then
  82.            turtle.select(1)
  83.            turtle.drop()
  84.            --print("item dropped")
  85.            sleep(5)
  86.            turtle.suck()
  87.            turtle.dropUp()
  88.           end    
  89.         end
  90.       end
  91.     end
  92.   end
  93.  
  94.   function use()
  95.     if useBat then
  96.       for i = 1, maxSlot do
  97.        turtle.select(i)
  98.        local slotData = turtle.getItemDetail(i)
  99.         if batDebug then
  100.          print(textutils.serialize(slotData))
  101.         end
  102.         if slotData ~= nil then
  103.           if slotData.name == batName and slotData.damage == batDmg then
  104.            turtle.place()
  105.           end
  106.         else
  107.           if turtle.detect() == false then
  108.            local chestData = chest.getAllStacks()
  109.             for k,v in pairs(chestData) do
  110.              --print(textutils.serialize(v))
  111.              local slot = k
  112.              local id = v.id
  113.              local dmg = v.dmg
  114.               if v.energy_te ~= nil then
  115.                local energyTable = v.energy_te
  116.                local energy = energyTable.energyStored
  117.                --print(energy)
  118.                local maxEnergy = energyTable.maxEnergyStored
  119.                print(energy.."/"..maxEnergy)
  120.                 if id == batName and dmg == batDmg then
  121.                   if energy == maxEnergy then
  122.                    chest.pushItem(chestDir, slot, 1,1)
  123.                    sleep(1)
  124.                   end
  125.                 end
  126.               end
  127.             end
  128.           end
  129.         end
  130.       end  
  131.     end
  132.   end
  133.  
  134.   function check()
  135.     if useBat then
  136.       if peripheral.isPresent("front") then
  137.        local bat = peripheral.wrap("front")
  138.        local batEnergy = bat.getEnergyStored()
  139.         if batEnergy == 0 then
  140.          print("Bat Empty")
  141.          turtle.select(16)
  142.          turtle.dig()
  143.          turtle.dropUp()
  144.          turtle.select(1)
  145.         end
  146.       end
  147.     end
  148.   end
  149. -- Prog:        
  150.      
  151.  turtle.suckDown()
  152.  turtle.dropUp()
  153.  turtle.suck()
  154.  turtle.dropUp()
  155.   while true do
  156.    chest = peripheral.wrap(chestSide)
  157.    sleep(3)
  158.    if not useBat then
  159.     charge()
  160.    end
  161.    use()
  162.    check()
  163.   end
Advertisement
Add Comment
Please, Sign In to add comment