Inheritance: extends ServerEvent, implements pocketmine\event\Cancellable
Example #1
0
 public function onSend(DataPacketSendEvent $ev)
 {
     $pk = $ev->getPacket();
     if ($pk instanceof PlayerArmorEquipmentPacket) {
         echo get_class($pk) . "\n";
         print_r($pk);
         return;
     }
     if ($pk instanceof ContainerSetContentPacket) {
         echo get_class($pk) . "\n";
         print_r($pk);
         return;
     }
     if ($pk instanceof ContainerSetSlotPacket) {
         echo get_class($pk) . "\n";
         print_r($pk);
         return;
     }
     if ($pk instanceof PlayerArmorEquipmentPacket) {
         echo get_class($pk) . "\n";
         print_r($pk);
         return;
     }
     if ($pk instanceof PlayerEquipmentPacket) {
         echo get_class($pk) . "\n";
         print_r($pk);
         return;
     }
 }
Example #2
0
 public function onDataPacketSend(DataPacketSendEvent $event)
 {
     if ($event->getPacket() instanceof AddPlayerPacket) {
         /** @var $pk AddPlayerPacket */
         $pk = $event->getPacket();
         if (isset($this->blockMans[spl_object_hash($event->getPlayer()->getLevel()->getEntity($pk->eid))])) {
             $event->setCancelled(true);
         }
     }
 }
Example #3
0
 public function onSendPack(DataPacketSendEvent $event)
 {
     $pk = $event->getPacket();
     if (!$pk instanceof MessagePacket) {
         return;
     }
     $p = $event->getPlayer();
     if ($pk->source === "chatlinebreaker.ignore") {
         return;
     }
     if (!$this->isPEnable($p->getName())) {
         return;
     }
     $event->setCancelled();
     $msg = $pk->message;
     if ($pk->source) {
         $msg = "<{$pk->source}> {$msg}";
     }
     $this->processMessage($p, $msg);
 }
Example #4
0
 public function onDataPacketSendEvent(DataPacketSendEvent $event)
 {
     if ($this->plugin->trackingOn) {
         $packet = $event->getPacket();
         //$pkId = $packet->pid();
         $class_path_ar = explode('\\', get_class($packet));
         $pkName = end($class_path_ar);
         if (isset($this->plugin->sentPackets[$pkName])) {
             $this->plugin->sentPackets[$pkName]++;
         } else {
             $this->plugin->sentPackets[$pkName] = 1;
         }
     }
     /*
     
     if(isset($this->plugin->sentPackets[$pkId])) {
         $this->plugin->sentPackets[$pkId]++;
     } else {
         $this->plugin->sentPackets[$pkId] = 1;
     }
     */
 }
 public function onDataPacketSend(DataPacketSendEvent $event)
 {
     $pk = $event->getPacket();
     $pk->pid();
 }
Example #6
0
 /**
  * @param DataPacket $packet
  * @param bool       $needACK
  *
  * @return bool|int
  */
 public function directDataPacket(DataPacket $packet, $needACK = false)
 {
     if ($this->connected === false) {
         return false;
     }
     $timings = Timings::getSendDataPacketTimings($packet);
     $timings->startTiming();
     $this->server->getPluginManager()->callEvent($ev = new DataPacketSendEvent($this, $packet));
     if ($ev->isCancelled()) {
         $timings->stopTiming();
         return false;
     }
     $identifier = $this->interface->putPacket($this, $packet, $needACK, true);
     if ($needACK and $identifier !== null) {
         $this->needACK[$identifier] = false;
         $timings->stopTiming();
         return $identifier;
     }
     $timings->stopTiming();
     return true;
 }
