From 66d6431a914acdedf448692cdd8096884d6dacc2 Mon Sep 17 00:00:00 2001 From: kpoppel <poulsen.kim@gmail.com> Date: Thu, 06 Jun 2013 22:58:30 +0200 Subject: [PATCH] Merge pull request #24 from kpoppel/master --- unified_inventory/api.lua | 62 ++++++++++++++++++++----------- 1 files changed, 40 insertions(+), 22 deletions(-) diff --git a/unified_inventory/api.lua b/unified_inventory/api.lua index 2187f1a..02c08e9 100644 --- a/unified_inventory/api.lua +++ b/unified_inventory/api.lua @@ -58,7 +58,7 @@ unified_inventory.alternate[player_name] = 1 unified_inventory.current_item[player_name] =nil unified_inventory.set_inventory_formspec(player,unified_inventory.get_formspec(player, unified_inventory.default)) - + --crafting guide inventories local inv = minetest.create_detached_inventory(player:get_player_name().."craftrecipe",{ allow_put = function(inv, listname, index, stack, player) @@ -75,8 +75,8 @@ return 0 end, }) - inv:set_size("output", 1) - inv:set_size("build", 3*3) +inv:set_size("output", 1) +inv:set_size("build", 3*3) -- refill slot unified_inventory.refill = minetest.create_detached_inventory(player_name.."refill", { @@ -93,7 +93,6 @@ end, }) unified_inventory.refill:set_size("main", 1) -end) -- trash slot unified_inventory.trash = minetest.create_detached_inventory("trash", { @@ -111,24 +110,18 @@ end, }) unified_inventory.trash:set_size("main", 1) +end) -- set_inventory_formspec unified_inventory.set_inventory_formspec = function(player,formspec) if player then - if minetest.setting_getbool("creative_mode") then - -- if creative mode is on then wait a bit - minetest.after(0.01,function() - player:set_inventory_formspec(formspec) - end) - else player:set_inventory_formspec(formspec) - end end end -- get_formspec unified_inventory.get_formspec = function(player,page) - if player==nil then return "" end + if player==nil then return "" end local player_name = player:get_player_name() unified_inventory.current_page[player_name]=page @@ -577,7 +570,7 @@ for i=1,3,1 do if craft.items[i] then def=unified_inventory.find_item_def(craft.items[i]) - if def then inv:set_stack("build", build_table[i], {name=def}) end + if def then inv:set_stack("build", build_table[i], def) end end end end @@ -586,7 +579,7 @@ for i=1,3,1 do if craft.items[i] then def=unified_inventory.find_item_def(craft.items[i]) - if def then inv:set_stack("build", build_table[i], {name=def}) end + if def then inv:set_stack("build", build_table[i], def) end end end end @@ -595,7 +588,7 @@ for i=1,6,1 do if craft.items[i] then def=unified_inventory.find_item_def(craft.items[i]) - if def then inv:set_stack("build", build_table[i], {name=def}) end + if def then inv:set_stack("build", build_table[i], def) end end end end @@ -603,7 +596,7 @@ for i=1,9,1 do if craft.items[i] then def=unified_inventory.find_item_def(craft.items[i]) - if def then inv:set_stack("build", i, {name=def}) end + if def then inv:set_stack("build", i, def) end end end end @@ -614,14 +607,39 @@ if string.find(def1, "group:") then def1=string.gsub(def1, "group:", "") def1=string.gsub(def1, '\"', "") - for name,def in pairs(minetest.registered_items) do - if def.groups[def1] == 1 and def.groups.not_in_creative_inventory ~= 1 then - return def - end - end + local items=unified_inventory.items_in_group(def1) + return items[1] else - return def1 + return def1 end end return nil end + +unified_inventory.items_in_group = function(group) + local items = {} + for name, item in pairs(minetest.registered_items) do + for _, g in ipairs(group:split(',')) do + if item.groups[g] then + table.insert(items,name) + end + end + end + return items +end + +-- register_craft +unified_inventory.register_craft = function(options) + if options.output == nil then + return + end + local itemstack = ItemStack(options.output) + if itemstack:is_empty() then + return + end + if unified_inventory.crafts_table[itemstack:get_name()]==nil then + unified_inventory.crafts_table[itemstack:get_name()] = {} + end + table.insert(unified_inventory.crafts_table[itemstack:get_name()],options) + --crafts_table_count=crafts_table_count+1 +end -- Gitblit v1.8.0