diff --git a/src/pocketmine/entity/Human.php b/src/pocketmine/entity/Human.php index 9049024f6..96fcf0b96 100644 --- a/src/pocketmine/entity/Human.php +++ b/src/pocketmine/entity/Human.php @@ -50,6 +50,7 @@ use pocketmine\network\mcpe\protocol\ActorEventPacket; use pocketmine\network\mcpe\protocol\AddPlayerPacket; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; +use pocketmine\network\mcpe\protocol\MovePlayerPacket; use pocketmine\network\mcpe\protocol\PlayerListPacket; use pocketmine\network\mcpe\protocol\PlayerSkinPacket; use pocketmine\network\mcpe\protocol\types\PlayerListEntry; @@ -819,6 +820,19 @@ class Human extends Creature implements ProjectileSource, InventoryHolder{ } } + public function broadcastMovement(bool $teleport = false) : void{ + //TODO: workaround 1.14.30 bug: MoveActor(Absolute|Delta)Packet don't work on players anymore :( + $pk = new MovePlayerPacket(); + $pk->entityRuntimeId = $this->getId(); + $pk->position = $this->getOffsetPosition($this); + $pk->yaw = $this->yaw; + $pk->pitch = $this->pitch; + $pk->headYaw = $this->yaw; + $pk->mode = $teleport ? MovePlayerPacket::MODE_TELEPORT : MovePlayerPacket::MODE_NORMAL; + + $this->level->addChunkPacket($this->getFloorX() >> 4, $this->getFloorZ() >> 4, $pk); + } + public function close() : void{ if(!$this->closed){ if($this->inventory !== null){