diff options
author | kaeza <kaeza@users.sf.net> | 2014-01-19 14:34:44 -0200 |
---|---|---|
committer | kaeza <kaeza@users.sf.net> | 2014-01-19 14:35:44 -0200 |
commit | d560bcd6f0ba8b885127c5d5d2315fb72c2d1f47 (patch) | |
tree | 0a2d4fb60babf49d3a7c665c63ab87667a11e0a3 /internal.lua | |
parent | b69fc35c888c569bf7e87e24466740ca5f749918 (diff) |
Allow searching for groups.
Also make "group buttons" apply the filter to that group.
Diffstat (limited to 'internal.lua')
-rw-r--r-- | internal.lua | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/internal.lua b/internal.lua index daf8f4b..c88babf 100644 --- a/internal.lua +++ b/internal.lua @@ -97,18 +97,36 @@ function unified_inventory.apply_filter(player, filter) lfilter = "" end unified_inventory.filtered_items_list[player_name]={} - for name, def in pairs(minetest.registered_items) do - if (not def.groups.not_in_creative_inventory or - def.groups.not_in_creative_inventory == 0) - and def.description and def.description ~= "" then - local lname = string.lower(name) - local ldesc = string.lower(def.description) - if string.find(lname, lfilter) or string.find(ldesc, lfilter) then - table.insert(unified_inventory.filtered_items_list[player_name], name) - size = size + 1 + if lfilter:sub(1, 6) == "group:" then + local groups = lfilter:sub(7):split(",") + for name, def in pairs(minetest.registered_items) do + if def.groups then + local all = true + for _, group in ipairs(groups) do + if not (def.groups[group] and (def.groups[group] > 0)) then + all = false + break + end + end + if all then + table.insert(unified_inventory.filtered_items_list[player_name], name) + size = size + 1 + end + end + end + else + for name, def in pairs(minetest.registered_items) do + if (not def.groups.not_in_creative_inventory or + def.groups.not_in_creative_inventory == 0) + and def.description and def.description ~= "" then + local lname = string.lower(name) + local ldesc = string.lower(def.description) + if string.find(lname, lfilter) or string.find(ldesc, lfilter) then + table.insert(unified_inventory.filtered_items_list[player_name], name) + size = size + 1 + end end end - end table.sort(unified_inventory.filtered_items_list[player_name]) unified_inventory.filtered_items_list_size[player_name] = size |