summaryrefslogtreecommitdiff
path: root/api.lua
diff options
context:
space:
mode:
authorZefram <zefram@fysh.org>2014-04-22 20:12:49 +0100
committerShadowNinja <shadowninja@minetest.net>2014-04-22 16:52:04 -0400
commitfa0142c2c005ba8bf1bc44a2e0c9d34fbd2f1cf4 (patch)
tree00a58de431690a70f8273038ea5918852bf29277 /api.lua
parent34a52a4c0fa6cf9c060b8076202278de30d1004c (diff)
Look for recipes under an item's aliases
get_all_craft_recipes() returns the recipes that were registered under the specified name, so asking about an item's canonical name won't see recipes registered under an alias, and vice versa. Several mods register recipes under aliases, so the craft guide was missing that handful of recipes. To work around it, invert the aliases table and ask explicitly about each alias.
Diffstat (limited to 'api.lua')
-rw-r--r--api.lua21
1 files changed, 16 insertions, 5 deletions
diff --git a/api.lua b/api.lua
index 03705e6..3a694b4 100644
--- a/api.lua
+++ b/api.lua
@@ -1,18 +1,29 @@
-- Create detached creative inventory after loading all mods
minetest.after(0.01, function()
+ local rev_aliases = {}
+ for source, target in pairs(minetest.registered_aliases) do
+ if not rev_aliases[target] then rev_aliases[target] = {} end
+ table.insert(rev_aliases[target], source)
+ end
unified_inventory.items_list = {}
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
table.insert(unified_inventory.items_list, name)
- local recipes = minetest.get_all_craft_recipes(name)
- if recipes then
- unified_inventory.crafts_table[name] = recipes
- else
- unified_inventory.crafts_table[name] = {}
+ local all_names = rev_aliases[name] or {}
+ table.insert(all_names, name)
+ local all_recipes = {}
+ for _, name in ipairs(all_names) do
+ local recipes = minetest.get_all_craft_recipes(name)
+ if recipes then
+ for _, recipe in ipairs(recipes) do
+ table.insert(all_recipes, recipe)
+ end
+ end
end
+ unified_inventory.crafts_table[name] = all_recipes
end
end
table.sort(unified_inventory.items_list)