mirror of
https://github.com/pyrollo/display_modpack.git
synced 2025-10-16 00:55:36 +02:00
handle interactions w/ explosions (#3)
* don't let explosions destroy sign entities * destroy sign entities if sign node is exploded * remove redundant destructor call * make sure other things don't try to interact w/ the signs entity * name will be "" for non-players or unknown players. * remove default value from initial values --------- Co-authored-by: Niklp <89982526+Niklp09@users.noreply.github.com>
This commit is contained in:
@@ -251,6 +251,15 @@ function display_api.on_destruct(pos)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function display_api.on_blast(pos, intensity)
|
||||||
|
if not minetest.is_protected(pos, "") then
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local drops = minetest.get_node_drops(node, "tnt:blast")
|
||||||
|
minetest.remove_node(pos)
|
||||||
|
return drops
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- On_rotate (screwdriver) callback for display_api items. Prevents invalid
|
-- On_rotate (screwdriver) callback for display_api items. Prevents invalid
|
||||||
-- rotations and reorients entities.
|
-- rotations and reorients entities.
|
||||||
function display_api.on_rotate(pos, node, user, _, new_param2)
|
function display_api.on_rotate(pos, node, user, _, new_param2)
|
||||||
@@ -272,12 +281,17 @@ function display_api.register_display_entity(entity_name)
|
|||||||
initial_properties = {
|
initial_properties = {
|
||||||
collisionbox = {0, 0, 0, 0, 0, 0},
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
||||||
visual = "upright_sprite",
|
visual = "upright_sprite",
|
||||||
textures = {}
|
textures = {},
|
||||||
|
collide_with_objects = false,
|
||||||
|
pointable = false
|
||||||
},
|
},
|
||||||
on_activate = display_api.on_activate,
|
on_activate = display_api.on_activate,
|
||||||
get_staticdata = function(self)
|
get_staticdata = function(self)
|
||||||
return minetest.serialize({ nodepos = self.nodepos })
|
return minetest.serialize({ nodepos = self.nodepos })
|
||||||
end,
|
end,
|
||||||
|
on_blast = function(self, damage)
|
||||||
|
return false, false, {}
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@@ -59,6 +59,7 @@ minetest.register_node("ontime_clocks:green_digital", {
|
|||||||
on_place = display_api.on_place,
|
on_place = display_api.on_place,
|
||||||
on_construct = clock_on_construct,
|
on_construct = clock_on_construct,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = display_api.on_rotate,
|
on_rotate = display_api.on_rotate,
|
||||||
on_timer = clock_on_timer,
|
on_timer = clock_on_timer,
|
||||||
})
|
})
|
||||||
@@ -92,6 +93,7 @@ minetest.register_node("ontime_clocks:red_digital", {
|
|||||||
on_place = display_api.on_place,
|
on_place = display_api.on_place,
|
||||||
on_construct = clock_on_construct,
|
on_construct = clock_on_construct,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = display_api.on_rotate,
|
on_rotate = display_api.on_rotate,
|
||||||
on_timer = clock_on_timer,
|
on_timer = clock_on_timer,
|
||||||
})
|
})
|
||||||
@@ -124,6 +126,7 @@ minetest.register_node("ontime_clocks:white", {
|
|||||||
on_place = display_api.on_place,
|
on_place = display_api.on_place,
|
||||||
on_construct = clock_on_construct,
|
on_construct = clock_on_construct,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = display_api.on_rotate,
|
on_rotate = display_api.on_rotate,
|
||||||
on_timer = clock_on_timer,
|
on_timer = clock_on_timer,
|
||||||
})
|
})
|
||||||
@@ -156,6 +159,7 @@ minetest.register_node("ontime_clocks:frameless_black", {
|
|||||||
on_place = display_api.on_place,
|
on_place = display_api.on_place,
|
||||||
on_construct = clock_on_construct,
|
on_construct = clock_on_construct,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = display_api.on_rotate,
|
on_rotate = display_api.on_rotate,
|
||||||
on_timer = clock_on_timer,
|
on_timer = clock_on_timer,
|
||||||
})
|
})
|
||||||
@@ -188,6 +192,7 @@ minetest.register_node("ontime_clocks:frameless_gold", {
|
|||||||
on_place = display_api.on_place,
|
on_place = display_api.on_place,
|
||||||
on_construct = clock_on_construct,
|
on_construct = clock_on_construct,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = display_api.on_rotate,
|
on_rotate = display_api.on_rotate,
|
||||||
on_timer = clock_on_timer,
|
on_timer = clock_on_timer,
|
||||||
})
|
})
|
||||||
@@ -220,6 +225,7 @@ minetest.register_node("ontime_clocks:frameless_white", {
|
|||||||
on_place = display_api.on_place,
|
on_place = display_api.on_place,
|
||||||
on_construct = clock_on_construct,
|
on_construct = clock_on_construct,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = display_api.on_rotate,
|
on_rotate = display_api.on_rotate,
|
||||||
on_timer = clock_on_timer,
|
on_timer = clock_on_timer,
|
||||||
})
|
})
|
||||||
|
@@ -61,6 +61,11 @@ minetest.register_lbm({ name = "signs:conpatibility_1",
|
|||||||
-- We need to have this entity registered to be able to remove it.
|
-- We need to have this entity registered to be able to remove it.
|
||||||
if minetest.registered_entities["signs:text"] == nil then
|
if minetest.registered_entities["signs:text"] == nil then
|
||||||
minetest.register_entity("signs:text", {
|
minetest.register_entity("signs:text", {
|
||||||
|
on_activate = function(self)
|
||||||
|
if self.object then
|
||||||
|
self.object:remove()
|
||||||
|
end
|
||||||
|
end,
|
||||||
initial_properties = {
|
initial_properties = {
|
||||||
collisionbox = {0, 0, 0, 0, 0, 0},
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
||||||
visual = "upright_sprite",
|
visual = "upright_sprite",
|
||||||
|
@@ -192,6 +192,7 @@ function signs_api.register_sign(mod, name, model)
|
|||||||
display_api.on_construct(pos)
|
display_api.on_construct(pos)
|
||||||
end,
|
end,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = signs_api.on_rotate,
|
on_rotate = signs_api.on_rotate,
|
||||||
on_receive_fields = signs_api.on_receive_fields,
|
on_receive_fields = signs_api.on_receive_fields,
|
||||||
on_punch = function(pos, node, player, pointed_thing)
|
on_punch = function(pos, node, player, pointed_thing)
|
||||||
|
@@ -83,6 +83,7 @@ for i, material in ipairs(steles.materials) do
|
|||||||
set_formspec(pos)
|
set_formspec(pos)
|
||||||
end,
|
end,
|
||||||
on_destruct = display_api.on_destruct,
|
on_destruct = display_api.on_destruct,
|
||||||
|
on_blast = display_api.on_blast,
|
||||||
on_rotate = display_api.on_rotate,
|
on_rotate = display_api.on_rotate,
|
||||||
on_receive_fields = function(pos, formname, fields, player)
|
on_receive_fields = function(pos, formname, fields, player)
|
||||||
if not minetest.is_protected(pos, player:get_player_name()) then
|
if not minetest.is_protected(pos, player:get_player_name()) then
|
||||||
|
Reference in New Issue
Block a user