本文整理汇总了PHP中pocketmine\event\entity\EntityShootBowEvent::getProjectile方法的典型用法代码示例。如果您正苦于以下问题:PHP EntityShootBowEvent::getProjectile方法的具体用法?PHP EntityShootBowEvent::getProjectile怎么用?PHP EntityShootBowEvent::getProjectile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\event\entity\EntityShootBowEvent
的用法示例。
在下文中一共展示了EntityShootBowEvent::getProjectile方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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);
}
}
示例2: onEntityUseBow
public function onEntityUseBow(EntityShootBowEvent $event)
{
$entity = $event->getEntity();
if ($entity instanceof Player) {
if ($entity->hasPermission("flamebows.use")) {
$event->getProjectile()->setOnFire(500000000 * 20);
}
}
}
示例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]);
}
示例4: 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());
}
示例5: 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();
}
示例6: 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);
}
}