Remove orphan flags

This commit is contained in:
Wuzzy 2022-07-26 23:29:30 +02:00
parent e1ef02f97e
commit 17a1520487

View file

@ -111,6 +111,18 @@ else
S = function(s) return s end S = function(s) return s end
end end
-- Delete entity if there is no flag mast node
local delete_if_orphan = function( self )
local pos = self.object:get_pos( )
local node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
if node.name ~= "pride_flags:upper_mast" and node.name ~= "ignore" then
minetest.log("action", "[pride_flags] Orphan flag entity removed at "..minetest.pos_to_string(pos, 1))
self.object:remove( )
return true
end
return false
end
minetest.register_entity( "pride_flags:wavingflag", { minetest.register_entity( "pride_flags:wavingflag", {
initial_properties = { initial_properties = {
physical = false, physical = false,
@ -125,6 +137,10 @@ minetest.register_entity( "pride_flags:wavingflag", {
}, },
on_activate = function ( self, staticdata, dtime ) on_activate = function ( self, staticdata, dtime )
if delete_if_orphan( self) then
return
end
-- Init stuff
self:reset_animation( true ) self:reset_animation( true )
self.object:set_armor_groups( { immortal = 1 } ) self.object:set_armor_groups( { immortal = 1 } )
@ -178,6 +194,9 @@ minetest.register_entity( "pride_flags:wavingflag", {
self.anim_timer = self.anim_timer - dtime self.anim_timer = self.anim_timer - dtime
if self.anim_timer <= 0 then if self.anim_timer <= 0 then
if delete_if_orphan( self) then
return
end
self:reset_animation( ) self:reset_animation( )
end end
end, end,