Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Config:
- -- Charging Config:
- local chestSide = "top"
- local chestDir = "down"
- local errorLog = true
- local slotColor = colors.green
- local toolColor = colors.purple
- local chargColor = colors.lightBlue
- local errorColor = colors.orange
- name = "Electric Scribing Tools"
- mod_id = "Mekanism"
- -- Using Config:
- local useBat = false
- maxSlot = 1
- batName = "EnderIO:blockCapBank"
- batDmg = 2
- batDebug = false
- -- Function:
- function charge()
- chest = peripheral.wrap(chestSide)
- local chestData = chest.getAllStacks()
- if chestData ~= nil then
- for slot, data in pairs(chestData) do
- local toolSlot = slot
- local toolName = data.display_name
- rawName = data.rawName
- local toolModId = data.mod_id
- if data.electric ~= nil then
- toolData = data.electric
- energyStored = toolData.charge
- maxEnergyStored = toolData.maxCharge
- energyUnit = "EU"
- elseif data.energy_te ~= nil then
- toolData = data.energy_te
- energyStored = toolData.energyStored
- maxEnergyStored = toolData.maxEnergyStored
- energyUnit = "RF"
- end
- term.setTextColor(slotColor)
- write(toolSlot)
- term.setTextColor(colors.white)
- write(" - ")
- term.setTextColor(toolColor)
- print(toolName)
- term.setTextColor(chargColor)
- if data.electric == nil and data.energy_te == nil then
- if errorLog then
- term.setTextColor(errorColor)
- strg = "This item isn't electric !"
- print(strg)
- term.setTextColor(chargColor)
- end
- else
- strg = string.format("%s/%s %s",energyStored, maxEnergyStored, energyUnit)
- print(strg)
- end
- --print(strg)
- if energyStored < maxEnergyStored then
- chargeTool = true
- elseif toolName == name and data.dmg > 1 then
- chargeTool = true
- elseif toolModId == mod_id and data.dmg > 1 then
- chargeTool = true
- else
- chargeTool = false
- end
- if chargeTool then
- chest.pushItem(chestDir, toolSlot, 1, 1)
- sleep(1)
- if energyUnit == "EU" then
- turtle.select(1)
- turtle.dropDown()
- --print("item dropped")
- sleep(5)
- turtle.suckDown()
- --print("item suck")
- turtle.dropUp()
- elseif energyUnit == "RF" then
- turtle.select(1)
- turtle.drop()
- --print("item dropped")
- sleep(5)
- turtle.suck()
- turtle.dropUp()
- end
- end
- end
- end
- end
- function use()
- if useBat then
- for i = 1, maxSlot do
- turtle.select(i)
- local slotData = turtle.getItemDetail(i)
- if batDebug then
- print(textutils.serialize(slotData))
- end
- if slotData ~= nil then
- if slotData.name == batName and slotData.damage == batDmg then
- turtle.place()
- end
- else
- if turtle.detect() == false then
- local chestData = chest.getAllStacks()
- for k,v in pairs(chestData) do
- --print(textutils.serialize(v))
- local slot = k
- local id = v.id
- local dmg = v.dmg
- if v.energy_te ~= nil then
- local energyTable = v.energy_te
- local energy = energyTable.energyStored
- --print(energy)
- local maxEnergy = energyTable.maxEnergyStored
- print(energy.."/"..maxEnergy)
- if id == batName and dmg == batDmg then
- if energy == maxEnergy then
- chest.pushItem(chestDir, slot, 1,1)
- sleep(1)
- end
- end
- end
- end
- end
- end
- end
- end
- end
- function check()
- if useBat then
- if peripheral.isPresent("front") then
- local bat = peripheral.wrap("front")
- local batEnergy = bat.getEnergyStored()
- if batEnergy == 0 then
- print("Bat Empty")
- turtle.select(16)
- turtle.dig()
- turtle.dropUp()
- turtle.select(1)
- end
- end
- end
- end
- -- Prog:
- turtle.suckDown()
- turtle.dropUp()
- turtle.suck()
- turtle.dropUp()
- while true do
- chest = peripheral.wrap(chestSide)
- sleep(3)
- if not useBat then
- charge()
- end
- use()
- check()
- end
Advertisement
Add Comment
Please, Sign In to add comment