local cube = minetest.inventorycube local S = hell.get_translator -- the content of the guide local guide_infos = { { description = "Mushrooms", {"text", "Hell mushrooms can be found on the hell's ground and on hellrack soil,"}, {"text", "it can be dug by hand."}, {"image", {1, 1, "riesenpilz_nether_shroom_side.png"}}, {"y", 0.5}, {"text", "If you drop it without holding the fast key, you can split it into its stem "}, {"text", "and head:"}, {"image", {1, 1, "hell_shroom_top.png", 1}}, {"image", {1, 1, "hell_shroom_stem.png"}}, {"y", 0.5}, {"text", "You can get more mushrooms by using a hellrack soil:"}, {"text", "1. search a dark place and, if necessary, place hellrack with air about it,"}, {"text", "2. right click with cooked blood onto the hellrack to make it soiled,"}, {"text", "3. right click onto the hellrack soil with a hell mushroom head to add some "}, {"text", "spores,"}, {"text", "4. dig the mushroom which grew after some time to make place for another one."}, {"image", {1, 1, "riesenpilz_nether_shroom_side.png", 5.4}}, {"y", 1}, {"image", {1, 1, "hell_hellrack.png^hell_hellrack_soil.png", 1.8}}, {"image", {1, 1, "hell_hotbed.png", 1.3, -0.832}}, {"image", {1, 1, "hell_hellrack.png^hell_hellrack_soil.png", 3.6}}, {"image", {1, 1, "hell_shroom_top.png", 3.1, -0.664}}, {"image", {1, 1, "hell_hellrack.png^hell_hellrack_soil.png", 5.4}}, {"image", {1, 1, "hell_hellrack.png"}}, {"y", 0.5}, }, { description = "Tools", {"text", "You can craft 5 kinds of tools in the hell, which (except the mushroom pick) "}, {"text", "require sticks to be crafted:"}, {"image", {1, 1, "hell_pick_mushroom.png"}}, {"y", 0.1}, {"text", "strength : 1"}, {"text", "The mushroom pick needs mushroom stems and heads to be crafted."}, {"image", {1, 1, "hell_pick_wood.png"}}, {"y", 0.1}, {"text", "strength : 2"}, {"text", "The hell wood pick can be crafted with cooked hell blood wood."}, {"image", {1, 1, "hell_axe_hellrack.png", 1.5}}, {"image", {1, 1, "hell_shovel_hellrack.png", 3}}, {"image", {1, 1, "hell_sword_hellrack.png", 4.5}}, {"image", {1, 1, "hell_pick_hellrack.png"}}, {"y", 0.1}, {"text", "strength : 3"}, {"text", "The red hellrack tools can be crafted with usual hellrack."}, {"image", {1, 1, "hell_axe_hellrack_blue.png", 1.5}}, {"image", {1, 1, "hell_shovel_hellrack_blue.png", 3}}, {"image", {1, 1, "hell_sword_hellrack_blue.png", 4.5}}, {"image", {1, 1, "hell_pick_hellrack_blue.png"}}, {"y", 0.1}, {"text", "strength : 3"}, {"text", "The blue hellrack tools can be crafted with blue hellrack."}, {"image", {1, 1, "hell_axe_white.png", 1.5}}, {"image", {1, 1, "hell_shovel_white.png", 3}}, {"image", {1, 1, "hell_sword_white.png", 4.5}}, {"image", {1, 1, "hell_pick_white.png"}}, {"y", 0.1}, {"text", "strength : 3"}, {"text", "The siwtonic tools can be crafted with the siwtonic ore."}, {"y", 0.5}, }, { description = "Blood structures", {"text", "You can find blood structures on the ground and dig their nodes even with "}, {"text", "bare hands."}, {"text", "One contains 4 kinds of blocks:"}, {"image", {1, 1, cube("hell_blood.png"), 1}}, {"image", {1, 1, cube("hell_blood_top.png", "hell_blood.png^hell_blood_side.png", "hell_blood.png^hell_blood_side.png"), 2}}, {"image", {1, 1, "hell_fruit.png", 3}}, {"image", {1, 1, cube("hell_blood_stem_top.png", "hell_blood_stem.png", "hell_blood_stem.png")}}, {"y", 0.168}, {"text", "Blood stem, blood, blood head and hell fruit."}, {"text", "You can craft 4 blood wood with the stem:"}, {"image", {1, 1, cube("hell_wood.png")}}, {"y", 0.168}, {"text", "The 4 blood nodes can be cooked and, except blood wood, their blood can be "}, {"text", "extracted."}, {"y", 0.5}, }, { description = "Fruits", {"text", "You can find the hell fruits on blood structures and dig them even with "}, {"text", "bare hands."}, {"image", {1, 1, "hell_fruit.png"}}, {"text", "Eating it will make you lose life but it might feed you and give you blood:"}, {"image", {1, 1, "hell_blood_extracted.png"}}, {"y", 0.168}, {"text", "If you eat it at the right place inside a portal, you will be teleported."}, {"y", 0.168}, {"text", "If you drop it without holding the fast key, you can split it into its fruit "}, {"text", "and leaf:"}, {"image", {1, 1, "hell_fruit_leaf.png", 1}}, {"image", {1, 1, "hell_fruit_no_leaf.png"}}, {"y", 0.168}, {"text", "Craft a fruit leave block out of 9 fruit leaves and the fruit can be used to "}, {"text", "craft a hell pearl."}, {"image", {1, 1, cube("hell_fruit_leaves.png")}}, {"y", 0.168}, {"text", "A fruit leaves block."}, }, { description = "Cooking", {"text", "To get a furnace you need to dig at least 8 hellrack bricks. They can be "}, {"text", "found at pyramid like constructions and require at least a strength 1 "}, {"text", "hell pick to be dug."}, {"text", "To craft the furnace, use the hellrack bricks like cobble:"}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png"), 0.5}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png"), 1}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png")}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png"), 1}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png")}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png"), 0.5}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png"), 1}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png")}}, {"y", 0.168}, {"text", "To begin cooking stuff, you can use a mushroom or fruit."}, {"text", "After that it's recommended to use cooked blood nodes."}, {"text", "Some hell items can be cooked:"}, {"image", {1, 1, cube("hell_blood_stem_top_cooked.png", "hell_blood_stem_cooked.png", "hell_blood_stem_cooked.png"), 0.35}}, {"image", {1, 1, cube("hell_blood_cooked.png"), 1.6}}, {"image", {1, 1, cube("hell_blood_top_cooked.png", "hell_blood_cooked.png^hell_blood_side_cooked.png", "hell_blood_cooked.png^hell_blood_side_cooked.png"), 2.9}}, {"image", {1, 1, cube("hell_wood_cooked.png"), 4.3}}, {"y", 1.2}, {"text", "Some cooked blood stem, cooked blood, cooked blood head and cooked blood "}, {"text", "wood."}, {"image", {1, 1, "hell_hotbed.png", 0.3}}, {"image", {1, 1, "hell_pearl.png", 2}}, {"y", 1.168}, {"text", "Some cooked extracted blood and a hell pearl."}, {"y", 0.5}, }, { description = "Extractors", {"text", "Here you can find out information about the hell extractor."}, {"text", "Here you can see its craft recipe:"}, {"image", {0.5, 0.5, cube("hell_blood_top_cooked.png", "hell_blood_cooked.png^hell_blood_side_cooked.png", "hell_blood_cooked.png^hell_blood_side_cooked.png"), 0.5}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png"), 1}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png")}}, {"image", {0.5, 0.5, cube("hell_blood_extractor.png"), 2.5}}, {"image", {0.5, 0.5, "hell_shroom_stem.png", 0.5}}, {"image", {0.5, 0.5, cube("hell_blood_cooked.png"), 1}}, {"image", {0.5, 0.5, cube("hell_blood_cooked.png")}}, {"image", {0.5, 0.5, cube("hell_blood_stem_top_cooked.png", "hell_blood_stem_cooked.png", "hell_blood_stem_cooked.png"), 0.5}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png"), 1}}, {"image", {0.5, 0.5, cube("hell_hellrack_brick.png")}}, {"y", 0.2}, {"text", "Extract blood from the blood nodes you get from the blood structures."}, {"text", "You can also get blood with a hell fruit."}, {"text", "So you can use it:"}, {"text", "1. place it somewhere,"}, {"text", "2. place blood blocks next to it (4 or less),"}, {"text", "3. right click with extracted blood onto it to power it,"}, {"text", "4. take the new extracted blood and dig the extracted nodes."}, {"text", "Example (view from the top):"}, {"y", 0.88}, {"image", {1, 1, "hell_blood_stem_top.png", 0.82, -0.88}}, {"image", {1, 1, "hell_blood.png", 1.63}}, {"image", {1, 1, "hell_blood_extractor.png", 0.82}}, {"image", {1, 1, "hell_blood_stem_top_empty.png", 3.82, -0.88}}, {"image", {1, 1, "hell_blood_empty.png", 4.63}}, {"image", {1, 1, "hell_blood_empty.png", 3.001}}, {"image", {1, 1, "hell_blood_extractor.png", 3.82}}, {"image", {1, 1, "hell_blood.png"}}, {"image", {1, 1, "hell_blood.png", 0.82, -0.12}}, {"image", {1, 1, "hell_blood_empty.png", 3.82, -0.12}}, {"y", 1.168}, {"text", "The empty blood stem can be crafted into empty hell wood, "}, {"text", "which can be crafted into hell sticks."}, {"y", 0.5}, }, { description = "Ores", {"text", "You can find 5 types of ores:"}, {"image", {1, 1, cube("hell_hellrack_black.png"), 4}}, {"image", {1, 1, cube("hell_hellrack.png")}}, {"y", 0.168}, {"text", "The red hellrack is generated like stone."}, {"text", "The black hellrack is generated like gravel."}, {"text", "Both require at least a strength 2 hell pick to be dug."}, {"image", {1, 1, cube("hell_white.png"), 4}}, {"image", {1, 1, cube("hell_hellrack_blue.png")}}, {"y", 0.168}, {"text", "The blue hellrack is generated like diamond ore."}, {"text", "The siwtonic ore is generated like mese blocks."}, {"text", "Both require at least a strength 3 hell pick to be dug."}, {"image", {1, 1, cube("hell_hellrack_tiled.png"), 4}}, {"image", {1, 1, cube("glow_stone.png")}}, {"y", 0.168}, {"text", "Glow stone can be used for lighting."}, {"text", "Tiled hellrack is generated like coal ore."}, {"text", "Glow stone requires at least a strength 1 pick to be dug."}, {"text", "Dig tiled hellrack with at least a level 2 pickaxe."}, {"y", 0.5}, }, { description = "Vines", {"text", "Feed hell vines with blood. Dig them with anything."}, {"image", {1, 1, "hell_vine.png"}}, {"y", 0.168}, {"text", "Grow hell child by placing it to a dark place onto"}, {"text", "a blood structure head node."}, {"image", {1, 1, "hell_sapling.png"}}, {"y", -0.10}, {"image", {1, 1, "hell_blood.png^hell_blood_side.png"}}, }, { description = "Pearls", {"text", "The hell pearl can be used to teleport by throwing it."}, {"text", "Here is how to get one:"}, {"text", "First of all craft 2 mushroom heads and 1 hell fruit without leaf together:"}, {"image", {1, 1, "hell_shroom_top.png"}}, {"image", {1, 1, "hell_fim.png", 3}}, {"image", {1, 1, "hell_fruit_no_leaf.png"}}, {"image", {1, 1, "hell_shroom_top.png"}}, {"y", 0.168}, {"text", "Put the result into the furnace to cook it into a hell pearl:"}, {"image", {1, 1, "hell_pearl.png"}}, }, { description = "Bricks", {"text", "Craft bricks out of red, black and blue hellrack."}, {"image", {1, 1, cube("hell_hellrack_brick_black.png"), 1}}, {"image", {1, 1, cube("hell_hellrack_brick_blue.png"), 2}}, {"image", {1, 1, cube("hell_hellrack_brick.png")}}, {"y", 0.168}, {"text", "Dig them with at least a level 1 pickaxe."}, {"y", 0.5}, }, { description = "Portals", {"text", "Here you can find out how to build the hell portal."}, {"text", "A hell portal requires following nodes:"}, {"text", "- 25 empty hell wooden planks,"}, {"text", "- 16 black hellrack,"}, {"text", "- 12 blue hellrack bricks,"}, {"text", "- 8 red hellrack,"}, {"text", "- 8 cooked hell blood,"}, {"text", "- 4 hell fruits,"}, {"text", "- 2 siwtonic blocks."}, {"text", "It should look approximately like this one:"}, {"image", {5.625, 6, "hell_teleporter.png", 5, -0.5}}, {"y", 6}, {"text", "Activate it by standing in the middle,"}, {"text", "on the siwtonic block and eating a hell fruit."}, {"text", "Take enough stuff with you to build a portal when you'll come back."}, {"y", 0.5}, }, { description = "Forests", {"text", "The hell forest is generated in caves, above the usual hell."}, {"text", "There you can find some plants:"}, {"image", {1, 1, "hell_grass_middle.png", 1}}, {"image", {1, 1, "hell_grass_big.png", 2}}, {"image", {1, 1, "hell_grass_small.png"}}, {"y", 0.168}, {"text", "Use the hell forest grass to get paper. Craft paper out of the dried grass."}, {"image", {1, 1, cube("hell_tree_top.png", "hell_tree.png", "hell_tree.png")}}, {"y", 0.168}, {"text", "Hell trunks can be found at hell trees. Craft hell wood out of hell trunk."}, {"image", {1, 1, "hell_glowflower.png"}}, {"y", 0.168}, {"text", "Use it for lighting and decoration."}, }, } -- the size of guide pages local guide_size = {x=15, y=3, cx=0.2, cy=0.25} -- informations about settings and ... local formspec_offset = {x=0.375, y=0.375} local font_size if minetest.is_singleplayer() then font_size = tonumber(minetest.settings:get("font_size")) or 13 else font_size = 13 end guide_size.fx = math.floor(((guide_size.x-4) * (guide_size.cx+formspec_offset.x)) * font_size) guide_size.fy = font_size/40 -- the default guide formspecs local guide_forms = { contents = "size[3.6,"..(#guide_infos)-2 ..";]label["..guide_size.cx+0.7 ..","..guide_size.cy ..";Contents:]", } -- change the infos to formspecs for n,data in ipairs(guide_infos) do local form = "" local y = 0 local x = guide_size.cx for _,i in ipairs(data) do local typ, content = unpack(i) if typ == "y" then y = y+content elseif typ == "x" then x = math.max(x, content) elseif typ == "text" then local tab = minetest.wrap_text(S(content), guide_size.fx, true) local l = guide_size.cx for _,str in ipairs(tab) do form = form.."label["..formspec_offset.x ..","..formspec_offset.y+y..";"..str.."]" y = y+guide_size.fy l = math.max(l, #str) end x = math.max(x, l/font_size) elseif typ == "image" then local w, h, texture_name, px, py = unpack(content) if not px then form = form.."image["..formspec_offset.x..","..formspec_offset.y+y ..";"..w..","..h..";"..texture_name.."]" y = y+h else px = formspec_offset.x+px py = py or 0 form = form.."image["..px..",".. formspec_offset.y+y+py ..";"..w..","..h..";"..texture_name.."]" x = math.max(x, px+w) end end end form = "size["..guide_size.x..","..y+1 ..";]real_coordinates[true]"..form.."button["..guide_size.x/2-0.6 ..","..y ..";1.2,0.8;quit;Back]" guide_forms[n] = {data.description, form} end local desc_tab = {} for n,i in ipairs(guide_forms) do desc_tab[i[1]] = n end -- creates contents formspec local y = 0 for y,i in ipairs(guide_forms) do local desc, form = unpack(i) local s = #desc*1.3/font_size+1.5 guide_forms.contents = guide_forms.contents.."button["..guide_size.cx*12/s-0.5 ..","..guide_size.cy+y/1.3 ..";"..s..",1;name;"..desc.."]" end -- shows the contents of the formspec local function show_guide(pname) minetest.show_formspec(pname, "hell_guide_contents", guide_forms["contents"]) end minetest.register_on_player_receive_fields(function(player, formname, fields) if formname == "hell_guide_contents" then local fname = fields.name local pname = player:get_player_name() if fname and pname then minetest.show_formspec(pname, "hell_guide", guide_forms[desc_tab[fname]][2]) end elseif formname == "hell_guide" then local fname = fields.quit local pname = player:get_player_name() if fname and pname then minetest.show_formspec(pname, "hell_guide_contents", guide_forms["contents"]) end end end) minetest.register_chatcommand("hell_help", { params = "", description = S("Shows a hell guide"), func = function(name) local player = minetest.get_player_by_name(name) if not player then minetest.chat_send_player(name, "Something went wrong.") return true end if player:get_pos().y > hell.start then minetest.chat_send_player(name, S("Usually you don't need this guide here. You can view it in the hell.")) return true end minetest.chat_send_player(name, S("Showing guide...")) show_guide(name) return true end })