Example #7
0
 public function onSendPacket(DataPacketSendEvent $ev)
 {
     if ($ev->getPacket()->pid() !== ProtocolInfo::FULL_CHUNK_DATA_PACKET) {
         return;
     }
     // Re-spawn as chunks get sent...
     $pl = $ev->getPlayer();
     $level = $pl->getLevel();
     if (!isset($this->cases[$level->getName()])) {
         return;
     }
     $chunkX = $ev->getPacket()->chunkX;
     $chunkZ = $ev->getPacket()->chunkZ;
     foreach (array_keys($this->cases[$level->getName()]) as $cid) {
         $pos = explode(":", $cid);
         if ($pos[0] >> 4 == $chunkX && $pos[2] >> 4 == $chunkZ) {
             //echo "Respawn case... $cid\n"; //##DEBUG
             $this->sndItemCase($level, $cid, [$pl]);
         }
     }
 }
Example #8
0
 public function onDataPacketSendEvent(DataPacketSendEvent $event)
 {
     $pk = $event->getPacket();
     if ($pk instanceof SetHealthPacket) {
         $attribute = Attribute::getAttribute(Attribute::MAX_HEALTH);
         $attributeData = AttributeProvider::getInstance()->getAttribute($event->getPlayer());
         $attribute->setMinValue(0);
         $attribute->setMaxValue($attributeData->getMaxHealth());
         if ($pk->health > $attributeData->getMaxHealth()) {
             $pk->health = $attributeData->getMaxHealth();
         }
         $attribute->setValue($pk->health);
         $attributePacket = new UpdateAttributesPacket();
         $attributePacket->entityId = 0;
         $attributePacket->entries = [$attribute];
         $event->setCancelled();
         $event->getPlayer()->dataPacket($attributePacket);
     }
 }
Example #9
0
 public function onSend(DataPacketSendEvent $event)
 {
     $player = $event->getPlayer();
     $user = $this->main->getUserByPlayer($player);
     $pk = $event->getPacket();
     if ($pk::NETWORK_ID === Info::CONTAINER_SET_CONTENT_PACKET) {
         /** @var ContainerSetContentPacket $pk */
         if ($user !== null and $user->isPlaying()) {
             return;
         }
         if ($player->isSurvival()) {
             // survival/adventure
             if ($pk->windowid === ContainerSetContentPacket::SPECIAL_ARMOR or $pk->windowid === ContainerSetContentPacket::SPECIAL_INVENTORY) {
                 $event->setCancelled();
             }
         }
     }
 }
Example #10
0
 public function onDataPacket(DataPacketSendEvent $event)
 {
     if ($event->getPacket() instanceof MessagePacket) {
         if ($event->getPacket()->pid() != 0x85) {
             return;
         }
         if ($event->isCancelled()) {
             return;
         }
         if (isset($this->db[$event->getPlayer()->getName()]["CHAT"])) {
             if ($this->db[$event->getPlayer()->getName()]["CHAT"] == false) {
                 $event->setCancelled();
                 return;
             }
         }
         if (isset($this->db[$event->getPlayer()->getName()]["localCHAT"])) {
             if ($this->db[$event->getPlayer()->getName()]["localCHAT"] == false) {
                 if (isset($this->localChatQueue["Player"])) {
                     if ($this->localChatQueue["Player"] instanceof Player) {
                         if ($this->localChatQueue["Message"] == null) {
                             $this->localChatQueue["Message"] = $event->getPacket()->message;
                         }
                         // 보내는 메시지가 동일할때만
                         if ($this->localChatQueue["Message"] == $event->getPacket()->message) {
                             $dx = abs($event->getPlayer()->x - $this->localChatQueue["Player"]->x);
                             $dy = abs($event->getPlayer()->y - $this->localChatQueue["Player"]->y);
                             $dz = abs($event->getPlayer()->z - $this->localChatQueue["Player"]->z);
                             // 거리가 멀면 패킷보내지않음
                             if ($dx > 25 or $dy > 25 or $dz > 25) {
                                 $event->setCancelled();
                                 return;
                             }
                         }
                     }
                 }
             }
         }
         if (isset($this->db[$event->getPlayer()->getName()]["NameTAG"])) {
             if ($this->db[$event->getPlayer()->getName()]["NameTAG"] == true) {
                 $event->setCancelled();
                 $this->putStack($event->getPlayer()->getName(), $event->getPacket()->message);
                 return;
             }
         }
     }
 }
