diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-07-01 23:39:37 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2014-07-01 23:39:37 +0200 |
commit | 284c1c0514168e30338f2ad372b7e7f185dba0c4 (patch) | |
tree | 66e9ef12dda74a3c5e48b0ce8aa96427e903ff40 /src/Entities | |
parent | Implemented Vector3<>::Floor() (diff) | |
download | cuberite-284c1c0514168e30338f2ad372b7e7f185dba0c4.tar cuberite-284c1c0514168e30338f2ad372b7e7f185dba0c4.tar.gz cuberite-284c1c0514168e30338f2ad372b7e7f185dba0c4.tar.bz2 cuberite-284c1c0514168e30338f2ad372b7e7f185dba0c4.tar.lz cuberite-284c1c0514168e30338f2ad372b7e7f185dba0c4.tar.xz cuberite-284c1c0514168e30338f2ad372b7e7f185dba0c4.tar.zst cuberite-284c1c0514168e30338f2ad372b7e7f185dba0c4.zip |
Diffstat (limited to 'src/Entities')
-rw-r--r-- | src/Entities/ArrowEntity.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Entities/ArrowEntity.cpp b/src/Entities/ArrowEntity.cpp index 2d6683f0a..7e96a666d 100644 --- a/src/Entities/ArrowEntity.cpp +++ b/src/Entities/ArrowEntity.cpp @@ -69,14 +69,18 @@ bool cArrowEntity::CanPickup(const cPlayer & a_Player) const void cArrowEntity::OnHitSolidBlock(const Vector3d & a_HitPos, eBlockFace a_HitFace) { Vector3d Hit = a_HitPos; - Vector3d SinkMovement = GetSpeed() / 800; - SinkMovement.Clamp(0.001, 0.001, 0.001, 0.05, 0.05, 0.05); + Vector3d SinkMovement = GetSpeed() / 800; // Base value for arrow penetration + SinkMovement = Clamp( // Adjust the movement so that fast arrows don't go through blocks (though in reality they would, in addition to exploding into fragments :P) + SinkMovement, + (SinkMovement * 0.001) / SinkMovement.Length(), + (SinkMovement * 0.05) / SinkMovement.Length() + ); Hit += SinkMovement; // Make arrow sink into block a little super::OnHitSolidBlock(Hit, a_HitFace); - Hit.Floor(); + Vector3i BlockHit = Hit.Floor(); - int X = Hit.x, Y = Hit.y, Z = Hit.z; + int X = BlockHit.x, Y = BlockHit.y, Z = BlockHit.z; m_HitBlockPos = Vector3i(X, Y, Z); // Broadcast arrow hit sound |