mirror of
https://github.com/minetest-mods/technic.git
synced 2024-12-24 01:40:29 +01:00
chests: fix sort_inventory function
This commit is contained in:
parent
37d49142cf
commit
930c51eef9
@ -137,38 +137,20 @@ local function sort_inventory(inv)
|
|||||||
local m = st:get_metadata()
|
local m = st:get_metadata()
|
||||||
local k = string.format("%s %05d %s", n, w, m)
|
local k = string.format("%s %05d %s", n, w, m)
|
||||||
if not typecnt[k] then
|
if not typecnt[k] then
|
||||||
typecnt[k] = {
|
typecnt[k] = {st}
|
||||||
name = n,
|
|
||||||
wear = w,
|
|
||||||
metadata = m,
|
|
||||||
stack_max = st:get_stack_max(),
|
|
||||||
count = 0,
|
|
||||||
}
|
|
||||||
table.insert(typekeys, k)
|
table.insert(typekeys, k)
|
||||||
|
else
|
||||||
|
table.insert(typecnt[k], st)
|
||||||
end
|
end
|
||||||
typecnt[k].count = typecnt[k].count + st:get_count()
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
table.sort(typekeys)
|
table.sort(typekeys)
|
||||||
local outlist = {}
|
inv:set_list("main", {})
|
||||||
for _, k in ipairs(typekeys) do
|
for _, k in ipairs(typekeys) do
|
||||||
local tc = typecnt[k]
|
for _, item in ipairs(typecnt[k]) do
|
||||||
while tc.count > 0 do
|
inv:add_item("main", item)
|
||||||
local c = math.min(tc.count, tc.stack_max)
|
|
||||||
table.insert(outlist, ItemStack({
|
|
||||||
name = tc.name,
|
|
||||||
wear = tc.wear,
|
|
||||||
metadata = tc.metadata,
|
|
||||||
count = c,
|
|
||||||
}))
|
|
||||||
tc.count = tc.count - c
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if #outlist > #inlist then return end
|
|
||||||
while #outlist < #inlist do
|
|
||||||
table.insert(outlist, ItemStack(nil))
|
|
||||||
end
|
|
||||||
inv:set_list("main", outlist)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_receive_fields(name, data)
|
local function get_receive_fields(name, data)
|
||||||
@ -305,7 +287,7 @@ function technic.chests:definition(name, data)
|
|||||||
on_receive_fields = get_receive_fields(name, data),
|
on_receive_fields = get_receive_fields(name, data),
|
||||||
on_metadata_inventory_move = self.on_inv_move,
|
on_metadata_inventory_move = self.on_inv_move,
|
||||||
on_metadata_inventory_put = self.on_inv_put,
|
on_metadata_inventory_put = self.on_inv_put,
|
||||||
on_metadata_inventory_take = self.on_inv_take,
|
on_metadata_inventory_take = self.on_inv_take,
|
||||||
on_blast = function(pos)
|
on_blast = function(pos)
|
||||||
local drops = {}
|
local drops = {}
|
||||||
default.get_inventory_drops(pos, "main", drops)
|
default.get_inventory_drops(pos, "main", drops)
|
||||||
|
Loading…
Reference in New Issue
Block a user