mirror of
https://github.com/mt-mods/signs_lib.git
synced 2025-01-12 16:50:22 +01:00
handle interactions w/ explosions (#14)
* prevent signs entities from being destroyed * handle tnt destroying a sign * remove redundant destructor call
This commit is contained in:
parent
3d0e8d47e6
commit
aff005e745
24
api.lua
24
api.lua
@ -172,6 +172,9 @@ minetest.register_entity("signs_lib:text", {
|
|||||||
self.object:remove()
|
self.object:remove()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
on_blast = function(self, damage)
|
||||||
|
return false, false, {}
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
function signs_lib.delete_objects(pos)
|
function signs_lib.delete_objects(pos)
|
||||||
@ -742,6 +745,15 @@ function signs_lib.destruct_sign(pos)
|
|||||||
signs_lib.delete_objects(pos)
|
signs_lib.delete_objects(pos)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function signs_lib.blast_sign(pos, intensity)
|
||||||
|
if signs_lib.can_modify(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
|
||||||
|
|
||||||
local function make_infotext(text)
|
local function make_infotext(text)
|
||||||
text = trim_input(text)
|
text = trim_input(text)
|
||||||
local lines = signs_lib.split_lines_and_words(text) or {}
|
local lines = signs_lib.split_lines_and_words(text) or {}
|
||||||
@ -803,7 +815,16 @@ end
|
|||||||
function signs_lib.can_modify(pos, player)
|
function signs_lib.can_modify(pos, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
local playername = player:get_player_name()
|
local playername
|
||||||
|
if type(player) == "userdata" then
|
||||||
|
playername = player:get_player_name()
|
||||||
|
|
||||||
|
elseif type(player) == "string" then
|
||||||
|
playername = player
|
||||||
|
|
||||||
|
else
|
||||||
|
playername = ""
|
||||||
|
end
|
||||||
|
|
||||||
if minetest.is_protected(pos, playername) then
|
if minetest.is_protected(pos, playername) then
|
||||||
minetest.record_protection_violation(pos, playername)
|
minetest.record_protection_violation(pos, playername)
|
||||||
@ -984,6 +1005,7 @@ function signs_lib.register_sign(name, raw_def)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def.after_place_node = raw_def.after_place_node or signs_lib.after_place_node
|
def.after_place_node = raw_def.after_place_node or signs_lib.after_place_node
|
||||||
|
def.on_blast = raw_def.on_blast or signs_lib.blast_sign
|
||||||
|
|
||||||
if raw_def.entity_info then
|
if raw_def.entity_info then
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user