Implemented Channeled packet sending

This commit is contained in:
Shoghi Cervantes
2015-04-14 18:24:40 +02:00
parent bb945446b7
commit 0b176b3fe0
29 changed files with 170 additions and 120 deletions

View File

@ -25,6 +25,7 @@ use pocketmine\entity\Entity;
use pocketmine\event\entity\EntityInventoryChangeEvent;
use pocketmine\event\inventory\InventoryOpenEvent;
use pocketmine\item\Item;
use pocketmine\network\Network;
use pocketmine\network\protocol\ContainerSetContentPacket;
use pocketmine\network\protocol\ContainerSetSlotPacket;
use pocketmine\Player;
@ -412,7 +413,7 @@ abstract class BaseInventory implements Inventory{
continue;
}
$pk->windowid = $id;
$player->dataPacket($pk);
$player->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}
@ -435,7 +436,7 @@ abstract class BaseInventory implements Inventory{
continue;
}
$pk->windowid = $id;
$player->dataPacket($pk);
$player->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}

View File

@ -22,6 +22,7 @@
namespace pocketmine\inventory;
use pocketmine\level\Level;
use pocketmine\network\Network;
use pocketmine\network\protocol\TileEventPacket;
use pocketmine\Player;
use pocketmine\Server;
@ -50,7 +51,7 @@ class ChestInventory extends ContainerInventory{
$pk->case1 = 1;
$pk->case2 = 2;
if(($level = $this->getHolder()->getLevel()) instanceof Level){
Server::broadcastPacket($level->getUsingChunk($this->getHolder()->getX() >> 4, $this->getHolder()->getZ() >> 4), $pk);
Server::broadcastPacket($level->getUsingChunk($this->getHolder()->getX() >> 4, $this->getHolder()->getZ() >> 4), $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}
}
@ -64,7 +65,7 @@ class ChestInventory extends ContainerInventory{
$pk->case1 = 1;
$pk->case2 = 0;
if(($level = $this->getHolder()->getLevel()) instanceof Level){
Server::broadcastPacket($level->getUsingChunk($this->getHolder()->getX() >> 4, $this->getHolder()->getZ() >> 4), $pk);
Server::broadcastPacket($level->getUsingChunk($this->getHolder()->getX() >> 4, $this->getHolder()->getZ() >> 4), $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}
parent::onClose($who);

View File

@ -22,6 +22,7 @@
namespace pocketmine\inventory;
use pocketmine\math\Vector3;
use pocketmine\network\Network;
use pocketmine\network\protocol\ContainerClosePacket;
use pocketmine\network\protocol\ContainerOpenPacket;
use pocketmine\Player;
@ -42,7 +43,7 @@ abstract class ContainerInventory extends BaseInventory{
$pk->x = $pk->y = $pk->z = 0;
}
$who->dataPacket($pk);
$who->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
$this->sendContents($who);
}
@ -50,7 +51,7 @@ abstract class ContainerInventory extends BaseInventory{
public function onClose(Player $who){
$pk = new ContainerClosePacket();
$pk->windowid = $who->getWindowId($this);
$who->dataPacket($pk);
$who->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
parent::onClose($who);
}
}

View File

@ -23,6 +23,7 @@ namespace pocketmine\inventory;
use pocketmine\item\Item;
use pocketmine\level\Level;
use pocketmine\network\Network;
use pocketmine\network\protocol\TileEventPacket;
use pocketmine\Player;
use pocketmine\Server;
@ -105,7 +106,7 @@ class DoubleChestInventory extends ChestInventory implements InventoryHolder{
$pk->case1 = 1;
$pk->case2 = 2;
if(($level = $this->right->getHolder()->getLevel()) instanceof Level){
Server::broadcastPacket($level->getUsingChunk($this->right->getHolder()->getX() >> 4, $this->right->getHolder()->getZ() >> 4), $pk);
Server::broadcastPacket($level->getUsingChunk($this->right->getHolder()->getX() >> 4, $this->right->getHolder()->getZ() >> 4), $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}
}
@ -119,7 +120,7 @@ class DoubleChestInventory extends ChestInventory implements InventoryHolder{
$pk->case1 = 1;
$pk->case2 = 0;
if(($level = $this->right->getHolder()->getLevel()) instanceof Level){
Server::broadcastPacket($level->getUsingChunk($this->right->getHolder()->getX() >> 4, $this->right->getHolder()->getZ() >> 4), $pk);
Server::broadcastPacket($level->getUsingChunk($this->right->getHolder()->getX() >> 4, $this->right->getHolder()->getZ() >> 4), $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}
parent::onClose($who);

View File

@ -26,6 +26,7 @@ use pocketmine\event\entity\EntityArmorChangeEvent;
use pocketmine\event\entity\EntityInventoryChangeEvent;
use pocketmine\event\player\PlayerItemHeldEvent;
use pocketmine\item\Item;
use pocketmine\network\Network;
use pocketmine\network\protocol\ContainerSetContentPacket;
use pocketmine\network\protocol\ContainerSetSlotPacket;
use pocketmine\network\protocol\PlayerArmorEquipmentPacket;
@ -73,7 +74,7 @@ class PlayerInventory extends BaseInventory{
$pk->meta = $item->getDamage();
$pk->slot = $this->getHeldItemIndex();
Server::broadcastPacket($this->getHolder()->getViewers(), $pk);
Server::broadcastPacket($this->getHolder()->getViewers(), $pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING));
}
}
@ -147,7 +148,7 @@ class PlayerInventory extends BaseInventory{
if($player === $this->getHolder()){
$this->sendSlot($this->getHeldItemSlot(), $player);
}else{
$player->dataPacket($pk);
$player->dataPacket($pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING));
}
}
}
@ -343,7 +344,7 @@ class PlayerInventory extends BaseInventory{
$pk2->slots = $armor;
$player->dataPacket($pk2);
}else{
$player->dataPacket($pk);
$player->dataPacket($pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING));
}
}
}
@ -401,7 +402,7 @@ class PlayerInventory extends BaseInventory{
$pk2->item = $this->getItem($index);
$player->dataPacket($pk2);
}else{
$player->dataPacket($pk);
$player->dataPacket($pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING));
}
}
}
@ -415,6 +416,7 @@ class PlayerInventory extends BaseInventory{
}
$pk = new ContainerSetContentPacket();
$pk->setChannel(Network::CHANNEL_WORLD_EVENTS);
$pk->slots = [];
for($i = 0; $i < $this->getSize(); ++$i){ //Do not send armor by error here
$pk->slots[$i] = $this->getItem($i);
@ -447,6 +449,7 @@ class PlayerInventory extends BaseInventory{
}
$pk = new ContainerSetSlotPacket();
$pk->setChannel(Network::CHANNEL_WORLD_EVENTS);
$pk->slot = $index;
$pk->item = clone $this->getItem($index);