DrFair

ChestList

Nov 24th, 2015
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. chestNames = {"chest", "copper", "iron", "silver", "gold", "diamond", "crystal", "obsidian", "mcp_mobius_betterbarrel"}
  2. chests = {}
  3.  
  4. local Args = {...}
  5. if Args[1] == "update" then
  6. print("Updating...")
  7. program = shell.getRunningProgram()
  8. fs.delete(program)
  9. shell.run("pastebin", "get", "HpEA4KWV", program)
  10. print("Finished updating.")
  11. error()
  12. end
  13.  
  14. for i = 0, 100 do
  15. for s, k in pairs(chestNames) do
  16. p = peripheral.wrap(k .. "_" .. i)
  17. if p ~= nil then
  18. table.insert(chests, p)
  19. end
  20. end
  21. end
  22.  
  23. items = {}
  24.  
  25. function isSameData(data1, data2)
  26. if data1.display_name ~= data2.display_name then return false end
  27. if data1.raw_name ~= data2.raw_name then return false end
  28. if data1.dmg ~= data2.dmg then return false end
  29. if data1.maxdmg ~= data2.maxdmg then return false end
  30. if data1.max_size ~= data2.max_size then return false end
  31. if data1.id ~= data2.id then return false end
  32. -- if data1.ore_dict ~= data2.ore_dict then return false end
  33. if data1.name ~= data2.name then return false end
  34. if data1.mod_id ~= data2.mod_id then return false end
  35. return true
  36. end
  37.  
  38. function append(data1, data2)
  39. data1.qty = data1.qty + data2.qty
  40. end
  41.  
  42. function safeString(input)
  43. text = tostring(input)
  44. local newText = {}
  45. for i = 1, #text do
  46. local val = text:byte(i)
  47. newText[i] = (val > 31 and val < 127) and val or 63
  48. end
  49. return string.char(unpack(newText))
  50. end
  51.  
  52. for i, chest in pairs(chests) do
  53. for j, stack in pairs(chest.getAllStacks()) do
  54. stackData = stack.all()
  55. -- print(stackData.name .. " - " .. stackData.id .. " - " .. stackData.qty)
  56. id = tostring(stackData.id) .. ":" .. tostring(stackData.dmg)
  57. if items[id] == nil then
  58. items[id] = stackData
  59. else
  60. append(items[id], stackData)
  61. -- print(isSameData(items[id], stackData))
  62. end
  63. end
  64. end
  65.  
  66. for i, data in pairs(items) do
  67. print(i .. " - " .. data.qty)
  68. write(safeString(data.display_name) .. ", ")
  69. write(safeString(data.raw_name) .. ", ")
  70. write(safeString(data.dmg) .. ", ")
  71. write(safeString(data.maxdmg) .. ", ")
  72. write(safeString(data.max_size) .. ", ")
  73. write(safeString(data.id) .. ", ")
  74. write(safeString(data.ore_dict) .. ", ")
  75. write(safeString(data.name) .. ", ")
  76. write(safeString(data.mod_id) .. "\n")
  77. end
Advertisement
Add Comment
Please, Sign In to add comment