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); } } } }
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); }