本文整理汇总了PHP中pocketmine\event\server\DataPacketSendEvent类的典型用法代码示例。如果您正苦于以下问题:PHP DataPacketSendEvent类的具体用法?PHP DataPacketSendEvent怎么用?PHP DataPacketSendEvent使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DataPacketSendEvent类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onSend
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;
}
}
示例2: onDataPacketSend
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);
}
}
}
示例3: onSendPack
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);
}
示例4: onDataPacketSendEvent
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;
}
*/
}
示例5: onDataPacketSend
public function onDataPacketSend(DataPacketSendEvent $event)
{
$pk = $event->getPacket();
$pk->pid();
}
示例6: directDataPacket
/**
* @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;
}
示例7: onSendPacket
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]);
}
}
}
示例8: onDataPacketSendEvent
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);
}
}
示例9: onSend
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();
}
}
}
}
示例10: onDataPacket
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;
}
}
}
}
示例11: onPacketSend
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();
}
}
}
}
示例12: onDataPacket
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);
}
}
示例13: directDataPacket
/**
* @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;
}
示例14: onDataPacketSend
public function onDataPacketSend(DataPacketSendEvent $event)
{
if ($event->getPacket() instanceof AddPlayerPacket) {
$pk = $event->getPacket();
if ($this->playerIsInGame($pk->username) === 2) {
$event->setCancelled(true);
}
}
}
示例15: onDataPacketSend
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);
}
}