Refactor snippets
parent
125cb1ed89
commit
d6b8820ba2
7
API.md
7
API.md
|
@ -17,8 +17,11 @@ Once this mod had overwritten the `description` field of an item was overwritten
|
|||
|
||||
Register a custom snippet function.
|
||||
`func` is a function of the form `func(itemstring)`.
|
||||
It will be called for (nearly) every itemstring and it must return a string you want to append to this item or `nil` if nothing shall be appended.
|
||||
You can optionally return the text color in `"#RRGGBB"` format as the second return value.
|
||||
It will be called for (nearly) every itemstring.
|
||||
|
||||
Returns: Two values, the first one is required.
|
||||
1st return value: A string you want to append to this item or `nil` if nothing shall be appended.
|
||||
2nd return value: If nil, `tt` will take of the text color. If a ColorString in `"#RRGGBB"` format, entire text is colorized in this color. Return `false` to force `tt` to not apply text any colorization (useful if you want to call `minetest.colorize` yourself.
|
||||
|
||||
Example:
|
||||
|
||||
|
|
79
init.lua
79
init.lua
|
@ -73,15 +73,23 @@ local function get_min_digtime(caps)
|
|||
return mintime, unique
|
||||
end
|
||||
|
||||
local function append_descs()
|
||||
for itemstring, def in pairs(minetest.registered_items) do
|
||||
if itemstring ~= "" and itemstring ~= "air" and itemstring ~= "ignore" and itemstring ~= "unknown" and def ~= nil and def.description ~= nil and def.description ~= "" and def._tt_ignore ~= true then
|
||||
local desc = def.description
|
||||
local orig_desc = desc
|
||||
tt.register_snippet = function(func)
|
||||
table.insert(tt.registered_snippets, func)
|
||||
end
|
||||
|
||||
--- CORE SNIPPETS ---
|
||||
|
||||
tt.register_snippet(function(itemstring)
|
||||
local def = minetest.registered_items[itemstring]
|
||||
-- Custom text
|
||||
if def._tt_help then
|
||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, def._tt_help)
|
||||
return def._tt_help, false
|
||||
end
|
||||
end)
|
||||
|
||||
tt.register_snippet(function(itemstring)
|
||||
local def = minetest.registered_items[itemstring]
|
||||
local desc = ""
|
||||
-- Tool info
|
||||
if def.tool_capabilities then
|
||||
-- Digging times
|
||||
|
@ -89,7 +97,7 @@ local function append_descs()
|
|||
local d
|
||||
if def.tool_capabilities.groupcaps then
|
||||
for group, caps in pairs(def.tool_capabilities.groupcaps) do
|
||||
local mintim, unique_mintime
|
||||
local mintime, unique_mintime
|
||||
if caps.times then
|
||||
mintime, unique_mintime = get_min_digtime(caps)
|
||||
if mintime and (mintime > 0 and (not unique_mintime)) then
|
||||
|
@ -132,9 +140,18 @@ local function append_descs()
|
|||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Full punch interval: @1s", full_punch_interval))
|
||||
end
|
||||
end
|
||||
if desc == "" then
|
||||
desc = nil
|
||||
end
|
||||
return desc, false
|
||||
end)
|
||||
|
||||
tt.register_snippet(function(itemstring)
|
||||
local def = minetest.registered_items[itemstring]
|
||||
local desc
|
||||
-- Food
|
||||
if def._tt_food then
|
||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Food item"))
|
||||
desc = S("Food item")
|
||||
if def._tt_food_hp then
|
||||
local msg = S("+@1 food points", def._tt_food_hp)
|
||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, msg)
|
||||
|
@ -149,9 +166,13 @@ local function append_descs()
|
|||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, msg)
|
||||
end]]
|
||||
end
|
||||
return desc, false
|
||||
end)
|
||||
|
||||
tt.register_snippet(function(itemstring)
|
||||
local def = minetest.registered_items[itemstring]
|
||||
local desc = ""
|
||||
-- Node info
|
||||
-- Damage-related
|
||||
do
|
||||
if def.damage_per_second then
|
||||
if def.damage_per_second > 0 then
|
||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DANGER, S("Contact damage: @1 per second", def.damage_per_second))
|
||||
|
@ -170,7 +191,6 @@ local function append_descs()
|
|||
elseif tmp < 0 then
|
||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Fall damage: @1%", tmp))
|
||||
end
|
||||
end
|
||||
-- Movement-related node facts
|
||||
if minetest.get_item_group(itemstring, "disable_jump") == 1 and not def.climbable then
|
||||
if def.liquidtype == "none" then
|
||||
|
@ -198,24 +218,47 @@ local function append_descs()
|
|||
if tmp and tmp >= 1 then
|
||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Luminance: @1", tmp))
|
||||
end
|
||||
-- Custom functions
|
||||
if desc == "" then
|
||||
desc = nil
|
||||
end
|
||||
return desc, false
|
||||
end)
|
||||
|
||||
|
||||
-- Apply item description update
|
||||
|
||||
local function append_descs()
|
||||
for itemstring, def in pairs(minetest.registered_items) do
|
||||
if itemstring ~= "" and itemstring ~= "air" and itemstring ~= "ignore" and itemstring ~= "unknown" and def ~= nil and def.description ~= nil and def.description ~= "" and def._tt_ignore ~= true then
|
||||
local desc = def.description
|
||||
local orig_desc = desc
|
||||
local first = true
|
||||
-- Apply snippets
|
||||
for s=1, #tt.registered_snippets do
|
||||
local str, snippet_color = tt.registered_snippets[s](itemstring)
|
||||
if not snippet_color then
|
||||
if snippet_color == nil then
|
||||
snippet_color = COLOR_DEFAULT
|
||||
elseif snippet_color == false then
|
||||
snipped_color = false
|
||||
end
|
||||
if str then
|
||||
desc = desc .. "\n" .. minetest.colorize(snippet_color, str)
|
||||
if first then
|
||||
first = false
|
||||
else
|
||||
desc = desc .. "\n"
|
||||
end
|
||||
if snippet_color == false then
|
||||
desc = desc .. minetest.colorize(snippet_color, str)
|
||||
else
|
||||
desc = desc .. str
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
if desc ~= def.description then
|
||||
minetest.override_item(itemstring, { description = desc, _tt_original_description = orig_desc })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
tt.register_snippet = function(func)
|
||||
table.insert(tt.registered_snippets, func)
|
||||
end
|
||||
|
||||
minetest.register_on_mods_loaded(append_descs)
|
||||
|
|
Loading…
Reference in New Issue