aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfluxionary <25628292+fluxionary@users.noreply.github.com>2023-10-03 00:16:09 -0700
committerGitHub <noreply@github.com>2023-10-03 09:16:09 +0200
commit2c1efede4d9d9f3a0e6e644e9e781a1ba2938156 (patch)
tree6faab11b7c15246aa184b51e7ac3aad2b11faf47
parente25588cf914e787ea84b7f62bacb9228fc05018a (diff)
downloaddisplay_modpack_no_craft-2c1efede4d9d9f3a0e6e644e9e781a1ba2938156.tar.gz
display_modpack_no_craft-2c1efede4d9d9f3a0e6e644e9e781a1ba2938156.zip
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>
-rw-r--r--display_api/display.lua16
-rw-r--r--ontime_clocks/nodes.lua6
-rw-r--r--signs/compatibility.lua5
-rw-r--r--signs_api/init.lua1
-rw-r--r--steles/nodes.lua1
5 files changed, 28 insertions, 1 deletions
diff --git a/display_api/display.lua b/display_api/display.lua
index 113a738..c329dd7 100644
--- a/display_api/display.lua
+++ b/display_api/display.lua
@@ -251,6 +251,15 @@ function display_api.on_destruct(pos)
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
-- rotations and reorients entities.
function display_api.on_rotate(pos, node, user, _, new_param2)
@@ -272,12 +281,17 @@ function display_api.register_display_entity(entity_name)
initial_properties = {
collisionbox = {0, 0, 0, 0, 0, 0},
visual = "upright_sprite",
- textures = {}
+ textures = {},
+ collide_with_objects = false,
+ pointable = false
},
on_activate = display_api.on_activate,
get_staticdata = function(self)
return minetest.serialize({ nodepos = self.nodepos })
end,
+ on_blast = function(self, damage)
+ return false, false, {}
+ end,
})
end
end
diff --git a/ontime_clocks/nodes.lua b/ontime_clocks/nodes.lua
index dcdcbdd..0341eaa 100644
--- a/ontime_clocks/nodes.lua
+++ b/ontime_clocks/nodes.lua
@@ -59,6 +59,7 @@ minetest.register_node("ontime_clocks:green_digital", {
on_place = display_api.on_place,
on_construct = clock_on_construct,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = display_api.on_rotate,
on_timer = clock_on_timer,
})
@@ -92,6 +93,7 @@ minetest.register_node("ontime_clocks:red_digital", {
on_place = display_api.on_place,
on_construct = clock_on_construct,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = display_api.on_rotate,
on_timer = clock_on_timer,
})
@@ -124,6 +126,7 @@ minetest.register_node("ontime_clocks:white", {
on_place = display_api.on_place,
on_construct = clock_on_construct,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = display_api.on_rotate,
on_timer = clock_on_timer,
})
@@ -156,6 +159,7 @@ minetest.register_node("ontime_clocks:frameless_black", {
on_place = display_api.on_place,
on_construct = clock_on_construct,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = display_api.on_rotate,
on_timer = clock_on_timer,
})
@@ -188,6 +192,7 @@ minetest.register_node("ontime_clocks:frameless_gold", {
on_place = display_api.on_place,
on_construct = clock_on_construct,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = display_api.on_rotate,
on_timer = clock_on_timer,
})
@@ -220,6 +225,7 @@ minetest.register_node("ontime_clocks:frameless_white", {
on_place = display_api.on_place,
on_construct = clock_on_construct,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = display_api.on_rotate,
on_timer = clock_on_timer,
})
diff --git a/signs/compatibility.lua b/signs/compatibility.lua
index cd69149..8ded649 100644
--- a/signs/compatibility.lua
+++ b/signs/compatibility.lua
@@ -61,6 +61,11 @@ minetest.register_lbm({ name = "signs:conpatibility_1",
-- We need to have this entity registered to be able to remove it.
if minetest.registered_entities["signs:text"] == nil then
minetest.register_entity("signs:text", {
+ on_activate = function(self)
+ if self.object then
+ self.object:remove()
+ end
+ end,
initial_properties = {
collisionbox = {0, 0, 0, 0, 0, 0},
visual = "upright_sprite",
diff --git a/signs_api/init.lua b/signs_api/init.lua
index 77767e2..fd2db03 100644
--- a/signs_api/init.lua
+++ b/signs_api/init.lua
@@ -192,6 +192,7 @@ function signs_api.register_sign(mod, name, model)
display_api.on_construct(pos)
end,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = signs_api.on_rotate,
on_receive_fields = signs_api.on_receive_fields,
on_punch = function(pos, node, player, pointed_thing)
diff --git a/steles/nodes.lua b/steles/nodes.lua
index 04f83f2..d805adf 100644
--- a/steles/nodes.lua
+++ b/steles/nodes.lua
@@ -83,6 +83,7 @@ for i, material in ipairs(steles.materials) do
set_formspec(pos)
end,
on_destruct = display_api.on_destruct,
+ on_blast = display_api.on_blast,
on_rotate = display_api.on_rotate,
on_receive_fields = function(pos, formname, fields, player)
if not minetest.is_protected(pos, player:get_player_name()) then