forked from minetest-mods/craftguide
Fix aliased items
This commit is contained in:
parent
9e48e9ea3e
commit
b09870a5b2
92
init.lua
92
init.lua
|
@ -105,6 +105,32 @@ craftguide.group_stereotypes = {
|
||||||
mesecon_conductor_craftable = "mesecons:wire_00000000_off",
|
mesecon_conductor_craftable = "mesecons:wire_00000000_off",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local function table_diff(t1, t2)
|
||||||
|
local hash = {}
|
||||||
|
|
||||||
|
for i = 1, #t1 do
|
||||||
|
local v = t1[i]
|
||||||
|
hash[v] = true
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, #t2 do
|
||||||
|
local v = t2[i]
|
||||||
|
hash[v] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local diff, c = {}, 0
|
||||||
|
|
||||||
|
for i = 1, #t1 do
|
||||||
|
local v = t1[i]
|
||||||
|
if hash[v] then
|
||||||
|
c = c + 1
|
||||||
|
diff[c] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return diff
|
||||||
|
end
|
||||||
|
|
||||||
local function table_merge(t1, t2, hash)
|
local function table_merge(t1, t2, hash)
|
||||||
t1 = t1 or {}
|
t1 = t1 or {}
|
||||||
t2 = t2 or {}
|
t2 = t2 or {}
|
||||||
|
@ -333,6 +359,7 @@ end
|
||||||
|
|
||||||
local function groups_item_in_recipe(item, recipe)
|
local function groups_item_in_recipe(item, recipe)
|
||||||
local def = reg_items[item]
|
local def = reg_items[item]
|
||||||
|
if not def then return end
|
||||||
local item_groups = def.groups
|
local item_groups = def.groups
|
||||||
|
|
||||||
for _, recipe_item in pairs(recipe.items) do
|
for _, recipe_item in pairs(recipe.items) do
|
||||||
|
@ -955,7 +982,7 @@ local function show_item(def)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_init_items()
|
local function get_init_items()
|
||||||
local c = 0
|
local hash, c = {}, 0
|
||||||
for name, def in pairs(reg_items) do
|
for name, def in pairs(reg_items) do
|
||||||
if show_item(def) then
|
if show_item(def) then
|
||||||
if not fuel_cache[name] then
|
if not fuel_cache[name] then
|
||||||
|
@ -971,22 +998,43 @@ local function get_init_items()
|
||||||
if recipes_cache[name] or usages_cache[name] then
|
if recipes_cache[name] or usages_cache[name] then
|
||||||
c = c + 1
|
c = c + 1
|
||||||
init_items[c] = name
|
init_items[c] = name
|
||||||
|
hash[name] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for name in pairs(reg_aliases) do
|
for oldname, newname in pairs(reg_aliases) do
|
||||||
local def = reg_items[name]
|
local recipes = recipes_cache[oldname]
|
||||||
if def and show_item(def) then
|
if recipes then
|
||||||
if not recipes_cache[name] then
|
if not recipes_cache[newname] then
|
||||||
cache_recipes(name)
|
recipes_cache[newname] = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
if recipes_cache[name] then
|
local is_similar
|
||||||
c = c + 1
|
|
||||||
init_items[c] = name
|
for i = 1, #recipes_cache[oldname] do
|
||||||
|
local rcp_old = recipes_cache[oldname][i]
|
||||||
|
|
||||||
|
for j = 1, #recipes_cache[newname] do
|
||||||
|
local rcp_new = recipes_cache[newname][j]
|
||||||
|
local diff = table_diff(rcp_old, rcp_new)
|
||||||
|
|
||||||
|
if #diff == 0 then
|
||||||
|
is_similar = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not is_similar then
|
||||||
|
insert(recipes_cache[newname], rcp_old)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if recipes_cache[oldname] and not hash[newname] then
|
||||||
|
c = c + 1
|
||||||
|
init_items[c] = newname
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
sort(init_items)
|
sort(init_items)
|
||||||
|
@ -1219,32 +1267,6 @@ if progressive_mode then
|
||||||
local POLL_FREQ = 0.25
|
local POLL_FREQ = 0.25
|
||||||
local HUD_TIMER_MAX = 1.5
|
local HUD_TIMER_MAX = 1.5
|
||||||
|
|
||||||
local function table_diff(t1, t2)
|
|
||||||
local hash = {}
|
|
||||||
|
|
||||||
for i = 1, #t1 do
|
|
||||||
local v = t1[i]
|
|
||||||
hash[v] = true
|
|
||||||
end
|
|
||||||
|
|
||||||
for i = 1, #t2 do
|
|
||||||
local v = t2[i]
|
|
||||||
hash[v] = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
local diff, c = {}, 0
|
|
||||||
|
|
||||||
for i = 1, #t1 do
|
|
||||||
local v = t1[i]
|
|
||||||
if hash[v] then
|
|
||||||
c = c + 1
|
|
||||||
diff[c] = v
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return diff
|
|
||||||
end
|
|
||||||
|
|
||||||
local function item_in_inv(item, inv_items)
|
local function item_in_inv(item, inv_items)
|
||||||
local inv_items_size = #inv_items
|
local inv_items_size = #inv_items
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user