From 55a0a409636a320eff2c65d410e003a9a191cf05 Mon Sep 17 00:00:00 2001 From: RealBadAngel <mk@realbadangel.pl> Date: Wed, 17 Jul 2013 11:54:52 +0200 Subject: [PATCH] Add compressing method to UI --- unified_inventory/api.lua | 95 +++++++++++++++++++++++++++++++---------------- 1 files changed, 62 insertions(+), 33 deletions(-) diff --git a/unified_inventory/api.lua b/unified_inventory/api.lua index 2187f1a..5d04d62 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 @@ -138,29 +131,29 @@ formspec = formspec .. "list[current_player;main;0,4.5;8,4;]" -- backgrounds - formspec = formspec .. "background[-0.19,-0.2,;14.38,10.55;ui_form_bg.png]" + formspec = formspec .. "background[-0.19,-0.2;14.38,10.55;ui_form_bg.png]" if page=="craft" then - formspec = formspec .. "background[0.06,0.99,;7.92,7.52;ui_crafting_form.png]" + formspec = formspec .. "background[0.06,0.99;7.92,7.52;ui_crafting_form.png]" end if page=="craftguide" then - formspec = formspec .. "background[0.06,0.99,;7.92,7.52;ui_craftguide_form.png]" + formspec = formspec .. "background[0.06,0.99;7.92,7.52;ui_craftguide_form.png]" end if page=="misc" then - formspec = formspec .. "background[0.06,0.99,;7.92,7.52;ui_misc_form.png]" + formspec = formspec .. "background[0.06,0.99;7.92,7.52;ui_misc_form.png]" end if page=="bags" then - formspec = formspec .. "background[0.06,0.99,;7.92,7.52;ui_bags_main_form.png]" + formspec = formspec .. "background[0.06,0.99;7.92,7.52;ui_bags_main_form.png]" end for i=1,4 do if page=="bag"..i then local slots = player:get_inventory():get_stack(page, 1):get_definition().groups.bagslots if slots == 8 then - formspec = formspec .. "background[0.06,0.99,;7.92,7.52;ui_bags_sm_form.png]" + formspec = formspec .. "background[0.06,0.99;7.92,7.52;ui_bags_sm_form.png]" elseif slots == 16 then - formspec = formspec .. "background[0.06,0.99,;7.92,7.52;ui_bags_med_form.png]" + formspec = formspec .. "background[0.06,0.99;7.92,7.52;ui_bags_med_form.png]" elseif slots == 24 then - formspec = formspec .. "background[0.06,0.99,;7.92,7.52;ui_bags_lg_form.png]" + formspec = formspec .. "background[0.06,0.99;7.92,7.52;ui_bags_lg_form.png]" end end end @@ -237,7 +230,13 @@ end if craft.type == "alloy" then method="Alloy cooking" - end + end + if craft.type == "extracting" then + method="Extracting" + end + if craft.type == "compressing" then + method="Compressing" + end formspec = formspec.."label[6,3;"..method.."]" end @@ -564,8 +563,13 @@ local craft = crafts[alternate] inv:set_stack("output", 1, craft.output) local items=craft.items - -- cook, fuel, grinding recipes - if craft.type == "cooking" or craft.type == "fuel" or craft.type == "grinding" then + + -- cooking, fuel, grinding, and extracting recipes + if craft.type == "cooking" or + craft.type == "fuel" or + craft.type == "grinding" or + craft.type == "extracting" or + craft.type == "compressing" then def=unified_inventory.find_item_def(craft["items"][1]) if def then inv:set_stack("build", 1, def) @@ -577,7 +581,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 +590,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 +599,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 +607,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 +618,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