Move core snippets to snippets.lua
This commit is contained in:
parent
4dbc5b6cd5
commit
4277be77e5
182
init.lua
182
init.lua
@ -1,180 +1,24 @@
|
|||||||
local S = minetest.get_translator("tt")
|
local S = minetest.get_translator("tt")
|
||||||
local COLOR_DEFAULT = "#d0ffd0"
|
|
||||||
local COLOR_DANGER = "#ffff00"
|
|
||||||
local COLOR_GOOD = "#00ff00"
|
|
||||||
|
|
||||||
tt = {}
|
tt = {}
|
||||||
tt.registered_snippets = {}
|
tt.COLOR_DEFAULT = "#d0ffd0"
|
||||||
|
tt.COLOR_DANGER = "#ffff00"
|
||||||
|
tt.COLOR_GOOD = "#00ff00"
|
||||||
|
|
||||||
local function get_min_digtime(caps)
|
-- API
|
||||||
local mintime
|
tt.registered_snippets = {}
|
||||||
local unique = true
|
|
||||||
if caps.maxlevel and caps.maxlevel > 1 then
|
|
||||||
unique = false
|
|
||||||
end
|
|
||||||
if caps.times then
|
|
||||||
for r=1,3 do
|
|
||||||
local time = caps.times[r]
|
|
||||||
if caps.maxlevel and caps.maxlevel > 1 then
|
|
||||||
time = time / caps.maxlevel
|
|
||||||
end
|
|
||||||
if (not mintime) or (time and time < mintime) then
|
|
||||||
if time and mintime and (time < mintime) then
|
|
||||||
unique = false
|
|
||||||
end
|
|
||||||
mintime = time
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return mintime, unique
|
|
||||||
end
|
|
||||||
|
|
||||||
tt.register_snippet = function(func)
|
tt.register_snippet = function(func)
|
||||||
table.insert(tt.registered_snippets, func)
|
table.insert(tt.registered_snippets, func)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- CORE SNIPPETS ---
|
-- Register core snippets
|
||||||
|
|
||||||
tt.register_snippet(function(itemstring)
|
dofile(minetest.get_modpath(minetest.get_current_modname()).."/snippets.lua")
|
||||||
local def = minetest.registered_items[itemstring]
|
|
||||||
-- Custom text
|
|
||||||
if def._tt_help then
|
|
||||||
return def._tt_help, false
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
tt.register_snippet(function(itemstring)
|
-- Apply item description updates
|
||||||
local def = minetest.registered_items[itemstring]
|
|
||||||
local desc = ""
|
|
||||||
-- Tool info
|
|
||||||
if def.tool_capabilities then
|
|
||||||
-- Digging times
|
|
||||||
local digs = ""
|
|
||||||
local d
|
|
||||||
if def.tool_capabilities.groupcaps then
|
|
||||||
for group, caps in pairs(def.tool_capabilities.groupcaps) do
|
|
||||||
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
|
|
||||||
d = S("Digs @1 blocks", group) .. "\n"
|
|
||||||
d = d .. S("Minimum dig time: @1s", string.format("%.2f", mintime))
|
|
||||||
digs = digs .. "\n" .. d
|
|
||||||
elseif mintime and mintime == 0 then
|
|
||||||
d = S("Digs @1 blocks instantly", group)
|
|
||||||
digs = digs .. "\n" .. d
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if digs ~= "" then
|
|
||||||
desc = desc .. minetest.colorize(COLOR_DEFAULT, digs)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- Weapon stats
|
|
||||||
if def.tool_capabilities.damage_groups then
|
|
||||||
for group, damage in pairs(def.tool_capabilities.damage_groups) do
|
|
||||||
local msg
|
|
||||||
if group == "fleshy" then
|
|
||||||
if damage >= 0 then
|
|
||||||
msg = S("Damage: @1", damage)
|
|
||||||
else
|
|
||||||
msg = S("Healing: @1", math.abs(damage))
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if damage >= 0 then
|
|
||||||
msg = S("Damage (@1): @2", group, damage)
|
|
||||||
else
|
|
||||||
msg = S("Healing (@1): @2", group, math.abs(damage))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, msg)
|
|
||||||
end
|
|
||||||
local full_punch_interval = def.tool_capabilities.full_punch_interval
|
|
||||||
if not full_punch_interval then
|
|
||||||
full_punch_interval = 1
|
|
||||||
end
|
|
||||||
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 function append_snippets()
|
||||||
local def = minetest.registered_items[itemstring]
|
|
||||||
local desc
|
|
||||||
-- Food
|
|
||||||
if def._tt_food then
|
|
||||||
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)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return desc, false
|
|
||||||
end)
|
|
||||||
|
|
||||||
tt.register_snippet(function(itemstring)
|
|
||||||
local def = minetest.registered_items[itemstring]
|
|
||||||
local desc = ""
|
|
||||||
-- Node info
|
|
||||||
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))
|
|
||||||
elseif def.damage_per_second < 0 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_GOOD, S("Contact healing: @1 per second", math.abs(def.damage_per_second)))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if def.drowning and def.drowning ~= 0 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DANGER, S("Drowning damage: @1", def.drowning))
|
|
||||||
end
|
|
||||||
local tmp = minetest.get_item_group(itemstring, "fall_damage_add_percent")
|
|
||||||
if tmp > 0 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DANGER, S("Fall damage: +@1%", tmp))
|
|
||||||
elseif tmp == -100 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_GOOD, S("No fall damage"))
|
|
||||||
elseif tmp < 0 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Fall damage: @1%", tmp))
|
|
||||||
end
|
|
||||||
-- Movement-related node facts
|
|
||||||
if minetest.get_item_group(itemstring, "disable_jump") == 1 and not def.climbable then
|
|
||||||
if def.liquidtype == "none" then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("No jumping"))
|
|
||||||
else
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("No swimming upwards"))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if def.climbable then
|
|
||||||
if minetest.get_item_group(itemstring, "disable_jump") == 1 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Climbable (only downwards)"))
|
|
||||||
else
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Climbable"))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if minetest.get_item_group(itemstring, "slippery") >= 1 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Slippery"))
|
|
||||||
end
|
|
||||||
local tmp = minetest.get_item_group(itemstring, "bouncy")
|
|
||||||
if tmp >= 1 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Bouncy (@1%)", tmp))
|
|
||||||
end
|
|
||||||
-- Node appearance
|
|
||||||
tmp = def.light_source
|
|
||||||
if tmp and tmp >= 1 then
|
|
||||||
desc = desc .. "\n" .. minetest.colorize(COLOR_DEFAULT, S("Luminance: @1", tmp))
|
|
||||||
end
|
|
||||||
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
|
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
|
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 desc = def.description
|
||||||
@ -184,9 +28,9 @@ local function append_descs()
|
|||||||
for s=1, #tt.registered_snippets do
|
for s=1, #tt.registered_snippets do
|
||||||
local str, snippet_color = tt.registered_snippets[s](itemstring)
|
local str, snippet_color = tt.registered_snippets[s](itemstring)
|
||||||
if snippet_color == nil then
|
if snippet_color == nil then
|
||||||
snippet_color = COLOR_DEFAULT
|
snippet_color = tt.COLOR_DEFAULT
|
||||||
elseif snippet_color == false then
|
elseif snippet_color == false then
|
||||||
snipped_color = false
|
snippet_color = false
|
||||||
end
|
end
|
||||||
if str then
|
if str then
|
||||||
if first then
|
if first then
|
||||||
@ -194,7 +38,7 @@ local function append_descs()
|
|||||||
else
|
else
|
||||||
desc = desc .. "\n"
|
desc = desc .. "\n"
|
||||||
end
|
end
|
||||||
if snippet_color == false then
|
if snippet_color then
|
||||||
desc = desc .. minetest.colorize(snippet_color, str)
|
desc = desc .. minetest.colorize(snippet_color, str)
|
||||||
else
|
else
|
||||||
desc = desc .. str
|
desc = desc .. str
|
||||||
@ -208,4 +52,4 @@ local function append_descs()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_mods_loaded(append_descs)
|
minetest.register_on_mods_loaded(append_snippets)
|
||||||
|
169
snippets.lua
Normal file
169
snippets.lua
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
local S = minetest.get_translator("tt")
|
||||||
|
|
||||||
|
local function get_min_digtime(caps)
|
||||||
|
local mintime
|
||||||
|
local unique = true
|
||||||
|
if caps.maxlevel and caps.maxlevel > 1 then
|
||||||
|
unique = false
|
||||||
|
end
|
||||||
|
if caps.times then
|
||||||
|
for r=1,3 do
|
||||||
|
local time = caps.times[r]
|
||||||
|
if caps.maxlevel and caps.maxlevel > 1 then
|
||||||
|
time = time / caps.maxlevel
|
||||||
|
end
|
||||||
|
if (not mintime) or (time and time < mintime) then
|
||||||
|
if time and mintime and (time < mintime) then
|
||||||
|
unique = false
|
||||||
|
end
|
||||||
|
mintime = time
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return mintime, unique
|
||||||
|
end
|
||||||
|
|
||||||
|
-- CORE SNIPPETS --
|
||||||
|
|
||||||
|
-- Custom text (_tt_help)
|
||||||
|
tt.register_snippet(function(itemstring)
|
||||||
|
local def = minetest.registered_items[itemstring]
|
||||||
|
if def._tt_help then
|
||||||
|
return def._tt_help, false
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Tool information (digging times, weapon stats)
|
||||||
|
tt.register_snippet(function(itemstring)
|
||||||
|
local def = minetest.registered_items[itemstring]
|
||||||
|
local desc = ""
|
||||||
|
if def.tool_capabilities then
|
||||||
|
-- Digging times
|
||||||
|
local digs = ""
|
||||||
|
local d
|
||||||
|
if def.tool_capabilities.groupcaps then
|
||||||
|
for group, caps in pairs(def.tool_capabilities.groupcaps) do
|
||||||
|
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
|
||||||
|
d = S("Digs @1 blocks", group) .. "\n"
|
||||||
|
d = d .. S("Minimum dig time: @1s", string.format("%.2f", mintime))
|
||||||
|
digs = digs .. "\n" .. d
|
||||||
|
elseif mintime and mintime == 0 then
|
||||||
|
d = S("Digs @1 blocks instantly", group)
|
||||||
|
digs = digs .. "\n" .. d
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if digs ~= "" then
|
||||||
|
desc = desc .. digs
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- Weapon stats
|
||||||
|
if def.tool_capabilities.damage_groups then
|
||||||
|
for group, damage in pairs(def.tool_capabilities.damage_groups) do
|
||||||
|
local msg
|
||||||
|
if group == "fleshy" then
|
||||||
|
if damage >= 0 then
|
||||||
|
msg = S("Damage: @1", damage)
|
||||||
|
else
|
||||||
|
msg = S("Healing: @1", math.abs(damage))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if damage >= 0 then
|
||||||
|
msg = S("Damage (@1): @2", group, damage)
|
||||||
|
else
|
||||||
|
msg = S("Healing (@1): @2", group, math.abs(damage))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
desc = desc .. "\n" .. msg
|
||||||
|
end
|
||||||
|
local full_punch_interval = def.tool_capabilities.full_punch_interval
|
||||||
|
if not full_punch_interval then
|
||||||
|
full_punch_interval = 1
|
||||||
|
end
|
||||||
|
desc = desc .. "\n" .. S("Full punch interval: @1s", full_punch_interval)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if desc == "" then
|
||||||
|
desc = nil
|
||||||
|
end
|
||||||
|
return desc
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Food
|
||||||
|
tt.register_snippet(function(itemstring)
|
||||||
|
local def = minetest.registered_items[itemstring]
|
||||||
|
local desc
|
||||||
|
if def._tt_food then
|
||||||
|
desc = S("Food item")
|
||||||
|
if def._tt_food_hp then
|
||||||
|
local msg = S("+@1 food points", def._tt_food_hp)
|
||||||
|
desc = desc .. "\n" .. msg
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return desc
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Node info
|
||||||
|
tt.register_snippet(function(itemstring)
|
||||||
|
local def = minetest.registered_items[itemstring]
|
||||||
|
local desc = ""
|
||||||
|
|
||||||
|
-- Health-related node facts
|
||||||
|
if def.damage_per_second then
|
||||||
|
if def.damage_per_second > 0 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DANGER, S("Contact damage: @1 per second", def.damage_per_second))
|
||||||
|
elseif def.damage_per_second < 0 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_GOOD, S("Contact healing: @1 per second", math.abs(def.damage_per_second)))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if def.drowning and def.drowning ~= 0 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DANGER, S("Drowning damage: @1", def.drowning))
|
||||||
|
end
|
||||||
|
local tmp = minetest.get_item_group(itemstring, "fall_damage_add_percent")
|
||||||
|
if tmp > 0 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DANGER, S("Fall damage: +@1%", tmp))
|
||||||
|
elseif tmp == -100 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_GOOD, S("No fall damage"))
|
||||||
|
elseif tmp < 0 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("Fall damage: @1%", tmp))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Movement-related node facts
|
||||||
|
if minetest.get_item_group(itemstring, "disable_jump") == 1 and not def.climbable then
|
||||||
|
if def.liquidtype == "none" then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("No jumping"))
|
||||||
|
else
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("No swimming upwards"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if def.climbable then
|
||||||
|
if minetest.get_item_group(itemstring, "disable_jump") == 1 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("Climbable (only downwards)"))
|
||||||
|
else
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("Climbable"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if minetest.get_item_group(itemstring, "slippery") >= 1 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("Slippery"))
|
||||||
|
end
|
||||||
|
local tmp = minetest.get_item_group(itemstring, "bouncy")
|
||||||
|
if tmp >= 1 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("Bouncy (@1%)", tmp))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Node appearance
|
||||||
|
tmp = def.light_source
|
||||||
|
if tmp and tmp >= 1 then
|
||||||
|
desc = desc .. "\n" .. minetest.colorize(tt.COLOR_DEFAULT, S("Luminance: @1", tmp))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if desc == "" then
|
||||||
|
desc = nil
|
||||||
|
end
|
||||||
|
return desc, false
|
||||||
|
end)
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user