SX ab3a6c81ab Power tool compatibility shims
Digtron battery holder compatibility
2022-06-09 22:29:48 +03:00

41 lines
2.0 KiB
Lua

-- This wont give full compatibility but allows using old style technic.register_power_tool tool registration function.
-- Tools still have to read charge value using technic.get_RE_charge, allows easier compatibility with official Technic
-- mod for some tools: a lot less changes required for compatibility but tool will keep some unnecessary meatadata.
--
-- To make tool fully compatible replace minetest.register_tool with technic.register_power_tool and add `max_charge`
-- field for tool definition. Fields `wear_represents` and `on_refill` can also be removed if using defaults.
--
local register_power_tool = technic.register_power_tool
function technic.register_power_tool(itemname, itemdef)
if type(itemdef) == "number" then
minetest.log("warning", "Deprecated technic.register_power_tool use. Setting max_charge for "..itemname)
technic.power_tools[itemname] = itemdef
minetest.register_on_mods_loaded(function()
minetest.log("warning", "Deprecated technic.register_power_tool use. Ensuring fields for "..itemname)
local redef = minetest.registered_items[itemname]
if redef and redef.wear_represents == "technic_RE_charge" and not redef.on_refill then
-- Override power tools that called register_power_tool but do not have on_refill function defined
local max_charge = itemdef
minetest.override_item(itemname, {
on_refill = function(stack)
technic.set_RE_charge(stack, max_charge)
return stack
end,
technic_max_charge = max_charge,
technic_wear_factor = 65535 / max_charge,
})
minetest.log("warning", "Updated on_refill and max_charge for "..itemname)
end
end)
else
return register_power_tool(itemname, itemdef)
end
end
-- Alias set set_RE_wear, many tools calls this to set wear value which is also handled by set_RE_charge
function technic.set_RE_wear(stack, charge)
minetest.log("warning", "Use of deprecated function technic.set_RE_wear with stack: "..stack:get_name())
technic.set_RE_charge(stack, charge)
end