Fix TNT mod crash when entities disappear during explosion (#2616)

This commit is contained in:
sfan5 2020-03-06 21:51:19 +01:00 committed by GitHub
parent 3a863053c0
commit 07a8067348
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 27 additions and 24 deletions

View File

@ -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)