Files
opus-apps/milo/apis/miniAdapter.lua
2019-01-04 00:29:03 -05:00

49 lines
1022 B
Lua

local class = require('class')
local itemDB = require('itemDB')
local Util = require('util')
local device = _G.device
local Adapter = class()
function Adapter:init(args)
if args.side then
local inventory = device[args.side]
if inventory then
Util.merge(self, inventory)
end
end
end
function Adapter:listItems(throttle)
local cache = { }
throttle = throttle or Util.throttle()
for k,v in pairs(self.list()) do
if v.count > 0 then
local key = table.concat({ v.name, v.damage, v.nbtHash }, ':')
local entry = cache[key]
if not entry then
local cached = itemDB:get(v, function() return self.getItemMeta(k) end)
if cached then
entry = cached
entry.count = 0
cache[key] = entry
else
_G._debug('Adapter: failed to get item details')
end
end
if entry then
entry.count = entry.count + v.count
end
throttle()
end
end
self.cache = cache
end
return Adapter