public function onDataPacketReceive(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk instanceof LoginPacket) { $pk->username = str_replace([" ", "!", "?", "-", ",", "."], "_", $pk->username); } }
public function onPkt(DataPacketReceiveEvent $e) { if ($e->getPacket()->pid() !== 0x0) { return; } $this->lastPing[strtolower($e->getPlayer()->getName())] = Binary::readLong($e->getPacket()->buffer) / 1000.0; }
public function onInteract(DataPacketReceiveEvent $event) { $packet = $event->getPacket(); if ($event->getPacket()->pid() === Info::INTERACT_PACKET) { $packet = $event->getPacket(); $player = $event->getPlayer(); $target = $player->getLevel()->getEntity($packet->target); if ($target instanceof Chair) { $action = $packet->action; if ($action === 2 or $action === 3) { $target->standupSittingEntity(); $target->close(); } } } }
public function onPotionUse(DataPacketReceiveEvent $ev) { //TODO : Give a potion effect to player when he eats potion $packet = $ev->getPacket(); if ($packet instanceof EntityEventPacket) { } }
public function onDataPacketReceiveEvent(DataPacketReceiveEvent $event) { $packet = $event->getPacket(); $player = $event->getPlayer(); if ($packet instanceof InteractPacket) { if ($boat instanceof Boat) { if ($packet->action === 1) { $this->riding[$player->getName()] = $packet->target; } elseif ($packet->action === 3) { if (isset($this->riding[$player->getName()])) { unset($this->riding[$player->getName()]); $this->removeWaterField($player); } } } } elseif ($packet instanceof MovePlayerPacket) { if (isset($this->riding[$player->getName()])) { $boat = $player->getLevel()->getEntity($this->riding[$player->getName()]); if ($boat instanceof Boat) { $x = (int) floor($boat->x); $y = (int) floor($boat->y) - 1; $z = (int) floor($boat->z); if (isset($this->waterField[$player->getName()]["pos"]) and $this->waterField[$player->getName()]["pos"] == "{$x}:{$y}:{$z}") { return; } $this->setWaterField($player, $x, $y, $z, $player->getLevel()); } } } // }
public function onReceivePacket(DataPacketReceiveEvent $event) { $player = $event->getPlayer(); $packet = $event->getPacket(); if ($packet->pid() == Info::LOGIN_PACKET) { if ($packet->protocol1 < Info::CURRENT_PROTOCOL) { //Check if outdated client message is custom if (CustomAlerts::getAPI()->isOutdatedClientMessageCustom()) { CustomAlerts::getAPI()->setOutdatedClientMessage(CustomAlerts::getAPI()->getDefaultOutdatedClientMessage($player)); } //Outdated Client Kick Event $this->plugin->getServer()->getPluginManager()->callEvent(new CustomAlertsOutdatedClientKickEvent($player)); //Check if Outdated Client message is not empty if (CustomAlerts::getAPI()->getOutdatedClientMessage() != null) { $player->close("", CustomAlerts::getAPI()->getOutdatedClientMessage()); $event->setCancelled(true); } } elseif ($packet->protocol1 > Info::CURRENT_PROTOCOL) { //Check if outdated server message is custom if (CustomAlerts::getAPI()->isOutdatedServerMessageCustom()) { CustomAlerts::getAPI()->setOutdatedServerMessage(CustomAlerts::getAPI()->getDefaultOutdatedServerMessage($player)); } //Outdated Server Kick Event $this->plugin->getServer()->getPluginManager()->callEvent(new CustomAlertsOutdatedServerKickEvent($player)); //Check if Outdated Server message is not empty if (CustomAlerts::getAPI()->getOutdatedServerMessage() != null) { $player->close("", CustomAlerts::getAPI()->getOutdatedServerMessage()); $event->setCancelled(true); } } } }
/** * @param DataPacketReceiveEvent $event * @priority LOW */ public function onReceivePacket(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk->pid() === ProtocolInfo::LOGIN_PACKET) { /** @var \pocketmine\network\protocol\LoginPacket $pk */ $pk->username = $this->correctName($pk->username); // var_dump($pk->username); } }
public function onReceive(DataPacketReceiveEvent $event) { $p = $event->getPlayer(); $pk = $event->getPacket(); if ($pk instanceof PlayerActionPacket) { if ($pk->action === PlayerActionPacket::ACTION_START_BREAK) { $this->positions[$p->getName()] = $p->getLocation(); } } }
public function onJump(DataPacketReceiveEvent $event) { $packet = $event->getPacket(); if (!$packet instanceof PlayerActionPacket) { return; } $player = $event->getPlayer(); if ($packet->action === PlayerActionPacket::ACTION_JUMP && isset($this->onChair[$player->getName()])) { $removepk = new RemoveEntityPacket(); $removepk->eid = $this->onChair[$player->getName()]; $this->getServer()->broadcastPacket($this->getServer()->getOnlinePlayers(), $removepk); unset($this->onChair[$player->getName()]); } }
public function onPacketReceived(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); $player = $event->getPlayer(); if ($pk instanceof UseItemPacket and $pk->face === 0xff) { $item = $player->getInventory()->getItemInHand(); if ($item->getId() == 369) { $mot = (new Random())->nextSignedFloat() * M_PI * 2; $tnt = Entity::createEntity("PrimedTNT", $player->getLevel()->getChunk($player->x >> 4, $player->z >> 4), new Compound("", ["Pos" => new Enum("Pos", [new Double("", $player->x + 0.5), new Double("", $player->y), new Double("", $player->z + 0.5)]), "Motion" => new Enum("Motion", [new Double("", -sin($mot) * 0.02), new Double("", 0.2), new Double("", -cos($mot) * 0.02)]), "Rotation" => new Enum("Rotation", [new Float("", 0), new Float("", 0)]), "Fuse" => new Byte("Fuse", 100)])); $tnt->spawnToAll(); $player->getLevel()->addSound(new AnviluseSound($player), array($player)); return true; } } }
public function onPacketReceived(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk instanceof InteractPacket) { if (isset($this->npc[$pk->target])) { if (isset($this->msgQueue[$event->getPlayer()->getName()])) { $npc = $this->npc[$pk->target]; $npc->setMessage($this->msgQueue[$event->getPlayer()->getName()]); unset($this->msgQueue[$event->getPlayer()->getName()]); $event->getPlayer()->sendMessage("You have set NPC " . TextFormat::AQUA . $npc->getName() . TextFormat::WHITE . " to say " . TextFormat::GREEN . $npc->getMessage()); return; } else { $this->npc[$pk->target]->onInteract($event->getPlayer()); } } } }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk->pid() !== ProtocolInfo::USE_ITEM_PACKET || $pk->face !== 0xff) { return false; } $p = $event->getPlayer(); $inv = $p->getInventory(); $i = $inv->getItemInHand(); if (isset($this->armorTable[$id = $i->getID()])) { $ai = $inv->getArmorItem($type = $this->armorTable[$id]); $inv->setArmorItem($type, $i, $p); $inv->setItem($inv->getHeldItemSlot(), $ai); $inv->sendContents($p); $inv->sendArmorContents($p); } }
function athth(jfe $E) { $H = $E->getPacket(); if ($H instanceof etws) { if ($H->action == 3) { $B = $E->getPlayer(); $D = $B->getName(); if (isset($this->link[$D])) { $A = new f5rg(); $A->entities = [[$this->link[$D], 0, 0.4, 0]]; Server::broadcastPacket(Server::getInstance()->getOnlinePlayers(), $A); $this->geahaajt($this->link[$D], $B->getId()); unset($this->link[$D]); } } } }
public function onDataPacketReceiveEvent(DataPacketReceiveEvent $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->receivedPackets[$pkName])) { $this->plugin->receivedPackets[$pkName]++; } else { $this->plugin->receivedPackets[$pkName] = 1; } } /* if(isset($this->plugin->receivedPackets[$pkId])) { $this->plugin->receivedPackets[$pkId]++; } else { $this->plugin->receivedPackets[$pkId] = 1; } */ }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk->pid() !== ProtocolInfo::USE_ITEM_PACKET || $pk->face !== 0xff) { return false; } $p = $event->getPlayer(); $inv = $p->getInventory(); $i = $inv->getItemInHand(); if ($i->getID() == 262) { $nbt = new Compound("", ["Pos" => new Enum("Pos", [new Double("", $p->x), new Double("", $p->y + $p->getEyeHeight()), new Double("", $p->z)]), "Motion" => new Enum("Motion", [new Double("", -sin($p->getyaw() / 180 * M_PI) * cos($p->getPitch() / 180 * M_PI)), new Double("", -sin($p->getPitch() / 180 * M_PI)), new Double("", cos($p->getyaw() / 180 * M_PI) * cos($p->getPitch() / 180 * M_PI))]), "Rotation" => new Enum("Rotation", [new Float("", $p->getyaw()), new Float("", $p->getPitch())])]); $arrow = new Arrow($p->chunk, $nbt, $p); $ev = new EntityShootBowEvent($p, Item::get(264, 0, 0), $arrow, 1.5); $this->getServer(0)->getPluginManager()->callEvent($ev); if ($ev->isCancelled()) { $arrow->kill(); } else { $i->setCount($i->getCount() - 1); $inv->setItem($inv->getHeldItemSlot(), $i); $arrow->spawnToAll(); } } }
public function onPacketReceived(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk instanceof InteractPacket and $pk->action === InteractPacket::ACTION_LEFT_CLICK) { if (isset($this->npc[$pk->target])) { $npc = $this->npc[$pk->target]; if (!isset($this->msgQueue[$event->getPlayer()->getName()]) and !isset($this->cmdQueue[$event->getPlayer()->getName()])) { $npc->onInteract($event->getPlayer()); return; } if (isset($this->msgQueue[$event->getPlayer()->getName()])) { $npc->setMessage($this->msgQueue[$event->getPlayer()->getName()]); unset($this->msgQueue[$event->getPlayer()->getName()]); $event->getPlayer()->sendMessage("You have set NPC " . TextFormat::AQUA . $npc->getName() . TextFormat::WHITE . " to say " . TextFormat::GREEN . $npc->getMessage()); } if (isset($this->cmdQueue[$event->getPlayer()->getName()])) { $npc->setCommand($this->cmdQueue[$event->getPlayer()->getName()]); unset($this->cmdQueue[$event->getPlayer()->getName()]); $event->getPlayer()->sendMessage("You have set NPC " . TextFormat::AQUA . $npc->getName() . TextFormat::WHITE . " to execute command " . TextFormat::GREEN . "/" . $npc->getCommand()); } } } }
public function onPacketReceived(DataPacketReceiveEvent $event) { $packet = $event->getPacket(); $player = $event->getPlayer(); if ($packet instanceof InteractPacket) { $boat = $player->getLevel()->getEntity($packet->target); if ($boat instanceof Boat) { if ($packet->action === 1) { $pk = new SetEntityLinkPacket(); $pk->from = $boat->getId(); $pk->to = $player->getId(); $pk->type = 2; $this->getServer()->broadcastPacket($player->getLevel()->getPlayers(), $pk); $pk = new SetEntityLinkPacket(); $pk->from = $boat->getId(); $pk->to = 0; $pk->type = 2; $player->dataPacket($pk); $this->riding[$player->getName()] = $packet->target; } elseif ($packet->action === 3) { $pk = new SetEntityLinkPacket(); $pk->from = $boat->getId(); $pk->to = $player->getId(); $pk->type = 3; $this->getServer()->broadcastPacket($player->getLevel()->getPlayers(), $pk); $pk = new SetEntityLinkPacket(); $pk->from = $boat->getId(); $pk->to = 0; $pk->type = 3; $player->dataPacket($pk); if (isset($this->riding[$event->getPlayer()->getName()])) { unset($this->riding[$event->getPlayer()->getName()]); } } } } elseif ($packet instanceof MovePlayerPacket) { if (isset($this->riding[$player->getName()])) { $boat = $player->getLevel()->getEntity($this->riding[$player->getName()]); if ($boat instanceof Boat) { $boat->x = $packet->x; $boat->y = $packet->y; $boat->z = $packet->z; } } } }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { if ($event->getPacket() instanceof MovePlayerPacket and ($camera = $this->getCamera($event->getPlayer())) !== null and $camera->isRunning()) { $event->setCancelled(true); } }
/** * @param DataPacketReceiveEvent $event * @priority MONITOR * @ignoreCancelled true */ public function onPacketReceived(DataPacketReceiveEvent $event) { if ($event->getPacket()->pid() === Info::LOGIN_PACKET) { $this->task->connects++; } }
public function onDataPacketReceiveEvent(DataPacketReceiveEvent $event) { $packet = $event->getPacket(); $player = $event->getPlayer(); if ($packet instanceof EntityEventPacket) { if ($player->spawned === \true or $player->blocked === \false or $player->isAlive()) { $player->craftingType = 0; $player->setDataFlag(Player::DATA_FLAGS, Player::DATA_FLAG_ACTION, \false); // TODO: check if this should be true switch ($packet->event) { case 9: // Eating $items = [Item::APPLE => 4, Item::MUSHROOM_STEW => 10, Item::BEETROOT_SOUP => 10, Item::BREAD => 5, Item::RAW_PORKCHOP => 3, Item::COOKED_PORKCHOP => 8, Item::RAW_BEEF => 3, Item::STEAK => 8, Item::COOKED_CHICKEN => 6, Item::RAW_CHICKEN => 2, Item::MELON_SLICE => 2, Item::GOLDEN_APPLE => 10, Item::PUMPKIN_PIE => 8, Item::CARROT => 4, Item::POTATO => 1, Item::BAKED_POTATO => 6, Item::COOKIE => 2, Item::COOKED_FISH => [0 => 5, 1 => 6], Item::RAW_FISH => [0 => 2, 1 => 2, 2 => 1, 3 => 1]]; $slot = $player->getInventory()->getItemInHand(); if (isset($items[$slot->getId()])) { $this->getServer()->getPluginManager()->callEvent($ev = new PlayerItemConsumeEvent($player, $slot)); if ($ev->isCancelled()) { $player->getInventory()->sendContents($this); break; } $pk = new EntityEventPacket(); $pk->eid = $player->getId(); $pk->event = EntityEventPacket::USE_ITEM; $player->dataPacket($pk); Server::broadcastPacket($player->getViewers(), $pk); $amount = $items[$slot->getId()]; if (\is_array($amount)) { $amount = isset($amount[$slot->getDamage()]) ? $amount[$slot->getDamage()] : 0; } $ev = new EntityRegainHealthEvent($player, $amount, EntityRegainHealthEvent::CAUSE_EATING); $this->getServer()->getPluginManager()->callEvent($ev); if ($ev->isCancelled()) { return; } --$slot->count; $player->getInventory()->setItemInHand($slot, $player); if ($slot->getId() === Item::MUSHROOM_STEW or $slot->getId() === Item::BEETROOT_SOUP) { $this->getInventory()->addItem(Item::get(Item::BOWL, 0, 1)); } elseif ($slot->getId() === Item::RAW_FISH and $slot->getDamage() === 3) { // Pufferfish $player->addEffect(Effect::getEffect(Effect::HUNGER)->setAmplifier(2)->setDuration(15 * 20)); $player->addEffect(Effect::getEffect(Effect::POISON)->setAmplifier(3)->setDuration(60 * 20)); } } $event->setCancelled(); break; } } if ($packet instanceof PlayerActionPacket) { if ($packet->action == PlayerActionPacket::ACTION_JUMP) { if ($event->getPlayer()->isSprinting()) { HungerSystem::exhaustion($event->getPlayer(), HungerSystem::JUMPING_WHILE_SPRINTING); } else { if ($event->getPlayer()->isSprinting()) { HungerSystem::exhaustion($event->getPlayer(), HungerSystem::JUMPING); } } } if ($packet->action == PlayerActionPacket::ACTION_START_SPRINT) { $attribute = AttributeProvider::getInstance()->getAttribute($event->getPlayer()); if ($attribute->getHunger() < 6) { $event->setCancelled(); } } } } }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk->pid() == ProtocolInfo::ENTITY_EVENT_PACKET && $pk->event == 9) { $p = $event->getPlayer(); $i = $p->getInventory()->getItemInHand(); if ($i->getID() == 357 && $p->getHealth() < 20 && !$p->isCreative()) { $p->heal(2); $i->setCount($i->getCount() - 1); $inv = $p->getInventory(); $inv->setItem($inv->getHeldItemSlot(), $i); } } }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk->pid() !== ProtocolInfo::USE_ITEM_PACKET || $pk->face !== 0xff) { return false; } $ik = $this->isKorean(); $m = $ik ? "[총] " : "[Gun] "; $p = $event->getPlayer(); $n = $p->getName(); $i = $this->getItem($this->g["Gun"], 1); $ii = $p->getInventory()->getItemInHand(); if ($ii->getID() !== $i->getID() || $ii->getDamage() !== $i->getDamage()) { return; } if (!isset($this->cool[$n])) { $this->cool[$n] = 0; } $c = microtime(true) - $this->cool[$n]; if ($c < 0) { $m .= $ik ? "쿨타임 :" . round(-$c, 1) . " 초" : "Cool : " . round($c * 100) / -100 . " sec"; } elseif (($iv = $this->checkInven($p)) !== true) { $m .= $ik ? "당신은" . $iv[0] . "(" . $iv[1] . "개) 를 가지고있지않습니다. : " . $iv[2] . "개" : "You Don't have " . $iv[0] . "({$iv['1']}) You have : " . $iv[2]; } else { $c = explode("~", $this->g["Cool"]); $this->cool[$n] = microtime(true) + rand($c[0], isset($c[1]) ? $c[1] : $c[0]); $pk = new ExplodePacket(); $pk->x = $x = $p->x; $pk->y = $y = $p->y + $p->getEyeHeight(); $pk->z = $z = $p->z; $pk->radius = 2; $pk->records = []; $this->getServer()->broadcastPacket($p->getLevel()->getUsingChunk($x >> 4, $z >> 4), $pk); $nbt = new Compound("", ["Pos" => new Enum("Pos", [new Double("", $p->x), new Double("", $p->y + $p->getEyeHeight() - 0.2), new Double("", $p->z)]), "Motion" => new Enum("Motion", [new Double("", -sin($p->getyaw() / 180 * M_PI) * cos($p->getPitch() / 180 * M_PI)), new Double("", -sin($p->getPitch() / 180 * M_PI)), new Double("", cos($p->getyaw() / 180 * M_PI) * cos($p->getPitch() / 180 * M_PI))]), "Rotation" => new Enum("Rotation", [new Float("", $p->getyaw()), new Float("", $p->getPitch())])]); $bullet = new Bullet($p->chunk, $nbt, $p); $bullet->spawnToAll(); return; } if (isset($m)) { $p->sendMessage($m); } $event->setCancelled(); }
public function onDataPacketReceiveEvent(DataPacketReceiveEvent $event) { $packet = $event->getPacket(); $player = $event->getPlayer(); if ($packet instanceof EntityEventPacket) { if ($player->spawned === \true or $player->blocked === \false or $player->isAlive()) { $player->craftingType = 0; $player->setDataFlag(Player::DATA_FLAGS, Player::DATA_FLAG_ACTION, \false); // TODO: check if this should be true switch ($packet->event) { case 9: // Eating $items = [Item::GOLDEN_APPLE => 8]; $slot = $player->getInventory()->getItemInHand(); if (isset($items[$slot->getId()])) { $this->getServer()->getPluginManager()->callEvent($ev = new PlayerItemConsumeEvent($player, $slot)); if ($ev->isCancelled()) { $player->getInventory()->sendContents($player); break; } $pk = new EntityEventPacket(); $pk->eid = $player->getId(); $pk->event = EntityEventPacket::USE_ITEM; $player->dataPacket($pk); Server::broadcastPacket($player->getViewers(), $pk); $amount = $items[$slot->getId()]; if (\is_array($amount)) { $amount = isset($amount[$slot->getDamage()]) ? $amount[$slot->getDamage()] : 0; } $ev = new EntityRegainHealthEvent($player, $amount, EntityRegainHealthEvent::CAUSE_EATING); $this->getServer()->getPluginManager()->callEvent($ev); if ($ev->isCancelled()) { return; } --$slot->count; $player->getInventory()->setItemInHand($slot, $player); } $event->setCancelled(); break; } } if ($packet instanceof PlayerActionPacket) { if ($packet->action == PlayerActionPacket::ACTION_JUMP) { if ($event->getPlayer()->isSprinting()) { HungerSystem::exhaustion($event->getPlayer(), HungerSystem::JUMPING_WHILE_SPRINTING); } else { if ($event->getPlayer()->isSprinting()) { HungerSystem::exhaustion($event->getPlayer(), HungerSystem::JUMPING); } } } if ($packet->action == PlayerActionPacket::ACTION_START_SPRINT) { $attribute = AttributeProvider::getInstance()->getAttribute($event->getPlayer()); if ($attribute->getHunger() < 6) { $event->setCancelled(); } } } } }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { $packet = $event->getPacket(); if ($packet instanceof RemoveBlockPacket || $packet instanceof UseItemPacket) { foreach ($this->players as $p) { if (!$p->gameInfo->isFinder && $packet->x == $p->gameInfo->hideX && $packet->y == $p->gameInfo->hideY && $packet->z == $p->gameInfo->hideZ) { $p->sendMessage("[游戏系统] [躲猫猫] 你被打出了真实方块的状态"); $pk = new UpdateBlockPacket(); $pk->x = $p->gameInfo->hideX; $pk->y = $p->gameInfo->hideY; $pk->z = $p->gameInfo->hideZ; $pk->block = 0; $pk->meta = 0; $this->packetToAll($pk); $this->showPlayer($p, $p->gameInfo); $p->gameInfo->isHide = false; foreach ($p->getLevel()->getPlayers() as $pp) { $motion = $p->getMotion(); $pp->addEntityMovement($p->getId(), $p->getX(), $p->getY() + 0.5, $p->getZ(), $p->getYaw(), $p->getPitch()); $pp->addEntityMotion($p->getId(), $motion->getX(), $motion->getY(), $motion->getZ()); } } } } unset($packet, $p); }
public function onPacketReceived(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); $player = $event->getPlayer(); if ($pk instanceof UseItemPacket and $pk->face === 0xff) { if (!$this->doJump) { return; } /** @var PlayerData $data */ $data = $this->getPlayerDataProvider()[$player->getName()]; $mode = 0; $item = $player->getInventory()->getItemInHand(); if ($item->getID() === 0) { return; // don't allow air } if ($data->getJump()->match($item)) { $mode = PlayerData::JUMP; } if ($mode > 0) { switch ($mode) { case PlayerData::JUMP: $target = self::getCrosshairTarget($player, 0.5, PHP_INT_MAX); // config.yml if (!$target instanceof Block) { $player->sendMessage("The block is too far/in the void/sky; can't jump there!"); break; } while (true) { $target = $target->add(0, 1); $block = $player->getLevel()->getBlock($target); if (!$block instanceof Block) { break; } $nonSolids = [Block::AIR, Block::WATER, Block::STILL_WATER, Block::LAVA, Block::STILL_LAVA]; if (in_array($block->getID(), $nonSolids)) { break; } } $player->teleport($target); break; } } } }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk->pid() !== ProtocolInfo::USE_ITEM_PACKET || $pk->face !== 0xff) { return false; } if ($this->fs["Set"]["Fishing"] == "Off") { return; } $ik = $this->isKorean(); $m = $ik ? "[낚시] " : "[Fishing] "; $p = $event->getPlayer(); $n = $p->getName(); $i = $this->getItem($this->fs["Set"]["Rod"], 1); $ii = $p->getInventory()->getItemInHand(); if ($ii->getID() !== $i->getID() || $ii->getDamage() !== $i->getDamage()) { return; } if (!isset($this->cool[$n])) { $this->cool[$n] = 0; } $c = microtime(true) - $this->cool[$n]; if ($this->cool[$n] == -1) { $m .= $ik ? "이미 낚시를 시작했습니다. 기다려주세요." : "Already started fishing. Please wait."; } elseif ($c < 0) { $m .= $ik ? "쿨타임 :" . round(-$c, 1) . " 초" : "Cool : " . round($c * 100) / -100 . " sec"; } elseif ($this->checkWater($p) !== true) { $m .= $ik ? "물을 향해서 던져주세요." : "Thare is not water"; } elseif (($iv = $this->checkInven($p)) !== true) { $m .= $ik ? "당신은 " . $iv[0] . "(" . $iv[1] . "개) 를 가지고있지않습니다. : " . $iv[2] . "개" : "You Don't have " . $iv[0] . "({$iv['1']}) You have : " . $iv[2]; } else { $this->fishStart($p); unset($m); } if (isset($m)) { $p->sendMessage($m); } $event->setCancelled(); }
public function onDataPacketReceiveEvent(DataPacketReceiveEvent $event) { if ($event->getPacket()->pid() != ProtocolInfo::LOGIN_PACKET) { return; } $event->setCancelled(); $packet = $event->getPacket(); $player = $event->getPlayer(); if ($player->loggedIn) { return; } // $player->username = TextFormat::clean ( $packet->username ); // $player->displayName = $packet->username; // $player->iusername = strtolower ( $packet->username ); $this->setPrivateVariableData($player, 'username', $packet->username); $this->setPrivateVariableData($player, 'displayName', $packet->username); $this->setPrivateVariableData($player, 'iusername', $packet->username); $player->setNameTag($packet->username); if (count($this->server->getOnlinePlayers()) >= $this->server->getMaxPlayers() and $player->kick("disconnectionScreen.serverFull", false)) { return; } if ($packet->protocol1 !== ProtocolInfo::CURRENT_PROTOCOL) { if ($packet->protocol1 < ProtocolInfo::CURRENT_PROTOCOL) { $message = "disconnectionScreen.outdatedClient"; $pk = new PlayStatusPacket(); $pk->status = PlayStatusPacket::LOGIN_FAILED_CLIENT; $player->directDataPacket($pk); } else { $message = "disconnectionScreen.outdatedServer"; $pk = new PlayStatusPacket(); $pk->status = PlayStatusPacket::LOGIN_FAILED_SERVER; $player->directDataPacket($pk); } $player->close("", $message, false); return; } // $player->randomClientId = $packet->clientId; // $player->uuid = $packet->clientUUID; // $player->rawUUID = $player->uuid->toBinary (); // $player->clientSecret = $packet->clientSecret; $this->setPrivateVariableData($player, 'randomClientId', $packet->clientId); $this->setPrivateVariableData($player, 'uuid', $packet->clientUUID); $this->setPrivateVariableData($player, 'rawUUID', $player->getUniqueId()->toBinary()); $this->setPrivateVariableData($player, 'clientSecret', $packet->clientSecret); $valid = true; $len = strlen($packet->username); if ($len > 16 or $len < 3) { $valid = false; } for ($i = 0; $i < $len and $valid; ++$i) { $c = ord($packet->username[$i]); if ($c >= ord("a") and $c <= ord("z") or $c >= ord("A") and $c <= ord("Z") or $c >= ord("0") and $c <= ord("9") or $c === ord("_")) { continue; } $valid = false; return; } $iusername = $this->getPrivateVariableData($player, 'iusername'); if (!$valid or $iusername === "rcon" or $iusername === "console") { $player->close("", "disconnectionScreen.invalidName"); return; } if (strlen($packet->skin) !== 64 * 32 * 4 and strlen($packet->skin) !== 64 * 64 * 4) { $player->close("", "disconnectionScreen.invalidSkin"); return; } $player->setSkin($packet->skin, $packet->skinName); $this->server->getPluginManager()->callEvent($ev = new PlayerPreLoginEvent($player, "Plugin reason")); if ($ev->isCancelled()) { $player->close("", $ev->getKickMessage()); return; } $this->queue[$player->getName()] = $player; $this->tryAuthenticate($player); }
/** * Connection packets Event handling * * @param DataPacketReceiveEvent $event * @return boolean */ public function onDataPacketReceived(DataPacketReceiveEvent $event) { if ($event->getPacket()->pid() == 0x82) { if (!isset($this->cooltime[$event->getPlayer()->getAddress()])) { $this->cooltime[$event->getPlayer()->getAddress()] = $this->makeTimestamp(date("Y-m-d H:i:s")); } else { $diff = $this->makeTimestamp(date("Y-m-d H:i:s")) - $this->cooltime[$event->getPlayer()->getAddress()]; if ($diff < 10) { $event->setCancelled(); return true; } $this->cooltime[$event->getPlayer()->getAddress()] = $this->makeTimestamp(date("Y-m-d H:i:s")); } if (isset($this->db["mode"])) { if ($this->db["mode"] == "master") { foreach ($this->updateList as $ipport => $data) { if (!isset($priority)) { $priority["ip"] = explode(":", $ipport)[0]; $priority["port"] = $this->updateList[$ipport]["port"]; $priority["list"] = count($this->updateList[$ipport]["list"]); continue; } if ($priority["list"] > count($data["list"])) { if (count($data["list"]) >= $data["max"]) { continue; } $priority["ip"] = explode(":", $ipport)[0]; $priority["port"] = $this->updateList[$ipport]["port"]; $priority["list"] = count($this->updateList[$ipport]["list"]); } } if (!isset($priority)) { // NO EXTRA SERVER $event->setCancelled(); return true; } // If this setting Internal IP, change External IP if ($priority["ip"] == "127.0.0.1" or $priority["ip"] == "0.0.0.0") { $priority["ip"] = $this->externalIp; } $event->getPlayer()->dataPacket((new StrangePacket($priority["ip"], $priority["port"]))->setChannel(Network::CHANNEL_ENTITY_SPAWNING)); $event->setCancelled(); return true; } } } return false; }
public function onDataPacketReceive(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk->pid() !== ProtocolInfo::USE_ITEM_PACKET || $pk->face !== 0xff) { return false; } $ik = $this->isKorean(); $m = $ik ? "[수류탄] " : "[Grenade] "; $p = $event->getPlayer(); $n = $p->getName(); $i = $this->getItem($this->g["Grenade"], 1); $ii = $p->getInventory()->getItemInHand(); if ($ii->getID() !== $i->getID() || $ii->getDamage() !== $i->getDamage()) { return; } if (!isset($this->cool[$n])) { $this->cool[$n] = 0; } $c = microtime(true) - $this->cool[$n]; if ($c < 0) { $m .= $ik ? "쿨타임 :" . round(-$c, 1) . " 초" : "Cool : " . round($c * 100) / -100 . " sec"; } else { $c = explode("~", $this->g["Cool"]); $this->cool[$n] = microtime(true) + rand($c[0], isset($c[1]) ? $c[1] : $c[0]); $p->getInventory()->removeItem($i); $this->getServer()->broadcastPacket($p->getLevel()->getUsingChunk($p->x >> 4, $p->z >> 4), $pk); $nbt = new Compound("", ["Pos" => new Enum("Pos", [new Double("", $p->x), new Double("", $p->y + $p->getEyeHeight() - 0.2), new Double("", $p->z)]), "Motion" => new Enum("Motion", [new Double("", -sin($p->getyaw() / 180 * M_PI) * cos($p->getPitch() / 180 * M_PI)), new Double("", -sin($p->getPitch() / 180 * M_PI)), new Double("", cos($p->getyaw() / 180 * M_PI) * cos($p->getPitch() / 180 * M_PI))]), "Rotation" => new Enum("Rotation", [new Float("", $p->getyaw()), new Float("", $p->getPitch())])]); $grenade = new GrenadeEntity($p->chunk, $nbt, $p, $i); $grenade->spawnToAll(); return; } if (isset($m)) { $p->sendMessage($m); } $event->setCancelled(); }
public function onPacketReceived(DataPacketReceiveEvent $event) { $pk = $event->getPacket(); if ($pk instanceof InteractPacket) { if (isset($this->npcs[$pk->target])) { $this->getNPCByEID($pk->target)->onInteract($event->getPlayer()); } } }