Clean up a bunch of garbage in Furnace

This commit is contained in:
Dylan K. Taylor 2019-05-26 15:43:46 +01:00
parent 32e03cd92d
commit 85718e2750
2 changed files with 17 additions and 21 deletions

View File

@ -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);
}
}

View File

@ -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();