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