directDataPacket() public method

public directDataPacket ( DataPacket $packet, boolean $needACK = false ) : boolean | integer
$packet pocketmine\network\protocol\DataPacket
$needACK boolean
return boolean | integer
Ejemplo n.º 1
0
 public static function openChest(Block $chest, Player $player)
 {
     if ($chest->getId() === Item::CHEST) {
         if ($player->gamemode === Player::CREATIVE) {
             $player->sendMessage("[HG] You are in creative Mode");
             return;
         }
         if (!$player->isOp()) {
             $pk = new ContainerOpenPacket();
             $pk->windowid = $player->getWindowId($player->getInventory());
             $pk->type = InventoryType::CHEST;
             $pk->slots = $player->getInventory()->getSize();
             $pk->x = $chest->x;
             $pk->y = $chest->y;
             $pk->z = $chest->z;
             $pk->encode();
             $player->directDataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
             if ($player->getInventory() != null) {
                 $player->getInventory()->sendContents($player);
             }
             $player->sendTip("chest open!");
         }
     }
 }
 public function removeWaterField(Player $player)
 {
     $level = $player->getLevel();
     $pk = new UpdateBlockPacket();
     if (isset($this->waterField[$player->getName()]["pos"])) {
         $pos = explode(":", $this->waterField[$player->getName()]["pos"]);
         $sides = [[1, 1], [1, 0], [1, 1], [0, -1], [0, 0], [0, 1], [-1, -1], [-1, 0], [-1, 0]];
         foreach ($sides as $side) {
             $downId = $level->getBlockIdAt($pos[0] + $side[0], $pos[2], $pos[1] + $side[1]);
             $downDmg = $level->getBlockDataAt($pos[0] + $side[0], $pos[2], $pos[1] + $side[1]);
             $pk->records[] = [$pos[0] + $side[0], $pos[1] + $side[1], $pos[2], $downId, $downDmg, UpdateBlockPacket::FLAG_NONE];
         }
         $player->directDataPacket($pk->setChannel(Network::CHANNEL_BLOCKS));
         unset($this->waterField[$player->getName()]["pos"]);
     }
 }
Ejemplo n.º 3
0
 public function setBlockPacket(Player $player, $x, $y, $z, $block, $meta = 0)
 {
     $this->updatePk->x = $x;
     $this->updatePk->y = $y;
     $this->updatePk->z = $z;
     $this->updatePk->block = $block;
     $this->updatePk->meta = $meta;
     $player->directDataPacket($this->updatePk);
 }
Ejemplo n.º 4
0
 public function spawnPlayer($eid, Player $p, $pos, $userName, $itemId, $slots, $mx = 0, $my = 290, $mz = 0)
 {
     $pk = new AddPlayerPacket();
     $pk->clientID = rand(101, 9999);
     $pk->username = $userName;
     $pk->eid = $eid;
     $pk->x = $pos->x + 0.5;
     $pk->y = $pos->y;
     $pk->z = $pos->z + 0.5;
     $pk->yaw = $p->yaw;
     $pk->pitch = $p->pitch;
     $pk->unknown1 = 0;
     $pk->unknown2 = 0;
     $pk->item = $itemId;
     $pk->meta = 0;
     $pk->metadata = [];
     $pk->skin = $p->getSkinData();
     $pk->encode();
     $p->directDataPacket($pk);
     Server::broadcastPacket($p->getViewers(), $pk);
     $p->addEntityMotion($eid, 0, 290, 0);
     if ($slots != null) {
         $pk = new PlayerArmorEquipmentPacket();
         $pk->eid = $eid;
         $pk->slots = $slots;
         $pk->encode();
         $pk->isEncoded = true;
         $p->directDataPacket($pk);
         Server::broadcastPacket($p->getViewers(), $pk);
     }
 }