From 85718e2750cef94d6ce20ff877c3fa40a987adb7 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 26 May 2019 15:43:46 +0100 Subject: [PATCH] Clean up a bunch of garbage in Furnace --- src/pocketmine/block/tile/Furnace.php | 26 ++++--------------- .../network/mcpe/NetworkSession.php | 12 +++++++++ 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/pocketmine/block/tile/Furnace.php b/src/pocketmine/block/tile/Furnace.php index c612e8213..d1324777d 100644 --- a/src/pocketmine/block/tile/Furnace.php +++ b/src/pocketmine/block/tile/Furnace.php @@ -207,32 +207,16 @@ class Furnace extends Spawnable implements InventoryHolder, Container, Nameable{ $this->burnTime = $this->cookTime = $this->maxTime = 0; } - /** @var ContainerSetDataPacket[] $packets */ - $packets = []; if($prevCookTime !== $this->cookTime){ - $pk = new ContainerSetDataPacket(); - $pk->property = ContainerSetDataPacket::PROPERTY_FURNACE_TICK_COUNT; - $pk->value = $this->cookTime; - $packets[] = $pk; + foreach($this->inventory->getViewers() as $v){ + $v->getNetworkSession()->syncInventoryData($this->inventory, ContainerSetDataPacket::PROPERTY_FURNACE_TICK_COUNT, $this->cookTime); + } } $fuelTicksLeft = $this->getFuelTicksLeft(); if($prevFuelTicksLeft !== $fuelTicksLeft){ - $pk = new ContainerSetDataPacket(); - $pk->property = ContainerSetDataPacket::PROPERTY_FURNACE_LIT_TIME; - $pk->value = $fuelTicksLeft; - $packets[] = $pk; - } - - if(!empty($packets)){ - foreach($this->getInventory()->getViewers() as $player){ - $windowId = $player->getWindowId($this->getInventory()); - if($windowId > 0){ - foreach($packets as $pk){ - $pk->windowId = $windowId; - $player->sendDataPacket(clone $pk); - } - } + foreach($this->inventory->getViewers() as $v){ + $v->getNetworkSession()->syncInventoryData($this->inventory, ContainerSetDataPacket::PROPERTY_FURNACE_LIT_TIME, $fuelTicksLeft); } } diff --git a/src/pocketmine/network/mcpe/NetworkSession.php b/src/pocketmine/network/mcpe/NetworkSession.php index 8eeafc2bc..b2327c587 100644 --- a/src/pocketmine/network/mcpe/NetworkSession.php +++ b/src/pocketmine/network/mcpe/NetworkSession.php @@ -45,6 +45,7 @@ use pocketmine\network\mcpe\protocol\AdventureSettingsPacket; use pocketmine\network\mcpe\protocol\AvailableCommandsPacket; use pocketmine\network\mcpe\protocol\ChunkRadiusUpdatedPacket; use pocketmine\network\mcpe\protocol\ClientboundPacket; +use pocketmine\network\mcpe\protocol\ContainerSetDataPacket; use pocketmine\network\mcpe\protocol\DisconnectPacket; use pocketmine\network\mcpe\protocol\InventoryContentPacket; use pocketmine\network\mcpe\protocol\InventorySlotPacket; @@ -818,6 +819,17 @@ class NetworkSession{ } } + public function syncInventoryData(Inventory $inventory, int $propertyId, int $value) : void{ + $windowId = $this->player->getWindowId($inventory); + if($windowId !== ContainerIds::NONE){ + $pk = new ContainerSetDataPacket(); + $pk->property = $propertyId; + $pk->value = $value; + $pk->windowId = $windowId; + $this->sendDataPacket($pk); + } + } + public function onMobArmorChange(Living $mob) : void{ $pk = new MobArmorEquipmentPacket(); $pk->entityRuntimeId = $mob->getId();