diff options
| -rw-r--r-- | API.md | 5 | ||||
| -rw-r--r-- | init.lua | 20 | 
2 files changed, 21 insertions, 4 deletions
@@ -258,19 +258,18 @@ Add a list of groups you think are notable enough to be mentioned in the  `groupnames` is a table of group names. -By default, no groups are shown for this factoid which means this factoid -is never displayed. +Groups which are used for crafting are already automatically added.  What is “notable” is subjective, but here's a rule of thumb you may follow:  You should add groups with this function if: -* This group is used for crafting purposes  * This group is somehow important for interaction  * This group appears in `connect_to` definitions of nodes  Do not add groups if: +* This group is only used for crafting purposes (this is already covered)  * The group is only used internally  * The group is uninteresting for the player  * A factoid covering this group already exists @@ -52,7 +52,7 @@ local groups_to_string = function(grouptable, filter)  	local gstring = ""  	local groups_count = 0  	for id, value in pairs(grouptable) do -		if groupdefs[id] ~= nil and (filter == nil or filter[id] == true) then +		if (filter == nil or filter[id] == true) then  			-- Readable group name  			if groups_count > 0 then  				-- List seperator @@ -1064,6 +1064,24 @@ local function gather_descs()  		end  	end +	-- ... and gather all groups which appear in crafting recipes +	for id, def in pairs(minetest.registered_items) do +		local crafts = minetest.get_all_craft_recipes(id) +		if crafts ~= nil then +			for c=1,#crafts do +				for k,v in pairs(crafts[c].items) do +					if string.sub(v,1,6) == "group:" then +						local groupstring = string.sub(v,7,-1) +						local groups = string.split(groupstring, ",") +						for g=1, #groups do +							miscgroups[groups[g]] = true +						end +					end +				end +			end +		end +	end +  	-- 2nd pass: Add entries  	-- Set default air text  | 