Example #11
0
 public function onPacketSend(DataPacketSendEvent $event)
 {
     if (isset($event->getPacket()->eid)) {
         if ($this->isDisguised($event->getPacket()->eid) && !$event->getPlayer()->hasPermission("disguiseme.exempt")) {
             if ($event->getPacket() instanceof MovePlayerPacket) {
                 $pk = new MoveEntityPacket();
                 $pk->entities = [[$event->getPacket()->eid, $event->getPacket()->x, $event->getPacket()->y, $event->getPacket()->z, $event->getPacket()->yaw, $event->getPacket()->pitch]];
                 $event->getPlayer()->dataPacket($pk);
                 $event->setCancelled();
             } elseif ($event->getPacket() instanceof AddPlayerPacket) {
                 $pk = new AddEntityPacket();
                 $pk->eid = $event->getPacket()->eid;
                 $pk->type = $this->e[$event->getPacket()->eid]->getType();
                 $pk->x = $event->getPacket()->x;
                 $pk->y = $event->getPacket()->y;
                 $pk->z = $event->getPacket()->z;
                 $pk->pitch = $event->getPacket()->pitch;
                 $pk->yaw = $event->getPacket()->yaw;
                 $pk->metadata = [];
                 $event->getPlayer()->dataPacket($pk);
                 $event->setCancelled();
             } elseif ($event->getPacket() instanceof RemovePlayerPacket) {
                 $pk = new RemoveEntityPacket();
                 $pk->eid = $event->getPacket()->eid;
                 $event->getPlayer()->dataPacket($pk);
                 $event->setCancelled();
             }
         }
     }
 }
Example #12
0
 public function onDataPacket(DataPacketSendEvent $event)
 {
     if (!$event->getPacket() instanceof TextPacket or $event->getPacket()->pid() != 0x85 or $event->isCancelled()) {
         return;
     }
     if (isset($this->db[$event->getPlayer()->getName()]["chat"]) and $this->db[$event->getPlayer()->getName()]["chat"] == false) {
         $event->setCancelled();
         return;
     }
     if (isset($this->db[$event->getPlayer()->getName()]["nametag"]) and $this->db[$event->getPlayer()->getName()]["nametag"] == true) {
         $message = $this->getServer()->getLanguage()->translate(new TranslationContainer($event->getPacket()->message, $event->getPacket()->parameters));
         $this->putStack($event->getPlayer()->getName(), $message);
     }
 }
Example #13
0
 /**
  * @param DataPacket $packet
  * @param bool       $needACK
  *
  * @return bool|int
  */
 public function directDataPacket(DataPacket $packet, $needACK = \false)
 {
     if ($this->connected === \false) {
         return \false;
     }
     $this->server->getPluginManager()->callEvent($ev = new DataPacketSendEvent($this, $packet));
     if ($ev->isCancelled()) {
         return \false;
     }
     $identifier = $this->interface->putPacket($this, $packet, $needACK, \true);
     if ($needACK and $identifier !== \null) {
         $this->needACK[$identifier] = \false;
         return $identifier;
     }
     return \true;
 }
Example #14
0
 public function onDataPacketSend(DataPacketSendEvent $event)
 {
     if ($event->getPacket() instanceof AddPlayerPacket) {
         $pk = $event->getPacket();
         if ($this->playerIsInGame($pk->username) === 2) {
             $event->setCancelled(true);
         }
     }
 }
Example #15
0
 public function onDataPacketSend(DataPacketSendEvent $event)
 {
     $pk = $event->getPacket();
     $p = $event->getPlayer();
     if ($pk instanceof SetHealthPacket) {
         $health = floor($p->getHealth() / $p->getMaxHealth() * 20);
         $pk->health = $p->dead ? 0 : ($health <= 0 && $p->getHealth() > 0 ? 1 : $health);
     }
 }