当前位置: 首页>>代码示例>>PHP>>正文


PHP entity\EntityShootBowEvent类代码示例

本文整理汇总了PHP中pocketmine\event\entity\EntityShootBowEvent的典型用法代码示例。如果您正苦于以下问题:PHP EntityShootBowEvent类的具体用法?PHP EntityShootBowEvent怎么用?PHP EntityShootBowEvent使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了EntityShootBowEvent类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: onEntityShootBow

 public function onEntityShootBow(EntityShootBowEvent $event)
 {
     if (!$event->isCancelled()) {
         $arrow = $event->getProjectile();
         $set = [$arrow->chunk, $arrow->nametag, $p];
         $newArrow = new AbilityArrow(...$set);
         $p = $event->getEntity();
         if ($p instanceof Player) {
             if (!$p->isCreative()) {
                 $list = [1 => FireArrow::class, 5 => TeleportArrow::class, 7 => SpiderArrow::class, 9 => HealArrow::class, 12 => PowerArrow::class];
                 $inv = $p->getInventory();
                 foreach ($inv->getContents() as $k => $i) {
                     $d = $i->getDamage();
                     if ($i->getID() == 351 && isset($list[$d])) {
                         $i->setCount($i->getCount() - 1);
                         $inv->setItem($k, $i);
                         $p->sendMessage([1 => "FireArrow", 5 => "TeleportArrow", 7 => "SpiderArrow", 9 => "HealArrow", 12 => "PowerArrow"][$d]);
                         $newArrow = new $list[$d](...$set);
                         break;
                     }
                 }
             }
         }
         $event->setProjectile($newArrow);
     }
 }
开发者ID:stoastye85,项目名称:Plugins,代码行数:26,代码来源:ArrowAbility.php

示例2: onEntityUseBow

 public function onEntityUseBow(EntityShootBowEvent $event)
 {
     $entity = $event->getEntity();
     if ($entity instanceof Player) {
         if ($entity->hasPermission("flamebows.use")) {
             $event->getProjectile()->setOnFire(500000000 * 20);
         }
     }
 }
开发者ID:FaZeTheLight,项目名称:FlameBows,代码行数:9,代码来源:Main.php

示例3: onShoot

 public function onShoot(EntityShootBowEvent $e)
 {
     if ($e->isCancelled()) {
         return;
     }
     $p = $e->getEntity();
     if (!$p instanceof Player) {
         return;
     }
     $n = $p->getName();
     if (isset($this->dumdums[$n])) {
         if ($this->misfire($e->getBow())) {
             $e->setCancelled();
             // Bow broke!
             $p->sendMessage("Dumdum failure!");
             $this->getServer()->getPluginManager()->callEvent($cc = new ExplosionPrimeEvent($p, 4));
             if ($cc->isCancelled()) {
                 return;
             }
             $explosion = new Explosion($p, $this->dumdums[$n][0]);
             if (!$this->dumdums[$n][1]) {
                 $explosion->explodeA();
             }
             $explosion->explodeB();
             return;
         }
         $arrow = $e->getProjectile();
         $arrow->namedtag->setName("dumdum:" . implode(":", $this->dumdums[$n]));
         return;
     }
     if (!isset($this->shooters[$n])) {
         return;
     }
     if (!isset($this->shooters[$n])) {
         return;
     }
     $e->setCancelled();
     // Disable it and replace it with our own
     if (!$p->isCreative()) {
         if (!$this->checkAmmo($p, true)) {
             $p->sendMessage("You are out of grenades");
             $p->sendMessage("RPG disarmed");
             unset($this->shoters[$n]);
             return;
         }
         if ($this->misfire($e->getBow())) {
             $p->sendMessage("RPG misfired!");
             $this->fire($p, mt_rand(1, $this->shooters[$n][0]), 0.01);
             return;
         }
         // Since we are cancelling the event, we change the damage later
         $this->getServer()->getScheduler()->scheduleDelayedTask(new PluginCallbackTask($this, [$this, "breakBow"], [$n]), 5);
     }
     //echo "FORCE: ". $e->getForce()."\n"; //## DEBUG
     $this->fire($p, $this->shooters[$n][0], $this->shooters[$n][1]);
 }
