add default on_sweep handler

This commit is contained in:
CodeXP 2018-10-09 01:25:37 +02:00
parent 3858bde370
commit 9a0ee01174
1 changed files with 29 additions and 21 deletions

View File

@ -33,10 +33,35 @@ minetest.register_craftitem("moreblocks:sweeper", {
-- --
-- register sweepable node handler -- register sweepable node handler
-- --
function moreblocks:register_sweepable(node_name, callback) function moreblocks.register_sweepable(node_name, callback)
sweepables[node_name] = callback sweepables[node_name] = callback
end end
--
-- default on_sweep handler factory
--
function moreblocks.on_sweep_default(clean_node, sweeps_to_clean)
if nil == sweeps_to_clean then
sweeps_to_clean = 3
end
return function (pos, node)
local meta = minetest.get_meta(pos)
local sweeps = meta:get_int('sweeps') + 1
-- hit x times to clean
if sweeps >= sweeps_to_clean then
-- set clean node
meta:set_int('sweeps', 0)
minetest.swap_node(pos, { name = clean_node })
return true
end
meta:set_int('sweeps', sweeps)
return false
end
end
------------------------------------ ------------------------------------
@ -45,24 +70,9 @@ end
-- Sweepable mossycobble example: -- -- Sweepable mossycobble example: --
-- use register_sweepable function -- use register_sweepable function
moreblocks:register_sweepable("default:mossycobble", function (pos, node) moreblocks.register_sweepable("default:mossycobble", moreblocks.on_sweep_default('default:cobble'))
local meta = minetest.get_meta(pos)
local sweeps = meta:get_int('sweeps') + 1
-- hit 3 times to clean -- or use on_sweep when registering node
if sweeps > 2 then
-- set clean node
meta:set_int('sweeps', 0)
minetest.swap_node(pos, { name = "default:cobble" })
return true
end
meta:set_int('sweeps', sweeps)
return false
end)
-- or when registering node
--[[ --[[
minetest.register_node("default:mossycobble", { minetest.register_node("default:mossycobble", {
description = S("Mossy Cobblestone"), description = S("Mossy Cobblestone"),
@ -71,9 +81,7 @@ minetest.register_node("default:mossycobble", {
groups = {cracky = 3, stone = 1}, groups = {cracky = 3, stone = 1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_sweep = function (pos, node) on_sweep = moreblocks.on_sweep_default('default:cobble'),
-- do the magic here
end,
}) })
]] ]]