oops, forgot to update itemDB
This commit is contained in:
@@ -33,20 +33,18 @@ end
|
|||||||
|
|
||||||
function itemDB:makeKey(item)
|
function itemDB:makeKey(item)
|
||||||
if not item then error('itemDB:makeKey: item is required', 2) end
|
if not item then error('itemDB:makeKey: item is required', 2) end
|
||||||
return table.concat({ item.name, item.damage or '*', item.nbtHash }, ':')
|
return table.concat({ item.name, item.nbt }, ':')
|
||||||
end
|
end
|
||||||
|
|
||||||
function itemDB:splitKey(key, item)
|
function itemDB:splitKey(key, item)
|
||||||
item = item or { }
|
item = item or { }
|
||||||
|
|
||||||
local t = Util.split(key, '(.-):')
|
local t = Util.split(key, '(.-):')
|
||||||
if #t[#t] > 8 then
|
|
||||||
item.nbtHash = table.remove(t)
|
if t[3] then
|
||||||
end
|
item.nbt = t[3]
|
||||||
local damage = table.remove(t)
|
|
||||||
if damage ~= '*' then
|
|
||||||
item.damage = tonumber(damage)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
item.name = table.concat(t, ':')
|
item.name = table.concat(t, ':')
|
||||||
|
|
||||||
return item
|
return item
|
||||||
@@ -82,36 +80,21 @@ function itemDB:_get(key)
|
|||||||
return item
|
return item
|
||||||
end
|
end
|
||||||
|
|
||||||
-- try finding an item that has damage values
|
for k,item in pairs(self.data) do
|
||||||
if type(key.damage) == 'number' then
|
if key.name == item.name and
|
||||||
item = TableDB.get(self, self:makeKey({ name = key.name, nbtHash = key.nbtHash }))
|
key.nbt == key.nbt then
|
||||||
if item and item.maxDamage then
|
|
||||||
item = Util.shallowCopy(item)
|
item = Util.shallowCopy(item)
|
||||||
item.damage = key.damage
|
item.nbt = key.nbt
|
||||||
if item.maxDamage > 0 and type(item.damage) == 'number' and item.damage > 0 then
|
|
||||||
item.displayName = string.format('%s (damage: %s)', item.displayName, item.damage)
|
|
||||||
end
|
|
||||||
return item
|
return item
|
||||||
end
|
end
|
||||||
else
|
|
||||||
for k,item in pairs(self.data) do
|
|
||||||
if key.name == item.name and
|
|
||||||
key.nbtHash == key.nbtHash and
|
|
||||||
item.maxDamage > 0 then
|
|
||||||
item = Util.shallowCopy(item)
|
|
||||||
item.nbtHash = key.nbtHash
|
|
||||||
return item
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if key.nbtHash then
|
if key.nbt then
|
||||||
item = self:get({ name = key.name, damage = key.damage })
|
item = self:get({ name = key.name })
|
||||||
|
|
||||||
if item and item.ignoreNBT then
|
if item and item.ignoreNBT then
|
||||||
item = Util.shallowCopy(item)
|
item = Util.shallowCopy(item)
|
||||||
item.nbtHash = key.nbtHash
|
item.nbt = key.nbt
|
||||||
item.damage = key.damage
|
|
||||||
return item
|
return item
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -134,8 +117,7 @@ end
|
|||||||
function itemDB:add(baseItem)
|
function itemDB:add(baseItem)
|
||||||
local nItem = {
|
local nItem = {
|
||||||
name = baseItem.name,
|
name = baseItem.name,
|
||||||
damage = baseItem.damage,
|
nbt = baseItem.nbt,
|
||||||
nbtHash = baseItem.nbtHash,
|
|
||||||
}
|
}
|
||||||
-- if detail.maxDamage > 0 then
|
-- if detail.maxDamage > 0 then
|
||||||
-- nItem.damage = '*'
|
-- nItem.damage = '*'
|
||||||
@@ -143,7 +125,6 @@ function itemDB:add(baseItem)
|
|||||||
|
|
||||||
nItem.displayName = safeString(baseItem.displayName)
|
nItem.displayName = safeString(baseItem.displayName)
|
||||||
nItem.maxCount = baseItem.maxCount
|
nItem.maxCount = baseItem.maxCount
|
||||||
nItem.maxDamage = baseItem.maxDamage
|
|
||||||
|
|
||||||
-- enchanted items
|
-- enchanted items
|
||||||
if baseItem.enchantments then
|
if baseItem.enchantments then
|
||||||
@@ -156,7 +137,7 @@ function itemDB:add(baseItem)
|
|||||||
if k > 1 then
|
if k > 1 then
|
||||||
nItem.displayName = nItem.displayName .. ', '
|
nItem.displayName = nItem.displayName .. ', '
|
||||||
end
|
end
|
||||||
nItem.displayName = nItem.displayName .. v.fullName
|
nItem.displayName = nItem.displayName .. v.displayName
|
||||||
end
|
end
|
||||||
|
|
||||||
-- turtles / computers / etc
|
-- turtles / computers / etc
|
||||||
@@ -192,18 +173,8 @@ function itemDB:add(baseItem)
|
|||||||
if nItem.name == item.name and
|
if nItem.name == item.name and
|
||||||
nItem.displayName == item.displayName then
|
nItem.displayName == item.displayName then
|
||||||
|
|
||||||
if nItem.nbtHash ~= item.nbtHash and nItem.damage ~= item.damage then
|
if nItem.nbt ~= item.nbt then
|
||||||
nItem.damage = '*'
|
nItem.nbt = nil
|
||||||
nItem.nbtHash = nil
|
|
||||||
nItem.ignoreNBT = true
|
|
||||||
self.data[k] = nil
|
|
||||||
break
|
|
||||||
elseif nItem.damage ~= item.damage then
|
|
||||||
nItem.damage = '*'
|
|
||||||
self.data[k] = nil
|
|
||||||
break
|
|
||||||
elseif nItem.nbtHash ~= item.nbtHash then
|
|
||||||
nItem.nbtHash = nil
|
|
||||||
nItem.ignoreNBT = true
|
nItem.ignoreNBT = true
|
||||||
self.data[k] = nil
|
self.data[k] = nil
|
||||||
break
|
break
|
||||||
@@ -214,8 +185,7 @@ function itemDB:add(baseItem)
|
|||||||
|
|
||||||
TableDB.add(self, self:makeKey(nItem), nItem)
|
TableDB.add(self, self:makeKey(nItem), nItem)
|
||||||
nItem = Util.shallowCopy(nItem)
|
nItem = Util.shallowCopy(nItem)
|
||||||
nItem.damage = baseItem.damage
|
nItem.nbt = baseItem.nbt
|
||||||
nItem.nbtHash = baseItem.nbtHash
|
|
||||||
|
|
||||||
return nItem
|
return nItem
|
||||||
end
|
end
|
||||||
@@ -234,8 +204,8 @@ function itemDB:getName(item)
|
|||||||
-- fallback to nameDB
|
-- fallback to nameDB
|
||||||
local strId = self:makeKey(item)
|
local strId = self:makeKey(item)
|
||||||
local name = nameDB.data[strId]
|
local name = nameDB.data[strId]
|
||||||
if not name and not item.damage then
|
if not name then
|
||||||
name = nameDB.data[self:makeKey({ name = item.name, damage = 0, nbtHash = item.nbtHash })]
|
name = nameDB.data[self:makeKey({ name = item.name, nbt = item.nbt })]
|
||||||
end
|
end
|
||||||
return name or strId
|
return name or strId
|
||||||
end
|
end
|
||||||
@@ -250,24 +220,17 @@ function itemDB:load()
|
|||||||
|
|
||||||
for key,item in pairs(self.data) do
|
for key,item in pairs(self.data) do
|
||||||
self:splitKey(key, item)
|
self:splitKey(key, item)
|
||||||
item.maxDamage = item.maxDamage or 0
|
|
||||||
item.maxCount = item.maxCount or 64
|
item.maxCount = item.maxCount or 64
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function itemDB:flush()
|
function itemDB:flush()
|
||||||
if self.dirty then
|
if self.dirty then
|
||||||
|
|
||||||
local t = { }
|
local t = { }
|
||||||
for k,v in pairs(self.data) do
|
for k,v in pairs(self.data) do
|
||||||
v = Util.shallowCopy(v)
|
v = Util.shallowCopy(v)
|
||||||
v.name = nil
|
v.name = nil
|
||||||
v.damage = nil
|
v.nbt = nil
|
||||||
v.nbtHash = nil
|
|
||||||
v.count = nil -- wipe out previously saved counts - temporary
|
|
||||||
if v.maxDamage == 0 then
|
|
||||||
v.maxDamage = nil
|
|
||||||
end
|
|
||||||
if v.maxCount == 64 then
|
if v.maxCount == 64 then
|
||||||
v.maxCount = nil
|
v.maxCount = nil
|
||||||
end
|
end
|
||||||
@@ -281,4 +244,4 @@ end
|
|||||||
|
|
||||||
itemDB:load()
|
itemDB:load()
|
||||||
|
|
||||||
return itemDB
|
return itemDB
|
||||||
Reference in New Issue
Block a user