Update api.lua
Server boot times dramatically improved by Test_User
This commit is contained in:
parent
25c40fea6c
commit
b907bae489
65
api.lua
65
api.lua
|
@ -43,7 +43,7 @@ minetest.after(0.01, function()
|
||||||
end
|
end
|
||||||
table.sort(ui.items_list)
|
table.sort(ui.items_list)
|
||||||
ui.items_list_size = #ui.items_list
|
ui.items_list_size = #ui.items_list
|
||||||
print("Unified Inventory. inventory size: "..ui.items_list_size)
|
print("Unified Inventory. Inventory size: "..ui.items_list_size)
|
||||||
for _, name in ipairs(ui.items_list) do
|
for _, name in ipairs(ui.items_list) do
|
||||||
local def = minetest.registered_items[name]
|
local def = minetest.registered_items[name]
|
||||||
-- Simple drops
|
-- Simple drops
|
||||||
|
@ -133,16 +133,53 @@ minetest.after(0.01, function()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Test_User refactoring to increase server boot speed, on server with 57k+ nodes was 9 mins load time, now only ~1 seconds.
|
||||||
|
|
||||||
|
local spec_matcher = {}
|
||||||
|
for _, name in ipairs(ui.items_list) do
|
||||||
|
for group, value in pairs(minetest.registered_items[name].groups) do -- we only need to care about groups, exact items are handled separately
|
||||||
|
if value and value ~= 0 then
|
||||||
|
if not spec_matcher[group] then spec_matcher[group] = {} end
|
||||||
|
spec_matcher[group][name] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for _, recipes in pairs(ui.crafts_for.recipe) do
|
for _, recipes in pairs(ui.crafts_for.recipe) do
|
||||||
for _, recipe in ipairs(recipes) do
|
for _, recipe in ipairs(recipes) do
|
||||||
local ingredient_items = {}
|
local ingredient_items = {}
|
||||||
for _, spec in pairs(recipe.items) do
|
for _, spec in pairs(recipe.items) do
|
||||||
local matches_spec = ui.canonical_item_spec_matcher(spec)
|
|
||||||
for _, name in ipairs(ui.items_list) do
|
local specname = ItemStack(spec):get_name()
|
||||||
if matches_spec(name) then
|
if specname:sub(1,6) == "group:" then
|
||||||
|
local accepted = {}
|
||||||
|
local firstgroup = true -- needed for initial group setup
|
||||||
|
for _, group in ipairs(specname:sub(7):split(",")) do
|
||||||
|
if firstgroup then -- needed to setup initial value
|
||||||
|
if spec_matcher[group] then
|
||||||
|
for name, _ in pairs(spec_matcher[group]) do
|
||||||
|
accepted[name] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
firstgroup = false
|
||||||
|
else
|
||||||
|
if spec_matcher[group] then
|
||||||
|
for name, _ in pairs(accepted) do
|
||||||
|
accepted[name] = spec_matcher[group][name]
|
||||||
|
end
|
||||||
|
else
|
||||||
|
accepted = {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for name, _ in pairs(accepted) do
|
||||||
ingredient_items[name] = true
|
ingredient_items[name] = true
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
ingredient_items[specname] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
for name, _ in pairs(ingredient_items) do
|
for name, _ in pairs(ingredient_items) do
|
||||||
if ui.crafts_for.usage[name] == nil then
|
if ui.crafts_for.usage[name] == nil then
|
||||||
|
@ -153,6 +190,26 @@ minetest.after(0.01, function()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- for _, recipes in pairs(ui.crafts_for.recipe) do
|
||||||
|
-- for _, recipe in ipairs(recipes) do
|
||||||
|
-- local ingredient_items = {}
|
||||||
|
-- for _, spec in pairs(recipe.items) do
|
||||||
|
-- local matches_spec = ui.canonical_item_spec_matcher(spec)
|
||||||
|
-- for _, name in ipairs(ui.items_list) do
|
||||||
|
-- if matches_spec(name) then
|
||||||
|
-- ingredient_items[name] = true
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
-- for name, _ in pairs(ingredient_items) do
|
||||||
|
-- if ui.crafts_for.usage[name] == nil then
|
||||||
|
-- ui.crafts_for.usage[name] = {}
|
||||||
|
-- end
|
||||||
|
-- table.insert(ui.crafts_for.usage[name], recipe)
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
|
||||||
for _, callback in ipairs(ui.initialized_callbacks) do
|
for _, callback in ipairs(ui.initialized_callbacks) do
|
||||||
callback()
|
callback()
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue