25    public const NETWORK_ID = ProtocolInfo::BOSS_EVENT_PACKET;
 
   46    public int $bossActorUniqueId;
 
   47    public int $eventType;
 
   49    public int $playerActorUniqueId;
 
   50    public float $healthPercent;
 
   52    public string $filteredTitle;
 
   53    public bool $darkenScreen;
 
   57    private static function base(
int $bossActorUniqueId, 
int $eventId) : self{
 
   59        $result->bossActorUniqueId = $bossActorUniqueId;
 
   60        $result->eventType = $eventId;
 
   64    public static function show(
int $bossActorUniqueId, 
string $title, 
float $healthPercent, 
bool $darkenScreen = 
false, 
int $color = BossBarColor::PURPLE, 
int $overlay = 0) : self{
 
   65        $result = self::base($bossActorUniqueId, self::TYPE_SHOW);
 
   66        $result->title = $title;
 
   67        $result->filteredTitle = $title;
 
   68        $result->healthPercent = $healthPercent;
 
   69        $result->darkenScreen = $darkenScreen;
 
   70        $result->color = $color;
 
   71        $result->overlay = $overlay;
 
   75    public static function hide(
int $bossActorUniqueId) : self{
 
   76        return self::base($bossActorUniqueId, self::TYPE_HIDE);
 
   79    public static function registerPlayer(
int $bossActorUniqueId, 
int $playerActorUniqueId) : self{
 
   80        $result = self::base($bossActorUniqueId, self::TYPE_REGISTER_PLAYER);
 
   81        $result->playerActorUniqueId = $playerActorUniqueId;
 
   85    public static function unregisterPlayer(
int $bossActorUniqueId, 
int $playerActorUniqueId) : self{
 
   86        $result = self::base($bossActorUniqueId, self::TYPE_UNREGISTER_PLAYER);
 
   87        $result->playerActorUniqueId = $playerActorUniqueId;
 
   91    public static function healthPercent(
int $bossActorUniqueId, 
float $healthPercent) : self{
 
   92        $result = self::base($bossActorUniqueId, self::TYPE_HEALTH_PERCENT);
 
   93        $result->healthPercent = $healthPercent;
 
   97    public static function title(
int $bossActorUniqueId, 
string $title) : self{
 
   98        $result = self::base($bossActorUniqueId, self::TYPE_TITLE);
 
   99        $result->title = $title;
 
  100        $result->filteredTitle = $title;
 
  104    public static function properties(
int $bossActorUniqueId, 
bool $darkenScreen, 
int $color = BossBarColor::PURPLE, 
int $overlay = 0) : self{
 
  105        $result = self::base($bossActorUniqueId, self::TYPE_PROPERTIES);
 
  106        $result->darkenScreen = $darkenScreen;
 
  107        $result->color = $color;
 
  108        $result->overlay = $overlay;
 
  112    public static function query(
int $bossActorUniqueId, 
int $playerActorUniqueId) : self{
 
  113        $result = self::base($bossActorUniqueId, self::TYPE_QUERY);
 
  114        $result->playerActorUniqueId = $playerActorUniqueId;
 
  119        $this->bossActorUniqueId = 
CommonTypes::getActorUniqueId($in);
 
  120        $this->eventType = VarInt::readUnsignedInt($in);
 
  121        switch($this->eventType){
 
  122            case self::TYPE_REGISTER_PLAYER:
 
  123            case self::TYPE_UNREGISTER_PLAYER:
 
  124            case self::TYPE_QUERY:
 
  125                $this->playerActorUniqueId = CommonTypes::getActorUniqueId($in);
 
  128            case self::TYPE_SHOW:
 
  129                $this->title = CommonTypes::getString($in);
 
  130                $this->filteredTitle = CommonTypes::getString($in);
 
  131                $this->healthPercent = LE::readFloat($in);
 
  133            case self::TYPE_PROPERTIES:
 
  134                $this->darkenScreen = match($raw = LE::readUnsignedShort($in)){
 
  139            case self::TYPE_TEXTURE:
 
  140                $this->color = VarInt::readUnsignedInt($in);
 
  141                $this->overlay = VarInt::readUnsignedInt($in);
 
  143            case self::TYPE_HEALTH_PERCENT:
 
  144                $this->healthPercent = LE::readFloat($in);
 
  146            case self::TYPE_TITLE:
 
  147                $this->title = CommonTypes::getString($in);
 
  148                $this->filteredTitle = CommonTypes::getString($in);
 
 
  156        CommonTypes::putActorUniqueId($out, $this->bossActorUniqueId);
 
  157        VarInt::writeUnsignedInt($out, $this->eventType);
 
  158        switch($this->eventType){
 
  159            case self::TYPE_REGISTER_PLAYER:
 
  160            case self::TYPE_UNREGISTER_PLAYER:
 
  161            case self::TYPE_QUERY:
 
  162                CommonTypes::putActorUniqueId($out, $this->playerActorUniqueId);
 
  165            case self::TYPE_SHOW:
 
  166                CommonTypes::putString($out, $this->title);
 
  167                CommonTypes::putString($out, $this->filteredTitle);
 
  168                LE::writeFloat($out, $this->healthPercent);
 
  170            case self::TYPE_PROPERTIES:
 
  171                LE::writeUnsignedShort($out, $this->darkenScreen ? 1 : 0);
 
  172            case self::TYPE_TEXTURE:
 
  173                VarInt::writeUnsignedInt($out, $this->color);
 
  174                VarInt::writeUnsignedInt($out, $this->overlay);
 
  176            case self::TYPE_HEALTH_PERCENT:
 
  177                LE::writeFloat($out, $this->healthPercent);
 
  179            case self::TYPE_TITLE:
 
  180                CommonTypes::putString($out, $this->title);
 
  181                CommonTypes::putString($out, $this->filteredTitle);
 
 
  189        return $handler->handleBossEvent($this);