diff --git a/src/pocketmine/network/mcpe/protocol/BossEventPacket.php b/src/pocketmine/network/mcpe/protocol/BossEventPacket.php index 4a3c50eab..3b58f3387 100644 --- a/src/pocketmine/network/mcpe/protocol/BossEventPacket.php +++ b/src/pocketmine/network/mcpe/protocol/BossEventPacket.php @@ -66,6 +66,57 @@ class BossEventPacket extends DataPacket implements ClientboundPacket, Serverbou /** @var int */ public $overlay; + private static function base(int $bossEntityUniqueId, int $eventId) : self{ + $result = new self; + $result->bossEid = $bossEntityUniqueId; + $result->eventType = $eventId; + return $result; + } + + public static function show(int $bossEntityUniqueId, string $title, float $healthPercent, int $unknownShort = 0) : self{ + $result = self::base($bossEntityUniqueId, self::TYPE_SHOW); + $result->title = $title; + $result->healthPercent = $healthPercent; + $result->unknownShort = $unknownShort; + $result->color = 0; //hardcoded due to being useless + $result->overlay = 0; + return $result; + } + + public static function hide(int $bossEntityUniqueId) : self{ + return self::base($bossEntityUniqueId, self::TYPE_HIDE); + } + + public static function registerPlayer(int $bossEntityUniqueId, int $playerEntityUniqueId) : self{ + $result = self::base($bossEntityUniqueId, self::TYPE_REGISTER_PLAYER); + $result->playerEid = $playerEntityUniqueId; + return $result; + } + + public static function unregisterPlayer(int $bossEntityUniqueId, int $playerEntityUniqueId) : self{ + $result = self::base($bossEntityUniqueId, self::TYPE_UNREGISTER_PLAYER); + $result->playerEid = $playerEntityUniqueId; + return $result; + } + + public static function healthPercent(int $bossEntityUniqueId, float $healthPercent) : self{ + $result = self::base($bossEntityUniqueId, self::TYPE_HEALTH_PERCENT); + $result->healthPercent = $healthPercent; + return $result; + } + + public static function title(int $bossEntityUniqueId, string $title) : self{ + $result = self::base($bossEntityUniqueId, self::TYPE_TITLE); + $result->title = $title; + return $result; + } + + public static function unknown6(int $bossEntityUniqueId, int $unknownShort) : self{ + $result = self::base($bossEntityUniqueId, self::TYPE_UNKNOWN_6); + $result->unknownShort = $unknownShort; + return $result; + } + protected function decodePayload() : void{ $this->bossEid = $this->getEntityUniqueId(); $this->eventType = $this->getUnsignedVarInt();