mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-07 18:32:55 +00:00
Implemented Channeled packet sending
This commit is contained in:
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user