diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index d7a8b7e87..5bc63e2b3 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -347,7 +347,8 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc mcl_util.deal_damage(obj, damage, { type = "explosion", direct = direct, source = source }) if obj:is_player() or ent.tnt_knockback then - if obj:is_player() and mcl_shields and mcl_shields.is_blocking and mcl_shields.is_blocking(obj) then + local shield_dot = vector.dot(obj:get_look_dir(), vector.subtract(pos, opos)) + if obj:is_player() and mcl_shields and mcl_shields.is_blocking and mcl_shields.is_blocking(obj) and shield_dot >= 0 then obj:add_velocity(vector.multiply(punch_dir, impact * 10)) else obj:add_velocity(vector.multiply(punch_dir, impact * 20))