开发者ID:DWWf,项目名称:pocketmine-plugins,代码行数:56,代码来源:Main.php

示例4: handleDataPacket


//.........这里部分代码省略.........
             }
             $this->craftingType = 0;
             $packet->eid = $this->id;
             $pos = new Vector3($packet->x, $packet->y, $packet->z);
             switch ($packet->action) {
                 case PlayerActionPacket::ACTION_START_BREAK:
                     if ($this->lastBreak !== PHP_INT_MAX or $pos->distanceSquared($this) > 10000) {
                         break;
                     }
                     $target = $this->level->getBlock($pos);
                     $ev = new PlayerInteractEvent($this, $this->inventory->getItemInHand(), $target, $packet->face, $target->getId() === 0 ? PlayerInteractEvent::LEFT_CLICK_AIR : PlayerInteractEvent::LEFT_CLICK_BLOCK);
                     $this->getServer()->getPluginManager()->callEvent($ev);
                     if ($ev->isCancelled()) {
                         $this->inventory->sendHeldItem($this);
                         break;
                     }
                     $this->lastBreak = microtime(true);
                     break;
                 case PlayerActionPacket::ACTION_ABORT_BREAK:
                     $this->lastBreak = PHP_INT_MAX;
                     break;
                 case PlayerActionPacket::ACTION_RELEASE_ITEM:
                     if ($this->startAction > -1 and $this->getDataFlag(self::DATA_FLAGS, self::DATA_FLAG_ACTION)) {
                         if ($this->inventory->getItemInHand()->getId() === Item::BOW) {
                             $bow = $this->inventory->getItemInHand();
                             if ($this->isSurvival() and !$this->inventory->contains(Item::get(Item::ARROW, 0, 1))) {
                                 $this->inventory->sendContents($this);
                                 break;
                             }
                             $nbt = new Compound("", ["Pos" => new Enum("Pos", [new Double("", $this->x), new Double("", $this->y + $this->getEyeHeight()), new Double("", $this->z)]), "Motion" => new Enum("Motion", [new Double("", -sin($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI)), new Double("", -sin($this->pitch / 180 * M_PI)), new Double("", cos($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI))]), "Rotation" => new Enum("Rotation", [new Float("", $this->yaw), new Float("", $this->pitch)]), "Fire" => new Short("Fire", $this->isOnFire() ? 45 * 60 : 0)]);
                             $diff = $this->server->getTick() - $this->startAction;
                             $p = $diff / 20;
                             $f = min(($p ** 2 + $p * 2) / 3, 1) * 2;
                             $ev = new EntityShootBowEvent($this, $bow, Entity::createEntity("Arrow", $this->chunk, $nbt, $this, $f == 2 ? true : false), $f);
                             if ($f < 0.1 or $diff < 5) {
                                 $ev->setCancelled();
                             }
                             $this->server->getPluginManager()->callEvent($ev);
                             if ($ev->isCancelled()) {
                                 $ev->getProjectile()->kill();
                                 $this->inventory->sendContents($this);
                             } else {
                                 $ev->getProjectile()->setMotion($ev->getProjectile()->getMotion()->multiply($ev->getForce()));
                                 if ($this->isSurvival()) {
                                     $this->inventory->removeItem(Item::get(Item::ARROW, 0, 1));
                                     $bow->setDamage($bow->getDamage() + 1);
                                     if ($bow->getDamage() >= 385) {
                                         $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0));
                                     } else {
                                         $this->inventory->setItemInHand($bow);
                                     }
                                 }
                                 if ($ev->getProjectile() instanceof Projectile) {
                                     $this->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($ev->getProjectile()));
                                     if ($projectileEv->isCancelled()) {
                                         $ev->getProjectile()->kill();
                                     } else {
                                         $ev->getProjectile()->spawnToAll();
                                         $this->level->addSound(new LaunchSound($this), $this->getViewers());
                                     }
                                 } else {
                                     $ev->getProjectile()->spawnToAll();
                                 }
                             }
                         }
                     } elseif ($this->inventory->getItemInHand()->getId() === Item::BUCKET and $this->inventory->getItemInHand()->getDamage() === 1) {
开发者ID:WonderlandPE,项目名称:Steadfast2,代码行数:67,代码来源:Player.php

示例5: shootArrow

 /**
  *
  * @param Player $player        	
  * @param Position $fromPos        	
  */
 public static function shootArrow(Player $player, Position $fromPos)
 {
     $nbt = new Compound("", ["Pos" => new Enum("Pos", [new Double("", $fromPos->x), new Double("", $fromPos->y + $player->getEyeHeight()), new Double("", $fromPos->z)]), "Motion" => new Enum("Motion", [new Double("", -\sin($player->yaw / 180 * M_PI) * \cos($player->pitch / 180 * M_PI)), new Double("", -\sin($player->pitch / 180 * M_PI)), new Double("", \cos($player->yaw / 180 * M_PI) * \cos($player->pitch / 180 * M_PI))]), "Rotation" => new Enum("Rotation", [new Float("", $player->yaw), new Float("", $player->pitch)])]);
     $diff = 3;
     $p = $diff / 20;
     $f = \min(($p * 2 + $p * 2) / 3, 1) * 2;
     $ev = new EntityShootBowEvent($player, Item::get(Item::BOW), Entity::createEntity("Arrow", $player->chunk, $nbt, $player, $f == 2 ? \true : \false), $f);
     $ev->getProjectile()->spawnToAll();
     $player->level->addSound(new LaunchSound($player), $player->getViewers());
 }
开发者ID:robozeri,项目名称:SG,代码行数:15,代码来源:PlayerHelper.php

示例6: handleDataPacket


//.........这里部分代码省略.........
                             $side->getLevel()->setBlock($side, new Air());
                         }
                         $this->lastBreak = microtime(true);
                     } else {
                         $this->inventory->sendHeldItem($this);
                     }
                     break;
                 case PlayerActionPacket::ACTION_ABORT_BREAK:
                     $this->lastBreak = PHP_INT_MAX;
                     break;
                 case PlayerActionPacket::ACTION_RELEASE_ITEM:
                     if ($this->startAction > -1 and $this->getDataFlag(self::DATA_FLAGS, self::DATA_FLAG_ACTION)) {
                         if ($this->inventory->getItemInHand()->getId() === Item::BOW) {
                             $bow = $this->inventory->getItemInHand();
                             if ($this->isSurvival() and !$this->inventory->contains(Item::get(Item::ARROW, null))) {
                                 $this->inventory->sendContents($this);
                                 break;
                             }
                             $arrow = false;
                             foreach ($this->inventory->getContents() as $item) {
                                 if ($item->getId() == Item::ARROW) {
                                     $arrow = $item;
                                 }
                             }
                             if ($arrow === false and $this->isCreative()) {
                                 $arrow = Item::get(Item::ARROW, 0, 1);
                             } elseif ($arrow === false) {
                                 break;
                             }
                             $nbt = new CompoundTag("", ["Pos" => new ListTag("Pos", [new DoubleTag("", $this->x), new DoubleTag("", $this->y + $this->getEyeHeight()), new DoubleTag("", $this->z)]), "Motion" => new ListTag("Motion", [new DoubleTag("", -sin($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI)), new DoubleTag("", -sin($this->pitch / 180 * M_PI)), new DoubleTag("", cos($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI))]), "Rotation" => new ListTag("Rotation", [new FloatTag("", $this->yaw), new FloatTag("", $this->pitch)]), "Fire" => new ShortTag("Fire", $this->isOnFire() ? 45 * 60 : 0), "Potion" => new ShortTag("Potion", $arrow->getDamage())]);
                             $diff = $this->server->getTick() - $this->startAction;
                             $p = $diff / 20;
                             $f = min(($p ** 2 + $p * 2) / 3, 1) * 2;
                             $ev = new EntityShootBowEvent($this, $bow, Entity::createEntity("Arrow", $this->chunk, $nbt, $this, $f == 2 ? true : false), $f);
                             if ($f < 0.1 or $diff < 5) {
                                 $ev->setCancelled();
                             }
                             $this->server->getPluginManager()->callEvent($ev);
                             if ($ev->isCancelled()) {
                                 $ev->getProjectile()->kill();
                                 $this->inventory->sendContents($this);
                             } else {
                                 $ev->getProjectile()->setMotion($ev->getProjectile()->getMotion()->multiply($ev->getForce()));
                                 if ($this->isSurvival()) {
                                     $this->inventory->removeItem(Item::get(Item::ARROW, $arrow->getDamage(), 1));
                                     $bow->setDamage($bow->getDamage() + 1);
                                     if ($bow->getDamage() >= 385) {
                                         $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0));
                                     } else {
                                         $this->inventory->setItemInHand($bow);
                                     }
                                 }
                                 if ($ev->getProjectile() instanceof Projectile) {
                                     $this->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($ev->getProjectile()));
                                     if ($projectileEv->isCancelled()) {
                                         $ev->getProjectile()->kill();
                                     } else {
                                         $ev->getProjectile()->spawnToAll();
                                         $this->level->addSound(new LaunchSound($this), $this->getViewers());
                                     }
                                 } else {
                                     $ev->getProjectile()->spawnToAll();
                                 }
                             }
                         }
                     } elseif ($this->inventory->getItemInHand()->getId() === Item::BUCKET and $this->inventory->getItemInHand()->getDamage() === 1) {
开发者ID:iTXTech,项目名称:Genisys,代码行数:67,代码来源:Player.php

示例7: onBowShoot

 public function onBowShoot(EntityShootBowEvent $event)
 {
     if ($this->plugin->status === "enabled" && $this->plugin->loginmanager[$event->getEntity()->getId()] === 0) {
         $event->setCancelled(true);
     } elseif ($this->plugin->safemode === true and $this->plugin->status !== "enabled") {
         $event->setCancelled(true);
     }
 }
开发者ID:Jackboy320,项目名称:xAuth,代码行数:8,代码来源:LoginTasks.php

示例8: handleDataPacket


//.........这里部分代码省略.........
                     $block = $target->getSide($packet->face);
                     if ($block->getId() === Block::FIRE) {
                         $this->level->setBlock($block, new Air());
                         break;
                     }
                     $this->lastBreak = microtime(true);
                     break;
                 case PlayerActionPacket::ACTION_ABORT_BREAK:
                     $this->lastBreak = PHP_INT_MAX;
                     break;
                 case PlayerActionPacket::ACTION_RELEASE_ITEM:
                     if ($this->startAction > -1 and $this->getDataFlag(self::DATA_FLAGS, self::DATA_FLAG_ACTION)) {
                         if ($this->inventory->getItemInHand()->getId() === Item::BOW) {
                             $bow = $this->inventory->getItemInHand();
                             if ($this->isSurvival() and !$this->inventory->contains(Item::get(Item::ARROW, null))) {
                                 $this->inventory->sendContents($this);
                                 break;
                             }
                             $arrow = false;
                             foreach ($this->inventory->getContents() as $item) {
                                 if ($item->getId() == Item::ARROW) {
                                     $arrow = $item;
                                 }
                             }
                             if ($arrow === false and $this->isCreative()) {
                                 $arrow = Item::get(Item::ARROW, 0, 1);
                             } elseif ($arrow === false) {
                                 break;
                             }
                             $nbt = new CompoundTag("", ["Pos" => new ListTag("Pos", [new DoubleTag("", $this->x), new DoubleTag("", $this->y + $this->getEyeHeight()), new DoubleTag("", $this->z)]), "Motion" => new ListTag("Motion", [new DoubleTag("", -sin($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI)), new DoubleTag("", -sin($this->pitch / 180 * M_PI)), new DoubleTag("", cos($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI))]), "Rotation" => new ListTag("Rotation", [new FloatTag("", $this->yaw), new FloatTag("", $this->pitch)]), "Fire" => new ShortTag("Fire", $this->isOnFire() ? 45 * 60 : 0), "Potion" => new ShortTag("Potion", $arrow->getDamage())]);
                             $diff = $this->server->getTick() - $this->startAction;
                             $p = $diff / 20;
                             $f = min(($p ** 2 + $p * 2) / 3, 1) * 2;
                             $ev = new EntityShootBowEvent($this, $bow, Entity::createEntity("Arrow", $this->chunk, $nbt, $this, $f == 2 ? true : false), $f);
                             if ($f < 0.1 or $diff < 5) {
                                 $ev->setCancelled();
                             }
                             $this->server->getPluginManager()->callEvent($ev);
                             if ($ev->isCancelled()) {
                                 $ev->getProjectile()->kill();
                                 $this->inventory->sendContents($this);
                             } else {
                                 $ev->getProjectile()->setMotion($ev->getProjectile()->getMotion()->multiply($ev->getForce()));
                                 if ($this->isSurvival()) {
                                     $this->inventory->removeItem(Item::get(Item::ARROW, $arrow->getDamage(), 1));
                                     $bow->setDamage($bow->getDamage() + 1);
                                     if ($bow->getDamage() >= 385) {
                                         $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0));
                                     } else {
                                         $this->inventory->setItemInHand($bow);
                                     }
                                 }
                                 if ($ev->getProjectile() instanceof Projectile) {
                                     $this->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($ev->getProjectile()));
                                     if ($projectileEv->isCancelled()) {
                                         $ev->getProjectile()->kill();
                                     } else {
                                         $ev->getProjectile()->spawnToAll();
                                         $this->level->addSound(new LaunchSound($this), $this->getViewers());
                                     }
                                 } else {
                                     $ev->getProjectile()->spawnToAll();
                                 }
                             }
                         }
                     } elseif ($this->inventory->getItemInHand()->getId() === Item::BUCKET and $this->inventory->getItemInHand()->getDamage() === 1) {
开发者ID:robske110,项目名称:ClearSky,代码行数:67,代码来源:Player.php

示例9: onBowShoot

 public function onBowShoot(EntityShootBowEvent $event)
 {
     if ($this->plugin->status === "enabled" && $this->plugin->loginmanager[$event->getEntity()->getId()] !== true && $this->plugin->allowShoot !== true && $event->getPlayer() instanceof Player) {
         $event->setCancelled(true);
     } elseif ($this->plugin->safemode === true and $this->plugin->status !== "enabled") {
         $event->setCancelled(true);
         $event->getPlayer()->sendMessage($this->disable);
     }
 }
开发者ID:EpicArtz08999,项目名称:xAuth,代码行数:9,代码来源:LoginTasks.php

示例10: handleDataPacket


//.........这里部分代码省略.........
                 break;
             }
             $this->craftingType = 0;
             $packet->eid = $this->id;
             $pos = new Vector3($packet->x, $packet->y, $packet->z);
             switch ($packet->action) {
                 case 0:
                     //Start break
                     if ($pos->distanceSquared($this) > 10000) {
                         break;
                     }
                     $target = $this->level->getBlock($pos);
                     $ev = new PlayerInteractEvent($this, $this->inventory->getItemInHand(), $target, $packet->face, $target->getId() === 0 ? PlayerInteractEvent::LEFT_CLICK_AIR : PlayerInteractEvent::LEFT_CLICK_BLOCK);
                     $this->getServer()->getPluginManager()->callEvent($ev);
                     if ($ev->isCancelled()) {
                         $this->inventory->sendHeldItem($this);
                         break;
                     }
                     $this->lastBreak = microtime(true);
                     break;
                 case 5:
                     //Shot arrow
                     if ($this->startAction > -1 and $this->getDataFlag(self::DATA_FLAGS, self::DATA_FLAG_ACTION)) {
                         if ($this->inventory->getItemInHand()->getId() === Item::BOW) {
                             $bow = $this->inventory->getItemInHand();
                             if ($this->isSurvival() and !$this->inventory->contains(Item::get(Item::ARROW, 0, 1))) {
                                 $this->inventory->sendContents($this);
                                 break;
                             }
                             $nbt = new Compound("", ["Pos" => new Enum("Pos", [new Double("", $this->x), new Double("", $this->y + $this->getEyeHeight()), new Double("", $this->z)]), "Motion" => new Enum("Motion", [new Double("", -sin($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI)), new Double("", -sin($this->pitch / 180 * M_PI)), new Double("", cos($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI))]), "Rotation" => new Enum("Rotation", [new Float("", $this->yaw), new Float("", $this->pitch)])]);
                             $diff = $this->server->getTick() - $this->startAction;
                             $p = $diff / 20;
                             $f = min(($p ** 2 + $p * 2) / 3, 1) * 2;
                             $ev = new EntityShootBowEvent($this, $bow, Entity::createEntity("Arrow", $this->chunk, $nbt, $this, $f == 2 ? true : false), $f);
                             if ($f < 0.1 or $diff < 5) {
                                 $ev->setCancelled();
                             }
                             $this->server->getPluginManager()->callEvent($ev);
                             if ($ev->isCancelled()) {
                                 $ev->getProjectile()->kill();
                                 $this->inventory->sendContents($this);
                             } else {
                                 $ev->getProjectile()->setMotion($ev->getProjectile()->getMotion()->multiply($ev->getForce()));
                                 if ($this->isSurvival()) {
                                     $this->inventory->removeItem(Item::get(Item::ARROW, 0, 1));
                                     $bow->setDamage($bow->getDamage() + 1);
                                     if ($bow->getDamage() >= 385) {
                                         $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0));
                                     } else {
                                         $this->inventory->setItemInHand($bow);
                                     }
                                 }
                                 if ($ev->getProjectile() instanceof Projectile) {
                                     $this->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($ev->getProjectile()));
                                     if ($projectileEv->isCancelled()) {
                                         $ev->getProjectile()->kill();
                                     } else {
                                         $ev->getProjectile()->spawnToAll();
                                         $this->level->addSound(new LaunchSound($this), $this->getViewers());
                                     }
                                 } else {
                                     $ev->getProjectile()->spawnToAll();
                                 }
                             }
                         }
                     } elseif ($this->inventory->getItemInHand()->getId() === Item::BUCKET and $this->inventory->getItemInHand()->getDamage() === 1) {
开发者ID:TylerGames,项目名称:PocketMine-MP,代码行数:67,代码来源:Player.php

示例11: onBowShoot

 public function onBowShoot(EntityShootBowEvent $event)
 {
     $player = $event->getEntity()->getName();
     $ps = $event->getEntity();
     if (!is_file($this->getDataFolder() . $player . ".json")) {
         return true;
     }
     $data = file_get_contents($this->getDataFolder() . $player . ".json");
     $decode = json_decode($data, true);
     if (!isset($decode["annihilator"])) {
         return true;
     }
     if ($decode["annihilator"] === "yes") {
         $event->setForce(100);
         $this->arrowtimeshot[$player] = intval($this->arrowtimeshot[$player]) - 1;
         $this->getServer()->getPlayer($player)->sendMessage("You have " . $this->arrowtimeshot[$player] . " shots left.");
         if (intval($this->arrowtimeshot[$player]) <= "0") {
             $ps->getInventory()->removeItem($this->bow);
             $ps->getInventory()->removeItem(Item::get(262, 0, 3));
             $this->detransform($player);
             return true;
         }
         return true;
     }
 }
开发者ID:DRPlugins,项目名称:PM-Plugins,代码行数:25,代码来源:Annihilator.php

示例12: handleDataPacket


//.........这里部分代码省略.........
                             $side->getLevel()->setBlock($side, new Air());
                         }
                         $this->lastBreak = microtime(true);
                     } else {
                         $this->inventory->sendHeldItem($this);
                     }
                     break;
                 case PlayerActionPacket::ACTION_ABORT_BREAK:
                     $this->lastBreak = PHP_INT_MAX;
                     break;
                 case PlayerActionPacket::ACTION_RELEASE_ITEM:
                     if ($this->startAction > -1 and $this->getDataFlag(self::DATA_FLAGS, self::DATA_FLAG_ACTION)) {
                         if ($this->inventory->getItemInHand()->getId() === Item::BOW) {
                             $bow = $this->inventory->getItemInHand();
                             if ($this->isSurvival() and !$this->inventory->contains(Item::get(Item::ARROW, null))) {
                                 $this->inventory->sendContents($this);
                                 break;
                             }
                             $arrow = false;
                             foreach ($this->inventory->getContents() as $item) {
                                 if ($item->getId() == Item::ARROW) {
                                     $arrow = $item;
                                 }
                             }
                             if ($arrow === false and $this->isCreative()) {
                                 $arrow = Item::get(Item::ARROW, 0, 1);
                             } elseif ($arrow === false) {
                                 break;
                             }
                             $nbt = new CompoundTag("", ["Pos" => new ListTag("Pos", [new DoubleTag("", $this->x), new DoubleTag("", $this->y + $this->getEyeHeight()), new DoubleTag("", $this->z)]), "Motion" => new ListTag("Motion", [new DoubleTag("", -sin($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI)), new DoubleTag("", -sin($this->pitch / 180 * M_PI)), new DoubleTag("", cos($this->yaw / 180 * M_PI) * cos($this->pitch / 180 * M_PI))]), "Rotation" => new ListTag("Rotation", [new FloatTag("", $this->yaw), new FloatTag("", $this->pitch)]), "Fire" => new ShortTag("Fire", $this->isOnFire() ? 45 * 60 : 0), "Potion" => new ShortTag("Potion", $arrow->getDamage())]);
                             $diff = $this->server->getTick() - $this->startAction;
                             $p = $diff / 20;
                             $f = min(($p ** 2 + $p * 2) / 3, 1) * 2;
                             $ev = new EntityShootBowEvent($this, $bow, Entity::createEntity("Arrow", $this->chunk, $nbt, $this, $f == 2 ? true : false), $f);
                             if ($f < 0.1 or $diff < 5) {
                                 $ev->setCancelled();
                             }
                             $this->server->getPluginManager()->callEvent($ev);
                             if ($ev->isCancelled()) {
                                 $ev->getProjectile()->kill();
                                 $this->inventory->sendContents($this);
                             } else {
                                 $ev->getProjectile()->setMotion($ev->getProjectile()->getMotion()->multiply($ev->getForce()));
                                 if ($this->isSurvival()) {
                                     $this->inventory->removeItem(Item::get(Item::ARROW, $arrow->getDamage(), 1));
                                     $bow->setDamage($bow->getDamage() + 1);
                                     if ($bow->getDamage() >= 385) {
                                         $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0));
                                     } else {
                                         $this->inventory->setItemInHand($bow);
                                     }
                                 }
                                 if ($ev->getProjectile() instanceof Projectile) {
                                     $this->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($ev->getProjectile()));
                                     if ($projectileEv->isCancelled()) {
                                         $ev->getProjectile()->kill();
                                     } else {
                                         $ev->getProjectile()->spawnToAll();
                                         $this->level->addSound(new LaunchSound($this), $this->getViewers());
                                     }
                                 } else {
                                     $ev->getProjectile()->spawnToAll();
                                 }
                             }
                         }
                     } elseif ($this->inventory->getItemInHand()->getId() === Item::BUCKET and $this->inventory->getItemInHand()->getDamage() === 1) {
开发者ID:yungtechboy1,项目名称:Genisys,代码行数:67,代码来源:Player.php

示例13: onVipShootBow

 public function onVipShootBow(EntityShootBowEvent $event)
 {
     $player = $event->getEntity();
     if (!$player instanceof Player or ($vip = $this->getVip($player)) === null) {
         return;
     }
     if ($vip->refuseToPvp()) {
         $event->setCancelled(true);
         return;
     }
     $this->arrowQueue[] = $event->getProjectile()->getId();
 }
开发者ID:nesgohood,项目名称:PMMP-Plugins,代码行数:12,代码来源:VIPPlus.php

示例14: onBowUse

 public function onBowUse(EntityShootBowEvent $event)
 {
     if ($event->getEntity() instanceof Player) {
         if ($this->disableBowUse) {
             $event->setCancelled();
         }
     }
     return;
 }
开发者ID:The-Epic-Miner,项目名称:MinigameBase,代码行数:9,代码来源:Main.php

示例15: onShootBow

 public function onShootBow(EntityShootBowEvent $event)
 {
     $ent = $event->getEntity();
     if (!$ent instanceof Player) {
         return;
     }
     if (!($ses = $this->getMain()->getSessions()->getSession($ent)) instanceof Session) {
         return;
     }
     if (!$ses->inSession($this)) {
         return;
     }
     if (!($d = $this->getPlayerData($ses)) instanceof PvpSessionData) {
         return;
     }
     $bow = $d->getBowLevel();
     $hasFire = Settings::kitpvp_getBowInfo($bow)[4] > 0;
     if ($hasFire) {
         $event->getProjectile()->setDataFlag(Entity::DATA_FLAGS, Entity::DATA_FLAG_ONFIRE);
     }
 }
开发者ID:LegionPE,项目名称:LegionPE-Eta,代码行数:21,代码来源:PvpGame.php


注:本文中的pocketmine\event\entity\EntityShootBowEvent类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。