hoodedperson

systemScanner.lua

Jul 17th, 2025 (edited)
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local function copyTable(...)
  2.     local tArgs = {...}
  3.     local copy = {}
  4.     for _, piece in pairs(tArgs) do
  5.         if piece and type(piece) == "table" then
  6.             for key, val in pairs(piece) do
  7.                 if type(val) == "table" then copy[key] = copyTable( copy[key] or {}, val)
  8.                 else copy[key] = val end
  9.             end
  10.         end
  11.     end
  12.     return copy
  13. end
  14.  
  15. local ticker = peripheral.find("stockcheckingblock")
  16.  
  17. local toMonitor = {"minecraft:cobblestone"}
  18. local itemLocations = {}
  19. local networkSize = ticker.inventorySize()
  20. local emptyTable = {}
  21. local timeTable = {}
  22. local iter = 0
  23. while true do
  24.     iter = iter + 1
  25.     timeTable[iter] = {os.epoch("utc")}
  26.     for i=1, networkSize do
  27.         term.clear()
  28.         term.setCursorPos(1,1)
  29.         print("Getting item locations")
  30.         print(tostring(iter)..": "..tostring(i).."/"..tostring(networkSize))
  31.         local item = ticker.itemBasicDetails(i)
  32.         if itemLocations[item.id] == nil then
  33.             itemLocations[item.id] = copyTable(emptyTable)
  34.         end
  35.         table.insert(itemLocations[item.id], i)
  36.     end
  37.     emptyTable[iter] = -1
  38.     timeTable[iter][2] = os.epoch("utc")
  39.     local serialised = textutils.serialise({
  40.         itemLocations = itemLocations,
  41.         timeTable = timeTable,
  42.     })
  43.     local h = fs.open("systemScan.lon","w+")
  44.     h.write(serialised)
  45.     h.close()
  46. end
  47.  
Advertisement
Add Comment
Please, Sign In to add comment