diff --git a/server/block/explosion.go b/server/block/explosion.go index b24e4bd1a..1485ad224 100644 --- a/server/block/explosion.go +++ b/server/block/explosion.go @@ -95,12 +95,12 @@ func (c ExplosionConfig) Explode(w *world.World, explosionPos mgl64.Vec3) { if !e.Type().BBox(e).Translate(pos).IntersectsWith(box) { continue } - dist := pos.Sub(pos).Len() - if dist >= d { + dist := pos.Sub(explosionPos).Len() + if dist > d || dist == 0 { continue } if explodable, ok := e.(ExplodableEntity); ok { - impact := (1 - dist/d) * exposure(pos, e) + impact := (1 - dist/d) * exposure(explosionPos, e) explodable.Explode(explosionPos, impact, c) } } diff --git a/server/player/player.go b/server/player/player.go index 9ceb5b150..3262edbcd 100644 --- a/server/player/player.go +++ b/server/player/player.go @@ -708,7 +708,7 @@ func (p *Player) FinalDamageFrom(dmg float64, src world.DamageSource) float64 { // Explode ... func (p *Player) Explode(explosionPos mgl64.Vec3, impact float64, c block.ExplosionConfig) { diff := p.Position().Sub(explosionPos) - p.Hurt(math.Floor((impact*impact+impact)*3.5*c.Size+1), entity.ExplosionDamageSource{}) + p.Hurt(math.Floor((impact*impact+impact)/2*7*c.Size*2+1), entity.ExplosionDamageSource{}) p.knockBack(explosionPos, impact, diff[1]/diff.Len()*impact) }