3e5a3b5f8c
We may need to provide some more information about torches later, but for now, we simply won't disclaim their existence.
145 lines
4.1 KiB
Lua
145 lines
4.1 KiB
Lua
-- LUALOCALS < ---------------------------------------------------------
|
|
local ipairs, minetest, nodecore, pairs, table, type
|
|
= ipairs, minetest, nodecore, pairs, table, type
|
|
local table_concat, table_insert
|
|
= table.concat, table.insert
|
|
-- LUALOCALS > ---------------------------------------------------------
|
|
|
|
nodecore.amcoremod()
|
|
|
|
nodecore.register_inventory_tab,
|
|
nodecore.registered_inventory_tabs
|
|
= nodecore.mkreg()
|
|
|
|
local nct = nodecore.translate
|
|
|
|
do
|
|
local version = nodecore.version
|
|
version = version and (nct("Version") .. " " .. version)
|
|
or nct("DEVELOPMENT VERSION")
|
|
|
|
nodecore.register_inventory_tab({
|
|
title = "About",
|
|
content = {
|
|
nct(nodecore.product) .. " - " .. version,
|
|
"",
|
|
"(C)2018-2019 by Aaron Suen <warr1024@@gmail.com>",
|
|
"MIT License (http://www.opensource.org/licenses/MIT)",
|
|
"See included LICENSE file for full details and credits",
|
|
"",
|
|
"https://content.minetest.net/packages/Warr1024/nodecore/",
|
|
"GitLab: https://gitlab.com/sztest/nodecore",
|
|
"Discord: https://discord.gg/SHq2tkb"
|
|
}
|
|
})
|
|
end
|
|
|
|
nodecore.register_inventory_tab({
|
|
title = "Inventory",
|
|
content = {
|
|
"Player's Guide: Inventory Management",
|
|
"",
|
|
"- There is NO inventory screen.",
|
|
"- Drop items onto ground to create stack nodes. They do not decay.",
|
|
"- Sneak+drop to count out single items from stack.",
|
|
"- Items picked up try to fit into the current selected slot first.",
|
|
"- Crafting is done by building recipes in-world.",
|
|
"- Order and specific face of placement may matter for crafting."
|
|
}
|
|
})
|
|
|
|
nodecore.register_inventory_tab({
|
|
title = "Pummel",
|
|
content = {
|
|
"Player's Guide: Pummeling Recipes",
|
|
"",
|
|
"- Some recipes require \"pummeling\" a node.",
|
|
"- To pummel, punch a node repeatedly, WITHOUT digging.",
|
|
"- You do not have to punch very fast (about 1 per second).",
|
|
"- Recipes are time-based, punching faster does not speed up.",
|
|
"- Wielded item, target face, and surrounding nodes may matter.",
|
|
"- Stacks may be pummeled, exact item count may matter.",
|
|
"- If a recipe exists, you will see a special particle effect."
|
|
}
|
|
})
|
|
|
|
nodecore.register_inventory_tab({
|
|
title = "Tips",
|
|
content = {
|
|
"Player's Guide: Tips and Guidance",
|
|
"",
|
|
"- Stuck in a pit? Pummel surfaces barehanded to find places to climb.",
|
|
"- Can't dig trees or grass? Search for sticks in the canopy.",
|
|
"- Ores may be hidden, but revealed by subtle clues in terrain.",
|
|
"- \"Furnaces\" are not a thing; discover smelting with open flames.",
|
|
"- Trouble lighting a fire? Try using longer sticks, more tinder.",
|
|
"- The game is challenging by design, sometimes frustrating. DON'T GIVE UP!"
|
|
}
|
|
})
|
|
|
|
for _, v in pairs(nodecore.registered_inventory_tabs) do
|
|
nct(v.title)
|
|
for i = 1, #v.content do nct(v.content[i]) end
|
|
end
|
|
|
|
local pad = " "
|
|
for _ = 1, 8 do pad = pad .. pad end
|
|
|
|
local fse = minetest.formspec_escape
|
|
function nodecore.inventory_formspec(player, curtab)
|
|
local t = {
|
|
"bgcolor[#000000C0;true]",
|
|
"listcolors[#00000000;#00000000;#00000000;#000000FF;#FFFFFFFF]"
|
|
}
|
|
|
|
local x = 0
|
|
local y = 0
|
|
local f
|
|
for i, v in ipairs(nodecore.registered_inventory_tabs) do
|
|
t[#t + 1] = "button[" .. x .. "," .. y
|
|
.. ";2.2,0.5;tab" .. i .. ";" .. fse(nct(v.title)) .. "]"
|
|
if curtab == i or (not curtab and i == 1) then
|
|
f = v.content
|
|
end
|
|
x = x + 2
|
|
if x >= 12 then
|
|
x = 0
|
|
y = y + 0.5
|
|
end
|
|
end
|
|
if x > 0 then y = y + 0.5 end
|
|
|
|
table_insert(t, 1, "size[12," .. 5.5 + y .. "]")
|
|
|
|
if f then
|
|
if type(f) == "function" then f = f(player) end
|
|
for i = 1, #f do
|
|
t[#t + 1] = "label[0," .. (y + 0.25) .. ";"
|
|
.. fse(nct(f[i])) .. pad .. ".]"
|
|
y = y + 0.4
|
|
end
|
|
end
|
|
|
|
return table_concat(t)
|
|
end
|
|
|
|
minetest.register_on_joinplayer(function(player)
|
|
player:set_inventory_formspec(nodecore.inventory_formspec(player))
|
|
end)
|
|
|
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|
if formname == "" then
|
|
local tab
|
|
for i = 1, #nodecore.registered_inventory_tabs do
|
|
if fields["tab" .. i] then
|
|
tab = i
|
|
break
|
|
end
|
|
end
|
|
if tab then
|
|
minetest.show_formspec(player:get_player_name(), formname,
|
|
nodecore.inventory_formspec(player, tab))
|
|
end
|
|
end
|
|
end)
|