712 lines
24 KiB
Lua
Raw Normal View History

2016-08-02 16:27:01 +02:00
doc.sub.items = {}
2016-08-02 15:55:05 +02:00
local groupdefs = {}
local minegroups = {}
local damagegroups= {}
2016-08-03 15:03:38 +02:00
local forced_items = {
["air"] = true,
}
local item_name_overrides = {
[""] = "Hand",
["air"] = "Air"
}
2015-05-16 22:57:51 +02:00
local groups_to_string = function(grouptable)
local gstring = ""
2016-07-31 23:58:58 +02:00
local groups_count = 0
2015-05-16 22:57:51 +02:00
for id, value in pairs(grouptable) do
if groupdefs[id] ~= nil then
2016-07-31 23:58:58 +02:00
if groups_count > 0 then
gstring = gstring .. "\\, "
end
gstring = gstring .. minetest.formspec_escape(groupdefs[id])
groups_count = groups_count + 1
2015-05-16 22:57:51 +02:00
end
end
2016-07-31 23:58:58 +02:00
if groups_count == 0 then
return nil
else
return gstring, groups_count
end
2015-05-16 22:57:51 +02:00
end
2016-08-01 04:31:53 +02:00
local group_to_string = function(groupname, grouptype)
local grouptable
if grouptype == "mining" then
grouptable = minegroups
elseif grouptype == "damage" then
grouptable = damagegroups
elseif grouptype == "generic" then
grouptable = groupdefs
else
return minetest.formspec_escape(groupname)
end
if grouptable[groupname] ~= nil then
return minetest.formspec_escape(grouptable[groupname])
else
return minetest.formspec_escape(groupname)
end
end
2016-07-19 17:45:46 +02:00
local burntime_to_text = function(burntime)
if burntime == nil then
return "unknown"
elseif burntime == 1 then
return "1 second"
else
return string.format("%d seconds", burntime)
end
end
2016-08-01 04:31:53 +02:00
local toolcaps_to_text = function(tool_capabilities)
local formstring = ""
if tool_capabilities ~= nil and tool_capabilities ~= {} then
local punch = 1.0
if tool_capabilities.full_punch_interval ~= nil then
punch = tool_capabilities.full_punch_interval
end
formstring = formstring .. "Full punch interval: "..punch.." s\n\n"
local groupcaps = tool_capabilities.groupcaps
if groupcaps ~= nil then
formstring = formstring .. "This tool is capable of mining.\nMining capabilities:\n"
2016-08-01 04:31:53 +02:00
for k,v in pairs(groupcaps) do
2016-08-01 06:44:38 +02:00
local minrating, maxrating
for rating, time in pairs(v.times) do
if minrating == nil then minrating = rating else
if minrating > rating then minrating = rating end
end
if maxrating == nil then maxrating = rating else
if maxrating < rating then maxrating = rating end
end
2016-08-01 06:17:59 +02:00
end
2016-08-01 06:44:38 +02:00
local ratingstring = "Unknown rating"
if minrating ~= nil and maxrating ~= nil then
if minrating == maxrating then
ratingstring = "Rating "..minrating
else
ratingstring = "Rating "..minrating.."-"..maxrating
end
end
local levelstring
if v.maxlevel == 0 then
levelstring = "level 0"
elseif v.maxlevel ~= nil then
levelstring = "level 0-"..v.maxlevel
else
levelstring = "any level"
end
formstring = formstring .. "- " .. group_to_string(k, "mining") .. ": "..ratingstring..", ".. levelstring .. "\n"
2016-08-01 04:31:53 +02:00
end
end
formstring = formstring .. "\n"
local damage_groups = tool_capabilities.damage_groups
if damage_groups ~= nil then
formstring = formstring .. "This is a melee weapon which deals damage by punching.\nMaximum damage per hit:\n"
2016-08-01 04:31:53 +02:00
for k,v in pairs(damage_groups) do
formstring = formstring .. "- " .. group_to_string(k, "damage") .. ": " .. v .. " HP\n"
end
end
end
return formstring
end
-- Smelting fuel factoid
local fuel_factoid = function(itemstring, ctype)
local formstring = ""
local result, decremented = minetest.get_craft_result({method = "fuel", items = {itemstring}})
if result ~= nil and result.time > 0 then
local base
if ctype == "tools" then
base = "This tool can serve as a smelting fuel with a burning time of %s."
elseif ctype == "nodes" then
base = "This block can serve as a smelting fuel with a burning time of %s."
else
base = "This item can serve as a smelting fuel with a burning time of %s."
end
formstring = formstring .. string.format(base, burntime_to_text(result.time))
local replaced = decremented.items[1]:get_name()
if not decremented.items[1]:is_empty() and replaced ~= itemstring then
formstring = formstring .. " Using it as fuel turns it into: "..minetest.formspec_escape(minetest.registered_items[replaced].description).."."
end
formstring = formstring .. "\n"
end
return formstring
end
2016-08-02 16:27:01 +02:00
local factoid_generators = {}
factoid_generators.nodes = {}
factoid_generators.tools = {}
factoid_generators.craftitems = {}
function doc.sub.items.register_factoid(category_id, factoid_type, factoid_generator)
local ftable = { fgen = factoid_generator, ftype = factoid_type }
if category_id == "nodes" then
table.insert(factoid_generators.nodes, ftable)
return true
elseif category_id == "tools" then
table.insert(factoid_generators.tools, ftable)
return true
elseif category_id == "craftitems" then
table.insert(factoid_generators.craftitems, ftable)
return true
else
return false
end
end
2016-08-01 04:31:53 +02:00
2015-05-16 22:57:51 +02:00
doc.new_category("nodes", {
name = "Blocks",
build_formspec = function(data)
if data then
local longdesc = data.longdesc
local usagehelp = data.usagehelp
local formstring = ""
if data.itemstring ~= "air" then
formstring = formstring .. "item_image[11,0;1,1;"..data.itemstring.."]"
end
2016-08-03 00:03:56 +02:00
formstring = formstring .. "textarea[0.25,0.5;11,8;;"
if longdesc ~= nil then
2016-08-01 02:54:43 +02:00
formstring = formstring .. "Description: "..minetest.formspec_escape(longdesc).."\n\n"
end
if usagehelp ~= nil then
2016-08-01 02:54:43 +02:00
formstring = formstring .. "Usage help: "..minetest.formspec_escape(usagehelp).. "\n\n"
end
2015-05-16 22:57:51 +02:00
formstring = formstring .. "Maximum stack size: "..data.def.stack_max.. "\n"
local yesno = function(bool)
if bool==true then return "Yes"
elseif bool==false then return "No"
else return "N/A" end
end
formstring = formstring .. "Collidable: "..yesno(data.def.walkable).. "\n"
local liquid
if data.def.liquidtype ~= "none" then liquid = true else liquid = false end
formstring = formstring .. "Liquid: "..yesno(liquid).. "\n"
if liquid then
local range, renew, viscos
if data.def.liquid_range then range = data.def.liquid_range else range = 8 end
2016-07-19 17:25:24 +02:00
if data.def.liquid_renewable ~= nil then renew = data.def.liquid_renewable else renew = true end
2015-05-16 22:57:51 +02:00
if data.def.liquid_viscosity then viscos = data.def.liquid_viscosity else viscosity = 0 end
formstring = formstring .. "Liquid range: "..range.. "\n"
formstring = formstring .. "Liquid viscosity: "..viscos.. "\n"
formstring = formstring .. "Renewable liquid: "..yesno(renew).. "\n"
end
formstring = formstring .. "Pointable: "..yesno(data.def.pointable).. "\n"
formstring = formstring .. "\n"
-- Global factoids
if data.def.buildable_to == true then
formstring = formstring .. "This block will be replaced when building on it.\n"
end
if data.def.light_source == 15 then
2016-03-11 09:30:33 +01:00
formstring = formstring .. "This block is an extremely bright light source. It glows as bright the sun.\n"
elseif data.def.light_source == 14 then
formstring = formstring .. "This block is a very bright light source.\n"
2015-05-16 22:57:51 +02:00
elseif data.def.light_source > 12 then
2016-03-11 09:30:33 +01:00
formstring = formstring .. "This block is a bright light source.\n"
2015-05-16 22:57:51 +02:00
elseif data.def.light_source > 5 then
2016-03-11 09:30:33 +01:00
formstring = formstring .. "This block is a light source of medium luminance.\n"
elseif data.def.light_source > 1 then
formstring = formstring .. "This block is a weak light source and glows faintly.\n"
elseif data.def.light_source == 1 then
formstring = formstring .. "This block glows faintly. It is barely noticable.\n"
2015-05-16 22:57:51 +02:00
end
2016-08-01 23:19:49 +02:00
if data.def.paramtype == "light" and data.def.sunlight_propagates then
formstring = formstring .. "This block allows light to propagate with a small loss of brightness, but sunlight can go through without loss.\n"
elseif data.def.paramtype == "light" then
formstring = formstring .. "This block allows light to propagate with a small loss of brightness.\n"
elseif data.def.sunlight_propagates then
formstring = formstring .. "This block allows sunlight to propagate without loss in brightness.\n"
end
2015-05-16 22:57:51 +02:00
if data.def.climbable == true then
formstring = formstring .. "This block can be climbed.\n"
end
if data.def.damage_per_second > 1 then
formstring = formstring .. "This block causes a damage of "..data.def.damage_per_second.." hit points per second.\n"
elseif data.def.damage_per_second == 1 then
formstring = formstring .. "This block causes a damage of "..data.def.damage_per_second.." hit point per second.\n"
elseif data.def.damage_per_second < -1 then
formstring = formstring .. "This block heals "..data.def.damage_per_second.." hit points per second.\n"
elseif data.def.damage_per_second == -1 then
formstring = formstring .. "This block heals "..data.def.damage_per_second.." hit point per second.\n"
end
2016-07-19 20:21:46 +02:00
if data.def.drowning > 1 then
formstring = formstring .. "This block decreases your breath and causes a drowning damage of "..data.def.drowning.." hit points every 2 seconds.\n"
elseif data.def.drowning == 1 then
formstring = formstring .. "This block decreases your breath and causes a drowning damage of "..data.def.drowning.." hit point every 2 seconds.\n"
2015-05-16 22:57:51 +02:00
end
2016-08-03 12:59:26 +02:00
if data.def.drop ~= "" then
if data.def.groups.dig_immediate == 2 then
2016-08-03 12:59:26 +02:00
formstring = formstring .. "This block can be mined by any mining tool in half a second.\n"
elseif data.def.groups.dig_immediate == 3 then
2016-08-03 12:59:26 +02:00
formstring = formstring .. "This block can be mined by any mining tool immediately.\n"
-- Note: “unbreakable” is an unofficial group for undiggable blocks
elseif data.def.groups.immortal == 1 or data.def.groups.unbreakable == 1 or #data.def.groups == 0 then
formstring = formstring .. "This block can not be mined by ordinary mining tools.\n"
end
else
if data.def.groups.dig_immediate == 2 then
2016-08-03 12:59:26 +02:00
formstring = formstring .. "This block can be destroyed by any mining tool in half a second.\n"
elseif data.def.groups.dig_immediate == 3 then
2016-08-03 12:59:26 +02:00
formstring = formstring .. "This block can be destroyed by any mining tool immediately.\n"
elseif data.def.groups.immortal == 1 or data.def.groups.unbreakable == 1 or #data.def.groups == 0 then
formstring = formstring .. "This block can not be destroyed by ordinary mining tools.\n"
end
2015-05-16 22:57:51 +02:00
end
if data.def.groups.falling_node == 1 then
formstring = formstring .. "This block is affected by gravity and can fall.\n"
end
if data.def.groups.attached_node == 1 then
formstring = formstring .. "This block must be attached to another block\\, otherwise it will drop as an item.\n"
end
if data.def.groups.disable_jump == 1 then
formstring = formstring .. "You can not jump while standing on this block.\n"
end
local fdap = data.def.groups.fall_damage_add_percent
if fdap ~= nil then
if fdap > 0 then
2016-07-19 17:25:24 +02:00
formstring = formstring .. "The fall damage on this block is increased by "..fdap.."%.\n"
2015-05-16 22:57:51 +02:00
elseif fdap == -100 then
formstring = formstring .. "This block negates all fall damage.\n"
else
2016-07-19 17:25:24 +02:00
formstring = formstring .. "The fall damage on this block is reduced by "..math.abs(fdap).."%.\n"
2015-05-16 22:57:51 +02:00
end
end
local bouncy = data.def.groups.bouncy
if bouncy ~= nil then
2016-07-19 17:25:24 +02:00
formstring = formstring .. "This block will make you bounce off with an elasticity of "..bouncy.."%.\n"
2015-05-16 22:57:51 +02:00
end
formstring = formstring .. "\n"
2016-08-01 07:12:43 +02:00
-- Expose mining groups (crumbly, cracky, etc.) and level group
local mstring = "This block can be mined by mining tools which match any of the following mining ratings and its mining level.\n"
mstring = mstring .. "Mining ratings:\n"
2016-08-01 07:12:43 +02:00
local minegroupcount = 0
for g,name in pairs(minegroups) do
local rating = data.def.groups[g]
if rating ~= nil then
mstring = mstring .. "- "..name..": "..rating.."\n"
minegroupcount = minegroupcount + 1
end
end
if data.def.groups.level ~= nil then
mstring = mstring .. "Mining level: "..data.def.groups.level.."\n"
else
mstring = mstring .. "Mining level: 0\n"
end
if minegroupcount > 0 then
formstring = formstring .. mstring
end
formstring = formstring .. "\n"
2016-08-02 16:27:01 +02:00
-- Custom factoids are inserted here
for i=1,#factoid_generators.nodes do
formstring = formstring .. factoid_generators.nodes[i].fgen(data.itemstring, data.def)
formstring = formstring .. "\n"
end
2016-07-19 22:21:08 +02:00
2016-08-01 07:12:43 +02:00
-- Show other “exposable” groups in quick list
2016-07-31 23:58:58 +02:00
local gstring, gcount = groups_to_string(data.def.groups)
2015-05-16 22:57:51 +02:00
if gstring ~= nil then
2016-07-31 23:58:58 +02:00
if gcount == 1 then
2016-08-01 02:58:42 +02:00
formstring = formstring .. "This block belongs to the "..minetest.formspec_escape(gstring).." group.\n"
2016-07-31 23:58:58 +02:00
else
2016-08-01 02:58:42 +02:00
formstring = formstring .. "This block belongs to these groups: "..minetest.formspec_escape(gstring)..".\n"
2016-07-31 23:58:58 +02:00
end
2016-07-19 17:45:46 +02:00
end
2016-08-01 02:23:08 +02:00
-- Non-default drops
if data.def.drop ~= nil and data.def.drop ~= data.itemstring and data.itemstring ~= "air" then
2016-08-01 02:23:08 +02:00
local get_desc = function(stack)
local desc = minetest.registered_items[stack:get_name()].description
if desc == nil then
return stack:get_name()
else
return desc
end
end
if data.def.drop == "" then
formstring = formstring .. "This block won't drop anything when mined.\n"
elseif type(data.def.drop) == "string" then
local dropstack = ItemStack(data.def.drop)
if dropstack:get_name() ~= data.itemstring and dropstack:get_name() ~= 1 then
2016-08-01 02:23:08 +02:00
local desc = get_desc(dropstack)
local count = dropstack:get_count()
local finalstring
if count > 1 then
finalstring = count .. " × "..desc
else
finalstring = desc
end
formstring = formstring .. "This block will drop the following when mined: "..finalstring
end
2016-08-03 02:12:37 +02:00
elseif type(data.def.drop) == "table" and data.def.drop.items ~= nil then
2016-08-01 02:23:08 +02:00
local max = data.def.drop.max_items
if max == nil then
formstring = formstring .. "This block will drop the following items when mined: "
elseif max == 1 then
formstring = formstring .. "This block will randomly drop one of the following when mined: "
else
formstring = formstring .. "This block will randomly drop up to "..max.." items of the following items when mined: "
end
local icount = 0
local remaining_rarity = 1
for i=1,#data.def.drop.items do
for j=1,#data.def.drop.items[i].items do
if icount > 0 then
formstring = formstring .. ", "
end
local dropstack = ItemStack(data.def.drop.items[i].items[j])
local desc = get_desc(dropstack)
local count = dropstack:get_count()
if count ~= 1 then
desc = desc .. "(×"..count
end
formstring = formstring .. desc
icount = icount + 1
end
local rarity = data.def.drop.items[i].rarity
if rarity == nil then
if max ~= nil then
rarity = remaining_rarity
else
rarity = 1
end
end
2016-08-01 02:38:34 +02:00
local chance = (1/rarity)*100
-- Add circa indicator for percentages with decimal point
local ca = ""
-- FIXME: Does this actually reliable?
if math.fmod(chance, 1) > 0 then
ca = "ca. "
end
formstring = formstring .. string.format(" (%s%.0f%%)", ca, chance)
2016-08-01 02:23:08 +02:00
if max ~= nil then
remaining_rarity = 1/(1/remaining_rarity - 1/rarity)
end
end
formstring = formstring .. ".\n"
end
end
2016-07-31 23:58:58 +02:00
2016-07-19 17:45:46 +02:00
-- Show fuel recipe
formstring = formstring .. fuel_factoid(data.itemstring, "nodes")
2016-07-19 17:45:46 +02:00
2015-05-16 22:57:51 +02:00
formstring = formstring .. ";]"
return formstring
else
return "label[0,1;NO DATA AVALIABLE!"
end
end
})
doc.new_category("tools", {
name = "Tools and weapons",
build_formspec = function(data)
if data then
2016-08-01 04:46:43 +02:00
local longdesc = data.longdesc
local usagehelp = data.usagehelp
2016-07-24 16:32:49 +02:00
local formstring = ""
2016-07-24 18:50:30 +02:00
-- Hand
if data.itemstring == "" then
formstring = formstring .. "image[11,0;1,1;"..minetest.formspec_escape(minetest.registered_items[""].wield_image).."]"
-- Other tools
2016-07-24 16:32:49 +02:00
else
formstring = formstring .. "item_image[11,0;1,1;"..data.itemstring.."]"
end
2016-08-03 00:03:56 +02:00
formstring = formstring .. "textarea[0.25,0.5;11,8;;"
2016-08-01 04:46:43 +02:00
if longdesc ~= nil then
formstring = formstring .. "Description: "..minetest.formspec_escape(longdesc).."\n\n"
end
if usagehelp ~= nil then
formstring = formstring .. "Usage help: "..minetest.formspec_escape(usagehelp).. "\n\n"
end
2016-08-01 04:52:56 +02:00
if data.itemstring ~= "" then
formstring = formstring .. "Maximum stack size: "..data.def.stack_max.. "\n"
end
local yesno = function(bool)
if bool==true then return "Yes"
elseif bool==false then return "No"
else return "N/A" end
end
local range = 4.0
if data.def.range ~= nil then range = data.def.range end
formstring = formstring .. "Range: "..range.."\n"
formstring = formstring .. "\n"
2016-08-01 04:31:53 +02:00
formstring = formstring .. toolcaps_to_text(data.def.tool_capabilities)
formstring = formstring .. "\n"
-- Global factoids
if data.def.liquids_pointable == true then
formstring = formstring .. "This item will point to liquids rather than ignore them.\n"
end
2016-07-31 23:58:58 +02:00
-- Show other “exposable” groups
local gstring, gcount = groups_to_string(data.def.groups)
if gstring ~= nil then
if gcount == 1 then
2016-08-01 02:58:42 +02:00
formstring = formstring .. "This tool belongs to the "..minetest.formspec_escape(gstring).." group.\n"
2016-07-31 23:58:58 +02:00
else
2016-08-01 02:58:42 +02:00
formstring = formstring .. "This tool belongs to these groups: "..minetest.formspec_escape(gstring)..".\n"
2016-07-31 23:58:58 +02:00
end
end
2016-07-19 17:45:46 +02:00
-- Show fuel recipe
formstring = formstring .. fuel_factoid(data.itemstring, "tools")
2016-07-19 17:45:46 +02:00
formstring = formstring .. ";]"
return formstring
else
return "label[0,1;NO DATA AVALIABLE!"
end
end
})
doc.new_category("craftitems", {
2016-07-24 19:33:34 +02:00
name = "Miscellaneous items",
build_formspec = function(data)
if data then
2016-08-01 04:46:43 +02:00
local longdesc = data.longdesc
local usagehelp = data.usagehelp
local formstring = "item_image[11,0;1,1;"..data.itemstring.."]"
2016-08-03 00:03:56 +02:00
formstring = formstring .. "textarea[0.25,0.5;11,8;;"
2016-08-01 04:46:43 +02:00
if longdesc ~= nil then
formstring = formstring .. "Description: "..minetest.formspec_escape(longdesc).."\n\n"
end
if usagehelp ~= nil then
formstring = formstring .. "Usage help: "..minetest.formspec_escape(usagehelp).. "\n\n"
end
formstring = formstring .. "Maximum stack size: "..data.def.stack_max.. "\n"
local yesno = function(bool)
if bool==true then return "Yes"
elseif bool==false then return "No"
else return "N/A" end
end
local range = 4.0
if data.def.range ~= nil then range = data.def.range end
formstring = formstring .. "Range: "..range.."\n"
formstring = formstring .. "\n"
2016-08-01 04:31:53 +02:00
formstring = formstring .. toolcaps_to_text(data.def.tool_capabilities)
formstring = formstring .. "\n"
-- Global factoids
if data.def.liquids_pointable == true then
2016-07-31 23:58:58 +02:00
formstring = formstring .. "This item will point to liquids rather than ignore them.\n"
end
-- Show other “exposable” groups
local gstring, gcount = groups_to_string(data.def.groups)
if gstring ~= nil then
if gcount == 1 then
2016-08-01 02:58:42 +02:00
formstring = formstring .. "This item belongs to the "..minetest.formspec_escape(gstring).." group.\n"
2016-07-31 23:58:58 +02:00
else
2016-08-01 02:58:42 +02:00
formstring = formstring .. "This item belongs to these groups: "..minetest.formspec_escape(gstring)..".\n"
2016-07-31 23:58:58 +02:00
end
end
2016-07-19 17:45:46 +02:00
-- Show fuel recipe
formstring = formstring .. fuel_factoid(data.itemstring, "craftitems")
2016-07-19 17:45:46 +02:00
formstring = formstring .. ";]"
return formstring
else
return "label[0,1;NO DATA AVALIABLE!"
end
end
})
2016-08-02 15:35:40 +02:00
doc.sub.items.help = {}
doc.sub.items.help.longdesc = {}
doc.sub.items.help.usagehelp = {}
-- Gather help texts
2016-08-02 15:35:40 +02:00
function doc.sub.items.add_helptexts(longdesc, usagehelp)
for k,v in pairs(longdesc) do
2016-08-02 15:35:40 +02:00
doc.sub.items.help.longdesc[k] = v
end
for k,v in pairs(usagehelp) do
2016-08-02 15:35:40 +02:00
doc.sub.items.help.usagehelp[k] = v
end
end
2016-08-02 15:55:05 +02:00
-- Register group definition stuff
-- “Real” group names to replace the rather technical names
function doc.sub.items.add_real_group_names(groupnames)
for internal, real in pairs(groupnames) do
groupdefs[internal] = real
end
end
-- List of “real” group names of groups intended for mining
function doc.sub.items.add_mine_group_names(groupnames)
for internal, real in pairs(groupnames) do
minegroups[internal] = real
end
end
-- List of “real” group names of groups intended for damage groups
function doc.sub.items.add_damage_group_names(groupnames)
for internal, real in pairs(groupnames) do
damagegroups[internal] = real
end
end
-- Add item which will be forced to be added to the item list,
-- even if the item is not in creative inventory
function doc.sub.items.add_forced_item_entries(itemstrings)
for i=1,#itemstrings do
forced_items[itemstrings[i]] = true
2016-08-02 15:55:05 +02:00
end
end
-- Register a list of entry names where the entry name should differ
-- from the original item description
function doc.sub.items.add_item_name_overrides(itemstrings)
for internal, real in pairs(itemstrings) do
item_name_overrides[internal] = real
end
end
2015-05-16 22:57:51 +02:00
local function gather_descs()
2016-08-02 15:35:40 +02:00
local help = doc.sub.items.help
2016-08-03 15:03:38 +02:00
-- Set default air text
-- Custom longdesc and usagehelp may be set by mods through the add_helptexts function
if help.longdesc["air"] == nil then
help.longdesc["air"] = "A transparent block, basically empty space. It is usually left behind after digging something."
end
-- Add node entries
2015-05-16 22:57:51 +02:00
for id, def in pairs(minetest.registered_nodes) do
local name, ld, uh
local forced = false
if forced_items[id] == true and minetest.registered_nodes[id] ~= nil then forced = true end
if item_name_overrides[id] ~= nil then
name = item_name_overrides[id]
else
name = def.description
2015-05-16 22:57:51 +02:00
end
if not (name == nil or name == "" or def.groups.not_in_creative_inventory) or forced then
if help.longdesc[id] ~= nil then
ld = help.longdesc[id]
end
if help.usagehelp[id] ~= nil then
uh = help.usagehelp[id]
end
local infotable = {
name = name,
data = {
longdesc = ld,
usagehelp = uh,
itemstring = id,
def = def,
}
}
doc.new_entry("nodes", id, infotable)
end
end
2016-08-03 15:03:38 +02:00
-- Add entry for the default tool (“hand”)
-- Custom longdesc and usagehelp may be set by mods through the add_helptexts function
if help.longdesc[""] == nil then
-- Default text
help.longdesc[""] = "Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand."
2016-08-03 14:11:21 +02:00
end
2016-08-03 15:03:38 +02:00
doc.new_entry("tools", "", {
name = item_name_overrides[""],
data = {
longdesc = help.longdesc[""],
usagehelp = help.usagehelp[""],
itemstring = "",
def = minetest.registered_items[""]
}
})
-- Add tool entries
for id, def in pairs(minetest.registered_tools) do
local name, ld, uh
local forced = false
if forced_items[id] == true and minetest.registered_tools[id] ~= nil then forced = true end
if item_name_overrides[id] ~= nil then
name = item_name_overrides[id]
else
name = def.description
end
if not (name == nil or name == "" or def.groups.not_in_creative_inventory) or forced then
if help.longdesc[id] ~= nil then
ld = help.longdesc[id]
end
if help.usagehelp[id] ~= nil then
uh = help.usagehelp[id]
end
local infotable = {
name = name,
data = {
longdesc = ld,
usagehelp = uh,
itemstring = id,
def = def,
}
}
doc.new_entry("tools", id, infotable)
end
end
2016-08-03 15:03:38 +02:00
-- Add craftitem entries
for id, def in pairs(minetest.registered_craftitems) do
local name, ld, uh
name = def.description
local forced = false
if forced_items[id] == true and minetest.registered_craftitems[id] ~= nil then forced = true end
if item_name_overrides[id] ~= nil then
name = item_name_overrides[id]
else
name = def.description
end
if not (name == nil or name == "" or def.groups.not_in_creative_inventory) then
if help.longdesc[id] ~= nil then
ld = help.longdesc[id]
end
if help.usagehelp[id] ~= nil then
uh = help.usagehelp[id]
end
local infotable = {
name = name,
data = {
longdesc = ld,
usagehelp = uh,
itemstring = id,
def = def,
}
}
doc.new_entry("craftitems", id, infotable)
2015-05-16 22:57:51 +02:00
end
end
end
minetest.after(0, gather_descs)