some cleanup to held item handling

This commit is contained in:
Dylan K. Taylor
2019-06-26 19:40:40 +01:00
parent 61d443bf4e
commit 7f56f27505
6 changed files with 37 additions and 36 deletions

View File

@@ -25,11 +25,7 @@ namespace pocketmine\inventory;
use pocketmine\entity\Human;
use pocketmine\item\Item;
use pocketmine\network\mcpe\protocol\MobEquipmentPacket;
use pocketmine\network\mcpe\protocol\types\ContainerIds;
use pocketmine\player\Player;
use function in_array;
use function is_array;
class PlayerInventory extends BaseInventory{
@@ -98,11 +94,12 @@ class PlayerInventory extends BaseInventory{
$this->itemInHandIndex = $hotbarSlot;
if($this->getHolder() instanceof Player and $send){
$this->sendHeldItem($this->getHolder());
if($this->holder instanceof Player and $send){
$this->holder->getNetworkSession()->getInvManager()->syncSelectedHotbarSlot();
}
foreach($this->holder->getViewers() as $viewer){
$viewer->getNetworkSession()->onMobEquipmentChange($this->holder);
}
$this->sendHeldItem($this->getHolder()->getViewers());
}
/**
@@ -121,29 +118,8 @@ class PlayerInventory extends BaseInventory{
*/
public function setItemInHand(Item $item) : void{
$this->setItem($this->getHeldItemIndex(), $item);
$this->sendHeldItem($this->holder->getViewers());
}
/**
* Sends the currently-held item to specified targets.
*
* @param Player|Player[] $target
*/
public function sendHeldItem($target) : void{
$item = $this->getItemInHand();
$pk = MobEquipmentPacket::create($this->getHolder()->getId(), $item, $this->getHeldItemIndex(), ContainerIds::INVENTORY);
if(!is_array($target)){
$target->sendDataPacket($pk);
if($target === $this->getHolder()){
$target->getNetworkSession()->getInvManager()->syncSlot($this, $this->getHeldItemIndex());
}
}else{
$this->getHolder()->getWorld()->getServer()->broadcastPacket($target, $pk);
if(in_array($this->getHolder(), $target, true)){
$target->getNetworkSession()->getInvManager()->syncSlot($this, $this->getHeldItemIndex());
}
foreach($this->holder->getViewers() as $viewer){
$viewer->getNetworkSession()->onMobEquipmentChange($this->holder);
}
}