mirror of
https://github.com/luanti-org/minetest_game.git
synced 2025-05-21 14:53:16 -04:00
Fix TNT mod crash when entities disappear during explosion
This commit is contained in:
parent
91ac075cff
commit
b3ecbe2f1f
1 changed files with 27 additions and 24 deletions
|
@ -163,9 +163,8 @@ local function entity_physics(pos, radius, drops)
|
|||
|
||||
local damage = (4 / dist) * radius
|
||||
if obj:is_player() then
|
||||
-- currently the engine has no method to set
|
||||
-- player velocity. See #2960
|
||||
-- instead, we knock the player back 1.0 node, and slightly upwards
|
||||
-- we knock the player back 1.0 node, and slightly upwards
|
||||
-- TODO: switch to add_player_velocity() introduced in 5.1
|
||||
local dir = vector.normalize(vector.subtract(obj_pos, pos))
|
||||
local moveoff = vector.multiply(dir, dist + 1.0)
|
||||
local newpos = vector.add(pos, moveoff)
|
||||
|
@ -174,10 +173,13 @@ local function entity_physics(pos, radius, drops)
|
|||
|
||||
obj:set_hp(obj:get_hp() - damage)
|
||||
else
|
||||
local luaobj = obj:get_luaentity()
|
||||
|
||||
-- object might have disappeared somehow
|
||||
if luaobj then
|
||||
local do_damage = true
|
||||
local do_knockback = true
|
||||
local entity_drops = {}
|
||||
local luaobj = obj:get_luaentity()
|
||||
local objdef = minetest.registered_entities[luaobj.name]
|
||||
|
||||
if objdef and objdef.on_blast then
|
||||
|
@ -202,6 +204,7 @@ local function entity_physics(pos, radius, drops)
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function add_effects(pos, radius, drops)
|
||||
|
|
Loading…
Add table
Reference in a new issue