ArmorInventory: use broadcast for sending armour updates

This commit is contained in:
Dylan K. Taylor 2018-08-13 16:12:25 +01:00
parent f2fd505bae
commit 59a51a6c75

View File

@ -93,23 +93,21 @@ class ArmorInventory extends BaseInventory{
$target = [$target];
}
$armor = $this->getContents(true);
/** @var Player[] $target */
$pk = new MobArmorEquipmentPacket();
$pk->entityRuntimeId = $this->getHolder()->getId();
$pk->slots = $armor;
foreach($target as $player){
/** @var Player $player */
if($player === $this->getHolder()){
$pk2 = new InventorySlotPacket();
$pk2->windowId = $player->getWindowId($this);
$pk2->inventorySlot = $index;
$pk2->item = $this->getItem($index);
$player->sendDataPacket($pk2);
}else{
$player->sendDataPacket($pk);
}
if(($k = array_search($this->holder, $target, true)) !== false){
$pk = new InventorySlotPacket();
$pk->windowId = $target[$k]->getWindowId($this);
$pk->inventorySlot = $index;
$pk->item = $this->getItem($index);
$target[$k]->sendDataPacket($pk);
unset($target[$k]);
}
if(!empty($target)){
$pk = new MobArmorEquipmentPacket();
$pk->entityRuntimeId = $this->getHolder()->getId();
$pk->slots = $this->getContents(true);
$this->holder->getLevel()->getServer()->broadcastPacket($target, $pk);
}
}
@ -120,20 +118,18 @@ class ArmorInventory extends BaseInventory{
$armor = $this->getContents(true);
$pk = new MobArmorEquipmentPacket();
$pk->entityRuntimeId = $this->getHolder()->getId();
$pk->slots = $armor;
foreach($target as $player){
/** @var Player $player */
if($player === $this->getHolder()){
$pk2 = new InventoryContentPacket();
$pk2->windowId = $player->getWindowId($this);
$pk2->items = $armor;
$player->sendDataPacket($pk2);
}else{
$player->sendDataPacket($pk);
}
if(($k = array_search($this->holder, $target, true)) !== false){
$pk = new InventoryContentPacket();
$pk->windowId = $target[$k]->getWindowId($this);
$pk->items = $armor;
$target[$k]->sendDataPacket($pk);
unset($target[$k]);
}
if(!empty($target)){
$pk = new MobArmorEquipmentPacket();
$pk->entityRuntimeId = $this->getHolder()->getId();
$pk->slots = $armor;
$this->holder->getLevel()->getServer()->broadcastPacket($target, $pk);
}
}