From 9bd7f771d3138d1c4ac417262d2bf4887430ef6a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 21 Sep 2017 19:04:45 +0100 Subject: [PATCH] "Fixed" FloatingTextParticle yet again - nametag visibility flags don't work properly, only players show them all the time - invisibility overrides nametag visibility - scale 0 triggers asserts on debug builds ..... how hard is it to NOT break these simple things each update Mojang? closes #1205 --- .../level/particle/FloatingTextParticle.php | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/pocketmine/level/particle/FloatingTextParticle.php b/src/pocketmine/level/particle/FloatingTextParticle.php index f5386cb43..6fa1f4f87 100644 --- a/src/pocketmine/level/particle/FloatingTextParticle.php +++ b/src/pocketmine/level/particle/FloatingTextParticle.php @@ -25,9 +25,13 @@ namespace pocketmine\level\particle; use pocketmine\entity\Entity; use pocketmine\entity\Item as ItemEntity; +use pocketmine\item\Item; +use pocketmine\item\ItemFactory; use pocketmine\math\Vector3; use pocketmine\network\mcpe\protocol\AddEntityPacket; +use pocketmine\network\mcpe\protocol\AddPlayerPacket; use pocketmine\network\mcpe\protocol\RemoveEntityPacket; +use pocketmine\utils\UUID; class FloatingTextParticle extends Particle{ //TODO: HACK! @@ -77,21 +81,22 @@ class FloatingTextParticle extends Particle{ } if(!$this->invisible){ - - $pk = new AddEntityPacket(); + $pk = new AddPlayerPacket(); + $pk->uuid = UUID::fromRandom(); + $pk->username = ""; $pk->entityRuntimeId = $this->entityId; - $pk->type = ItemEntity::NETWORK_ID; - $pk->position = $this->asVector3()->subtract(0, 0.75, 0); - $pk->yaw = 0; - $pk->pitch = 0; + $pk->position = $this->asVector3(); //TODO: check offset + $pk->item = ItemFactory::get(Item::AIR, 0, 0); + $flags = ( (1 << Entity::DATA_FLAG_CAN_SHOW_NAMETAG) | (1 << Entity::DATA_FLAG_ALWAYS_SHOW_NAMETAG) | (1 << Entity::DATA_FLAG_IMMOBILE) ); $pk->metadata = [ - Entity::DATA_FLAGS => [Entity::DATA_TYPE_LONG, $flags], - Entity::DATA_NAMETAG => [Entity::DATA_TYPE_STRING, $this->title . ($this->text !== "" ? "\n" . $this->text : "")] + Entity::DATA_FLAGS => [Entity::DATA_TYPE_LONG, $flags], + Entity::DATA_NAMETAG => [Entity::DATA_TYPE_STRING, $this->title . ($this->text !== "" ? "\n" . $this->text : "")], + Entity::DATA_SCALE => [Entity::DATA_TYPE_FLOAT, 0.01] //zero causes problems on debug builds ]; $p[] = $pk;