Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Creative: Cache inventory items on load
- Loading branch information
Showing
with
20 additions
and
9 deletions.
-
+20
−9
mods/creative/inventory.lua
|
|
@@ -1,4 +1,19 @@ |
|
|
local player_inventory = {} |
|
|
local inventory_cache = {} |
|
|
|
|
|
local function init_creative_cache(items) |
|
|
inventory_cache[items] = {} |
|
|
local i_cache = inventory_cache[items] |
|
|
|
|
|
for name, def in pairs(items) do |
|
|
if def.groups.not_in_creative_inventory ~= 1 and |
|
|
def.description and def.description ~= "" then |
|
|
i_cache[name] = def |
|
|
end |
|
|
end |
|
|
table.sort(i_cache) |
|
|
return i_cache |
|
|
end |
|
|
|
|
|
function creative.init_creative_inventory(player) |
|
|
local player_name = player:get_player_name() |
|
@@ -45,11 +60,11 @@ function creative.update_creative_inventory(player_name, tab_content) |
|
|
creative.init_creative_inventory(minetest.get_player_by_name(player_name)) |
|
|
local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) |
|
|
|
|
|
for name, def in pairs(tab_content) do |
|
|
if not (def.groups.not_in_creative_inventory == 1) and |
|
|
def.description and def.description ~= "" and |
|
|
(def.name:find(inv.filter, 1, true) or |
|
|
def.description:lower():find(inv.filter, 1, true)) then |
|
|
local items = inventory_cache[tab_content] or init_creative_cache(tab_content) |
|
|
|
|
|
for name, def in pairs(items) do |
|
|
if def.name:find(inv.filter, 1, true) or |
|
|
def.description:lower():find(inv.filter, 1, true) then |
|
|
creative_list[#creative_list+1] = name |
|
|
end |
|
|
end |
|
@@ -161,10 +176,6 @@ function creative.register_tab(name, title, items) |
|
|
}) |
|
|
end |
|
|
|
|
|
minetest.register_on_joinplayer(function(player) |
|
|
creative.update_creative_inventory(player:get_player_name(), minetest.registered_items) |
|
|
end) |
|
|
|
|
|
creative.register_tab("all", "All", minetest.registered_items) |
|
|
creative.register_tab("nodes", "Nodes", minetest.registered_nodes) |
|
|
creative.register_tab("tools", "Tools", minetest.registered_tools) |
|
|