diff --git a/display_api/display.lua b/display_api/display.lua index fa7c854..b01a94f 100644 --- a/display_api/display.lua +++ b/display_api/display.lua @@ -81,9 +81,16 @@ end -- Detect rotation restriction local rotation_restricted = nil minetest.register_entity('display_api:dummy_entity', { - collisionbox = { 0, 0, 0, 0, 0, 0 }, - visual = "upright_sprite", - textures = {} }) + initial_properties = { + collisionbox = {0, 0, 0, 0, 0, 0}, + visual = "upright_sprite", + is_visible = false, + textures = {"blank.png"} + }, + on_blast = function(self, damage) + return false, false, {} + end, +}) function display_api.is_rotation_restricted() if rotation_restricted == nil then @@ -282,6 +289,15 @@ function display_api.on_destruct(pos) end end +function display_api.on_blast(pos, intensity) + if not minetest.is_protected(pos, "tnt:blast") 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) @@ -304,13 +320,18 @@ end function display_api.register_display_entity(entity_name) if not minetest.registered_entities[entity_name] then minetest.register_entity(':'..entity_name, { - collisionbox = { 0, 0, 0, 0, 0, 0 }, - visual = "upright_sprite", - textures = {}, + initial_properties = { + collisionbox = {0, 0, 0, 0, 0, 0}, + visual = "upright_sprite", + textures = {}, + }, 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 107d2e9..96c476c 100644 --- a/ontime_clocks/nodes.lua +++ b/ontime_clocks/nodes.lua @@ -48,6 +48,7 @@ minetest.register_node("ontime_clocks:green_digital", { on_place = display_api.on_place, on_construct = display_api.on_construct, on_destruct = display_api.on_destruct, + on_blast = display_api.on_blast, on_rotate = display_api.on_rotate, }) @@ -86,6 +87,7 @@ minetest.register_node("ontime_clocks:red_digital", { on_place = display_api.on_place, on_construct = display_api.on_construct, on_destruct = display_api.on_destruct, + on_blast = display_api.on_blast, on_rotate = display_api.on_rotate, }) @@ -124,6 +126,7 @@ minetest.register_node("ontime_clocks:white", { on_place = display_api.on_place, on_construct = display_api.on_construct, on_destruct = display_api.on_destruct, + on_blast = display_api.on_blast, on_rotate = display_api.on_rotate, }) @@ -161,6 +164,7 @@ minetest.register_node("ontime_clocks:frameless_black", { on_place = display_api.on_place, on_construct = display_api.on_construct, on_destruct = display_api.on_destruct, + on_blast = display_api.on_blast, on_rotate = display_api.on_rotate, }) @@ -198,6 +202,7 @@ minetest.register_node("ontime_clocks:frameless_gold", { on_place = display_api.on_place, on_construct = display_api.on_construct, on_destruct = display_api.on_destruct, + on_blast = display_api.on_blast, on_rotate = display_api.on_rotate, }) @@ -235,6 +240,7 @@ minetest.register_node("ontime_clocks:frameless_white", { on_place = display_api.on_place, on_construct = display_api.on_construct, on_destruct = display_api.on_destruct, + on_blast = display_api.on_blast, on_rotate = display_api.on_rotate, }) diff --git a/signs/compatibility.lua b/signs/compatibility.lua index dea8750..aad6fdd 100644 --- a/signs/compatibility.lua +++ b/signs/compatibility.lua @@ -61,9 +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", { - collisionbox = { 0, 0, 0, 0, 0, 0 }, - visual = "upright_sprite", - textures = {}, + on_activate = function(self) + if self.object then + self.object:remove() + end + end }) end diff --git a/signs_api/init.lua b/signs_api/init.lua index 1bd00d6..17478d1 100644 --- a/signs_api/init.lua +++ b/signs_api/init.lua @@ -218,6 +218,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 2245e20..88d7f82 100644 --- a/steles/nodes.lua +++ b/steles/nodes.lua @@ -74,6 +74,7 @@ for i, material in ipairs(steles.materials) do display_api.on_construct(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