diff options
Diffstat (limited to 'init.lua')
-rw-r--r-- | init.lua | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..874f51f --- /dev/null +++ b/init.lua @@ -0,0 +1,254 @@ +local groupdefs = { +} + +local forced_nodes = { + "bones:bones", + "farming:soil", + "farming:soil_wet", + "farming:desert_sand_soil", + "farming:desert_sand_soil_wet", +} + +local groups_to_string = function(grouptable) + local gstring = "" + if #grouptable == 0 then + return nil + end + for id, value in pairs(grouptable) do + if groupdefs[id] ~= nil then + gstring = gstring .. groupdefs[id][value] .. "\\, " + end + end + return gstring +end + +doc.new_category("nodes", { + name = "Blocks", + build_formspec = function(data) + if data then + local longdesc = data.longdesc or "N/A" + local usagehelp = data.usagehelp or "N/A" + local formstring = "item_image[11,0;1,1;"..data.itemstring.."]" + formstring = formstring .. "textarea[0.25,1;10,8;;Description: "..longdesc.."\n\n" + formstring = formstring .. "Usage: "..usagehelp .. "\n\n" + 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 + if data.def.liquid_renewable then range = data.def.liquid_renewable else renew = true end + 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 .. "Transparent to sunlight: "..yesno(data.def.sunlight_propagates).. "\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 + formstring = formstring .. "This block is a very bright source of light. It glows as bright the sun.\n" + elseif data.def.light_source > 12 then + formstring = formstring .. "This block is a bright source of light.\n" + elseif data.def.light_source > 5 then + formstring = formstring .. "This block is a source of light.\n" + elseif data.def.light_source > 0 then + formstring = formstring .. "This block is a source of light and glow faintly.\n" + end + 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 + if data.def.drowning > 0 then + formstring = formstring .. "You will slowly lose breath in this block.\n" + end + + if data.def.groups.immortal == 1 then + formstring = formstring .. "This block can not be dug by ordinary digging tools.\n" + end + if data.def.groups.dig_immediate == 2 then + formstring = formstring .. "This block can be dug by any tool in half a second.\n" + elseif data.def.groups.dig_immediate == 3 then + formstring = formstring .. "This block can be dug by any tool immediately.\n" + 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 + formstring = formstring .. "The fall damage is "..fdap.."% higher on this block.\n" + elseif fdap == -100 then + formstring = formstring .. "This block negates all fall damage.\n" + else + formstring = formstring .. "The fall damage is "..math.abs(fdap).."% lower on this block.\n" + end + end + local bouncy = data.def.groups.bouncy + if bouncy ~= nil then + formstring = formstring .. "You will bounce on this block with a bounce speed of "..bouncy.."%.\n" + end + + formstring = formstring .. "\n" + + -- minetest_game factoids + if data.def.groups.flammable == 1 then + formstring = formstring .. "This block is flammable and burns slowly.\n" + elseif data.def.groups.flammable == 2 then + formstring = formstring .. "This block is flammable and burns at medium speed.\n" + elseif data.def.groups.flammable == 3 then + formstring = formstring .. "This block is highly flammable and burns very quickly.\n" + elseif data.def.groups.flammable == 4 then + formstring = formstring .. "This block is very easily set on fire and burns extremely quickly.\n" + elseif data.def.groups.flammable ~= nil then + formstring = formstring .. "This block is flammable.\n" + end + + formstring = formstring .. "\n" + if data.def.groups.oddly_breakable_by_hand ~= nil then + formstring = formstring .. "This block can be dug by hand.\n" + end + + if data.def.groups.cracky == 1 then + formstring = formstring .. "This block is slightly cracky and can be dug by a strong pickaxe.\n" + elseif data.def.groups.cracky == 2 then + formstring = formstring .. "This block is cracky and can be dug by a pickaxe.\n" + elseif data.def.groups.cracky == 3 then + formstring = formstring .. "This block is very cracky and can be dug easily by a pickaxe.\n" + elseif data.def.groups.cracky ~= nil then + formstring = formstring .. "This block is cracky in some way.\n" + end + + + if data.def.groups.crumbly == 1 then + formstring = formstring .. "This block is slightly crumbly and can be dug by a good shovel.\n" + elseif data.def.groups.crumbly == 2 then + formstring = formstring .. "This block is crumbly and can be dug by a shovel.\n" + elseif data.def.groups.crumbly == 3 then + formstring = formstring .. "This block is very crumbly and can be dug easily by a shovel.\n" + elseif data.def.groups.crumbly ~= nil then + formstring = formstring .. "This block is crumbly in some way.\n" + end + + if data.def.groups.explody == 1 then + formstring = formstring .. "This block is a bit prone to explosions.\n" + elseif data.def.groups.explody == 2 then + formstring = formstring .. "This block is prone to explosions.\n" + elseif data.def.groups.explody == 3 then + formstring = formstring .. "This block is very prone to explosions and easily affected by them.\n" + elseif data.def.groups.explody ~= nil then + formstring = formstring .. "This block is prone to explosions to some extent.\n" + end + + if data.def.groups.snappy == 1 then + formstring = formstring .. "This block is slightly snappy and can be dug by fine tools.\n" + elseif data.def.groups.snappy == 2 then + formstring = formstring .. "This block is snappy and can be dug by fine tools.\n" + elseif data.def.groups.snappy == 3 then + formstring = formstring .. "This block is highly snappy and can be dug easily by fine tools.\n" + elseif data.def.groups.snappy ~= nil then + formstring = formstring .. "This block is to some extent snappy.\n" + end + + if data.def.groups.choppy == 1 then + formstring = formstring .. "This block is a bit choppy and can be dug by tools which involve brute force.\n" + elseif data.def.groups.choppy == 2 then + formstring = formstring .. "This block is choppy and can be dug by tools which involve brute force.\n" + elseif data.def.groups.choppy == 3 then + formstring = formstring .. "This block is highly choppy and can easily be dug by tools which involve brute force.\n" + elseif data.def.groups.choppy ~= nil then + formstring = formstring .. "This block is choppy to some extent.\n" + end + + if data.def.groups.fleshy ~= nil then + formstring = formstring .. "This block is made out of flesh.\n" + end + + formstring = formstring .. "\n\n" + + -- Show other “exposable” groups + local gstring = groups_to_string(data.def.groups) + if gstring ~= nil then + formstring = formstring .. "This block is member of the following additional groups: "..groups_to_string(data.def.groups).."\n" + end + + + formstring = formstring .. ";]" + + return formstring + else + return "label[0,1;NO DATA AVALIABLE!" + end + end +}) + +dofile(minetest.get_modpath("doc_minetest_game") .. "/helptexts.lua") + +local function gather_descs() + doc.new_entry("nodes", "air", { + name = "Air", + data = { + itemstring = "air", + longdesc = "A transparent block, basically empty space. It is usually left behind after digging something.", + def = minetest.registered_nodes["air"], + } + }) + for id, def in pairs(minetest.registered_nodes) do + local name, ld, uh + name = def.description + local forced = false + for i=1, #forced_nodes do + if name == forced_nodes then forced = true end + 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 +end + +minetest.after(0, gather_descs) |