From dbf98cb694578223c0f3bb1016e054ce636f2276 Mon Sep 17 00:00:00 2001 From: Zefram Date: Fri, 13 Jun 2014 09:54:21 +0100 Subject: [PATCH] Fix display of group ingredients Commit 043f6081452365daaa033c58e0738527ccb64c3d broke a couple of things in the course of its refactoring. This patch restores the "G" flag that signals group ingredients, the preference for "default:" items as group representatives (where a representative isn't specifically registered), and the built-in registration of default:cobble as representative for group:stone (because it's the most commonly-used item in that group). --- group.lua | 7 +++++-- register.lua | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/group.lua b/group.lua index d888ef0..594bed2 100644 --- a/group.lua +++ b/group.lua @@ -1,6 +1,7 @@ unified_inventory.registered_group_items = { mesecon_conductor_craftable = "mesecons:wire_00000000_off", + stone = "default:cobble", wool = "wool:white", } @@ -21,7 +22,7 @@ end -- Among equally-preferred items, we just pick the one with the -- lexicographically earliest name. -function compute_group_item(group_name) +local function compute_group_item(group_name) local candidate_items = {} for itemname, itemdef in pairs(minetest.registered_items) do if (itemdef.groups.not_in_creative_inventory or 0) == 0 and @@ -40,8 +41,10 @@ function compute_group_item(group_name) for _, item in ipairs(candidate_items) do local pref if item == unified_inventory.registered_group_items[group_name] then + pref = 4 + elseif item == "default:"..group_name then pref = 3 - elseif item:gsub("^[^:]+:", "") == group_name then + elseif item:gsub("^[^:]*:", "") == group_name then pref = 2 else pref = 1 diff --git a/register.lua b/register.lua index a471e2b..131cbe2 100644 --- a/register.lua +++ b/register.lua @@ -156,17 +156,17 @@ local function stack_image_button(x, y, w, h, buttonname_prefix, item) if name:sub(1, 6) == "group:" then local group_name = name:sub(7) local group_item = unified_inventory.get_group_item(group_name) - show_group = not group_item.sole + show_is_group = not group_item.sole displayitem = group_item.item or "unknown" selectitem = group_item.sole and displayitem or name end - -- Hackily shift the count to the bottom right - local shiftstr = "\n\n " + local label = string.format("\n\n%s%7d", show_is_group and "G" or " ", count):gsub(" 1$", " .") + if label == "\n\n ." then label = "" end return string.format("item_image_button[%u,%u;%u,%u;%s;%s;%s]", x, y, w, h, minetest.formspec_escape(displayitem), minetest.formspec_escape(buttonname_prefix..selectitem), - count ~= 1 and shiftstr..tostring(count) or "") + label) end unified_inventory.register_page("craftguide", {