21 public const NETWORK_ID = ProtocolInfo::BOSS_EVENT_PACKET;
42 public int $bossActorUniqueId;
43 public int $eventType;
45 public int $playerActorUniqueId;
46 public float $healthPercent;
48 public string $filteredTitle;
49 public bool $darkenScreen;
53 private static function base(
int $bossActorUniqueId,
int $eventId) : self{
55 $result->bossActorUniqueId = $bossActorUniqueId;
56 $result->eventType = $eventId;
60 public static function show(
int $bossActorUniqueId,
string $title,
float $healthPercent,
bool $darkenScreen =
false,
int $color = BossBarColor::PURPLE,
int $overlay = 0) : self{
61 $result = self::base($bossActorUniqueId, self::TYPE_SHOW);
62 $result->title = $title;
63 $result->filteredTitle = $title;
64 $result->healthPercent = $healthPercent;
65 $result->darkenScreen = $darkenScreen;
66 $result->color = $color;
67 $result->overlay = $overlay;
71 public static function hide(
int $bossActorUniqueId) : self{
72 return self::base($bossActorUniqueId, self::TYPE_HIDE);
75 public static function registerPlayer(
int $bossActorUniqueId,
int $playerActorUniqueId) : self{
76 $result = self::base($bossActorUniqueId, self::TYPE_REGISTER_PLAYER);
77 $result->playerActorUniqueId = $playerActorUniqueId;
81 public static function unregisterPlayer(
int $bossActorUniqueId,
int $playerActorUniqueId) : self{
82 $result = self::base($bossActorUniqueId, self::TYPE_UNREGISTER_PLAYER);
83 $result->playerActorUniqueId = $playerActorUniqueId;
87 public static function healthPercent(
int $bossActorUniqueId,
float $healthPercent) : self{
88 $result = self::base($bossActorUniqueId, self::TYPE_HEALTH_PERCENT);
89 $result->healthPercent = $healthPercent;
93 public static function title(
int $bossActorUniqueId,
string $title) : self{
94 $result = self::base($bossActorUniqueId, self::TYPE_TITLE);
95 $result->title = $title;
96 $result->filteredTitle = $title;
100 public static function properties(
int $bossActorUniqueId,
bool $darkenScreen,
int $color = BossBarColor::PURPLE,
int $overlay = 0) : self{
101 $result = self::base($bossActorUniqueId, self::TYPE_PROPERTIES);
102 $result->darkenScreen = $darkenScreen;
103 $result->color = $color;
104 $result->overlay = $overlay;
108 public static function query(
int $bossActorUniqueId,
int $playerActorUniqueId) : self{
109 $result = self::base($bossActorUniqueId, self::TYPE_QUERY);
110 $result->playerActorUniqueId = $playerActorUniqueId;
115 $this->bossActorUniqueId = $in->getActorUniqueId();
117 switch($this->eventType){
118 case self::TYPE_REGISTER_PLAYER:
119 case self::TYPE_UNREGISTER_PLAYER:
120 case self::TYPE_QUERY:
124 case self::TYPE_SHOW:
129 case self::TYPE_PROPERTIES:
130 $this->darkenScreen = match($raw = $in->
getLShort()){
135 case self::TYPE_TEXTURE:
139 case self::TYPE_HEALTH_PERCENT:
142 case self::TYPE_TITLE:
152 $out->putActorUniqueId($this->bossActorUniqueId);
154 switch($this->eventType){
155 case self::TYPE_REGISTER_PLAYER:
156 case self::TYPE_UNREGISTER_PLAYER:
157 case self::TYPE_QUERY:
158 $out->putActorUniqueId($this->playerActorUniqueId);
161 case self::TYPE_SHOW:
162 $out->putString($this->title);
163 $out->putString($this->filteredTitle);
164 $out->putLFloat($this->healthPercent);
166 case self::TYPE_PROPERTIES:
167 $out->putLShort($this->darkenScreen ? 1 : 0);
168 case self::TYPE_TEXTURE:
172 case self::TYPE_HEALTH_PERCENT:
173 $out->putLFloat($this->healthPercent);
175 case self::TYPE_TITLE:
176 $out->putString($this->title);
177 $out->putString($this->filteredTitle);
185 return $handler->handleBossEvent($this);