mirror of
https://github.com/minetest-mods/technic.git
synced 2024-12-22 22:02:32 +01:00
46 lines
1.3 KiB
Lua
46 lines
1.3 KiB
Lua
minetest.swap_node = minetest.swap_node or function(pos, node)
|
|
local oldmeta = minetest.get_meta(pos):to_table()
|
|
minetest.set_node(pos, node)
|
|
minetest.get_meta(pos):from_table(oldmeta)
|
|
end
|
|
|
|
-- Only changes name, keeps other params
|
|
function technic.swap_node(pos, name)
|
|
local node = minetest.get_node(pos)
|
|
if node.name ~= name then
|
|
node.name = name
|
|
minetest.swap_node(pos, node)
|
|
end
|
|
return node.name
|
|
end
|
|
|
|
-- Fully charge RE chargeable item.
|
|
-- Must be defined early to reference in item definitions.
|
|
function technic.refill_RE_charge(stack)
|
|
local max_charge = technic.power_tools[stack:get_name()]
|
|
if not max_charge then return stack end
|
|
technic.set_RE_wear(stack, max_charge, max_charge)
|
|
local meta = minetest.deserialize(stack:get_metadata()) or {}
|
|
meta.charge = max_charge
|
|
stack:set_metadata(minetest.serialize(meta))
|
|
return stack
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
local function resolve_name(function_name)
|
|
local a = _G
|
|
for key in string.gmatch(function_name, "([^%.]+)(%.?)") do
|
|
if a[key] then
|
|
a = a[key]
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
return a
|
|
end
|
|
|
|
function technic.function_exists(function_name)
|
|
return type(resolve_name(function_name)) == 'function'
|
|
end
|
|
--------------------------------------------------------------------------------
|