diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index d7f79e43f..4c91a49de 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1941,7 +1941,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade $this->forceMovement = new Vector3($this->x, $this->y, $this->z); } - if($this->forceMovement instanceof Vector3 and ($newPos->distanceSquared($this->forceMovement) > 0.1 or $revert)){ + if($this->teleportPosition !== null or ($this->forceMovement instanceof Vector3 and ($newPos->distanceSquared($this->forceMovement) > 0.1 or $revert))){ $this->sendPosition($this->forceMovement, $packet->yaw, $packet->pitch, MovePlayerPacket::MODE_RESET); }else{ $packet->yaw %= 360; diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 867852e45..3f99ebe4e 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -1297,6 +1297,8 @@ abstract class Entity extends Location implements Metadatable{ //TODO: big messy loop }*/ + assert(abs($dx) <= 20 and abs($dy) <= 20 and abs($dz) <= 20, "Movement distance is excessive: dx=$dx, dy=$dy, dz=$dz"); + $list = $this->level->getCollisionCubes($this, $this->level->getTickRate() > 1 ? $this->boundingBox->getOffsetBoundingBox($dx, $dy, $dz) : $this->boundingBox->addCoord($dx, $dy, $dz), false); foreach($list as $bb){