Add node particles when leafdecay removes a node (#2686)
authorsfan5 <sfan5@live.de>
Mon, 25 May 2020 13:56:23 +0000 (15:56 +0200)
committerGitHub <noreply@github.com>
Mon, 25 May 2020 13:56:23 +0000 (15:56 +0200)
mods/default/functions.lua

index f67eadffbed05bd7c14dde4d6c18c50665ff203a..f9ff77cc455de0472a32e9dafa43def5b11cfb27 100644 (file)
@@ -433,6 +433,9 @@ local function leafdecay_after_destruct(pos, oldnode, def)
        end
 end
 
+local movement_gravity = tonumber(
+       minetest.settings:get("movement_gravity")) or 9.81
+
 local function leafdecay_on_timer(pos, def)
        if minetest.find_node_near(pos, def.radius, def.trunks) then
                return false
@@ -459,6 +462,21 @@ local function leafdecay_on_timer(pos, def)
 
        minetest.remove_node(pos)
        minetest.check_for_falling(pos)
+
+       -- spawn a few particles for the removed node
+       minetest.add_particlespawner({
+               amount = 8,
+               time = 0.001,
+               minpos = vector.subtract(pos, {x=0.5, y=0.5, z=0.5}),
+               maxpos = vector.add(pos, {x=0.5, y=0.5, z=0.5}),
+               minvel = vector.new(-0.5, -1, -0.5),
+               maxvel = vector.new(0.5, 0, 0.5),
+               minacc = vector.new(0, -movement_gravity, 0),
+               maxacc = vector.new(0, -movement_gravity, 0),
+               minsize = 0,
+               maxsize = 0,
+               node = node,
+       })
 end
 
 function default.register_leafdecay(def)