/**
  * @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;
 }
Exemple #2
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);
     }
 }
Exemple #3
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;
             }
         }
     }
 }
Exemple #4
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;
 }