public function execute(Listener $listener, Event $event)
 {
     $module = null;
     if ($event instanceof PlayerEvent) {
         $player = $event->getPlayer();
         $gamer = $this->hub->getGamerForPlayer($player);
         if ($gamer !== null) {
             $module = $gamer->getModule();
         }
     } elseif ($event instanceof EntityEvent) {
         $entity = $event->getEntity();
         if ($entity instanceof Player) {
             $gamer = $this->hub->getGamerForPlayer($entity);
             if ($gamer !== null) {
                 $module = $gamer->getModule();
             }
         }
     } else {
         $callable = [$event, "getPlayer"];
         if (is_callable($callable)) {
             $player = $callable();
             if ($player instanceof Player) {
                 $gamer = $this->hub->getGamerForPlayer($player);
                 if ($gamer !== null) {
                     $module = $gamer->getModule();
                 }
             }
         }
     }
     if (isset($module)) {
         foreach ($this->handlers as $handler) {
             if ($handler->getModule() === $module) {
                 $handler->execute($event);
             }
         }
     }
 }
예제 #2
0
파일: HungerGames.php 프로젝트: EmreTr1/rtr
 public function removeArrow(Event $event)
 {
     if ($event->isCancelled()) {
         return;
     }
     $arrow = $event->getEntity();
     $murder = $event->getEntity()->shootingEntity;
     $this->getServer()->getPluginManager()->callEvent($ev = new ExplosionPrimeEvent($arrow, 3.2));
     if (!$ev->isCancelled()) {
         $explosion = new Explosion($arrow, $ev->getForce(), $murder);
         $explosion->explodeB();
     }
     $reflection_class = new \ReflectionClass($arrow);
     $property = $reflection_class->getProperty('age');
     $property->setAccessible(true);
     $property->setValue($arrow, 7000);
 }