mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-10-19 04:15:04 +00:00
NetworkSession: allow sending an arbitrary set of attributes for an entity
This commit is contained in:
@@ -680,12 +680,14 @@ class NetworkSession{
|
||||
$this->sendDataPacket($pk);
|
||||
}
|
||||
|
||||
public function syncAttributes(Living $entity, bool $sendAll = false) : void{
|
||||
$entries = $sendAll ? $entity->getAttributeMap()->getAll() : $entity->getAttributeMap()->needSend();
|
||||
if(count($entries) > 0){
|
||||
/**
|
||||
* @param Attribute[] $attributes
|
||||
*/
|
||||
public function syncAttributes(Living $entity, array $attributes) : void{
|
||||
if(count($attributes) > 0){
|
||||
$this->sendDataPacket(UpdateAttributesPacket::create($entity->getId(), array_map(function(Attribute $attr) : NetworkAttribute{
|
||||
return new NetworkAttribute($attr->getId(), $attr->getMinValue(), $attr->getMaxValue(), $attr->getValue(), $attr->getDefaultValue());
|
||||
}, $entries)));
|
||||
}, $attributes)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -86,7 +86,7 @@ class PreSpawnPacketHandler extends PacketHandler{
|
||||
|
||||
$this->player->setImmobile(); //HACK: fix client-side falling pre-spawn
|
||||
|
||||
$this->session->syncAttributes($this->player, true);
|
||||
$this->session->syncAttributes($this->player, $this->player->getAttributeMap()->getAll());
|
||||
$this->session->syncAvailableCommands();
|
||||
$this->session->syncAdventureSettings($this->player);
|
||||
foreach($this->player->getEffects()->all() as $effect){
|
||||
|
Reference in New Issue
Block a user