public function onEntityDamage(EntityDamageEvent $event) { if (!$event->isCancelled() && $event instanceof EntityDamageByEntityEvent) { $e = $event->getEntity(); $arrow = $event->getDamager(); $damage = round($event->getDamage() / 2); if ($arrow instanceof AbilityArrow) { $shoter = $arrow->shootingEntity; if ($shoter instanceof Player) { if ($arrow instanceof FireArrow) { $e->setOnFire(rand(3, 10)); } elseif ($arrow instanceof TeleportArrow) { $shoter->teleport($e); } elseif ($arrow instanceof SpiderArrow) { $e->getLevel()->setBlock($e, Block::get(30)); } elseif ($arrow instanceof HealArrow) { $damage = -$damage; } elseif ($arrow instanceof PowerArrow) { $damage = round($damage * rand(2, 3) / 2); } else { return; } $arrow->kill(); } } $event->setDamage($damage); } }
public function onPvP(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } if (!$ev instanceof EntityDamageByEntityEvent) { return; } if (!(($pl = $ev->getEntity()) instanceof Player && $ev->getDamager() instanceof Player)) { return; } $world = $pl->getLevel()->getName(); if (!isset($this->wcfg[$world])) { return; } if ($this->wcfg[$world] !== false) { $sp = $pl->getLevel()->getSpawnLocation(); $dist = $sp->distance($pl); if ($dist > $this->owner->getServer()->getSpawnRadius()) { return; } } $this->owner->msg($ev->getDamager(), mc::_("You are not allowed to do that here")); $ev->setCancelled(); }
/** * @param CommandSender $sender * @param string $alias * @param array $args * @return bool */ public function execute(CommandSender $sender, $alias, array $args) { if (!$this->testPermission($sender)) { return false; } if (count($args) !== 1) { $sender->sendMessage($sender instanceof Player ? $this->getUsage() : $this->getConsoleUsage()); return false; } $player = $this->getPlugin()->getPlayer($args[0]); if (!$player instanceof Player) { $sender->sendMessage(TextFormat::RED . "[Error] Player not found"); return false; } if ($this->getPlugin()->isGod($player)) { $sender->sendMessage(TextFormat::RED . "You can't kill " . $args[0]); return false; } $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($player, EntityDamageEvent::CAUSE_SUICIDE, $player->getHealth())); if ($ev->isCancelled()) { return true; } $player->setLastDamageCause($ev); $player->setHealth(0); $player->sendMessage("Ouch. That look like it hurt."); return true; }
/** * @param CommandSender $sender * @param string $alias * @param array $args * @return bool */ public function execute(CommandSender $sender, $alias, array $args) { if (!$this->testPermission($sender)) { return false; } if (!$sender instanceof Player && count($args) !== 1) { $this->sendUsage($sender, $alias); return false; } $player = $sender; if (isset($args[0])) { if (!$sender->hasPermission("essentials.kill.other")) { $sender->sendMessage(TextFormat::RED . $this->getPermissionMessage()); return false; } if (!($player = $this->getAPI()->getPlayer($args[0])) instanceof Player) { $sender->sendMessage(TextFormat::RED . "[Error] Player not found"); return false; } } if ($this->getAPI()->isGod($player)) { $sender->sendMessage(TextFormat::RED . $args[0] . " can't be killed!"); return false; } $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($player, EntityDamageEvent::CAUSE_SUICIDE, $player->getHealth())); if ($ev->isCancelled()) { return true; } $player->setLastDamageCause($ev); $player->setHealth(0); $player->sendMessage("Ouch. That look like it hurt."); return true; }
public function onDamage(EntityDamageEvent $event) { $victim = $event->getEntity(); if ($victim instanceof Player) { if (!$event->isCancelled()) { if ($this->plugin->getFlyingSession($victim)->getFlying()) { $this->plugin->getFlyingSession($victim)->setFlying(false); $victim->sendMessage(TF::GOLD . "You are no longer in fly mode!"); } } } }
/** * @priority MONITOR */ public function onDamage(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } $damage = $ev->getDamage(); $player = $ev->getEntity(); if (!$player instanceof Player) { return; } for ($i = 0; $i < $damage; $i++) { $player->getLevel()->addParticle(new RedstoneParticle(self::randVector($player), mt_rand() / mt_getrandmax() * 2)); } }
public function onFall(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } $cause = $ev->getCause(); if ($cause !== EntityDamageEvent::CAUSE_FALL) { return; } $et = $ev->getEntity(); $id = $et->getLevel()->getBlockIdAt($et->getX(), $et->getY() - 1, $et->getZ()); if (isset($this->blocks[$id])) { // Soft landing! $ev->setCancelled(); } }
public function onDamage(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } if (!$ev instanceof EntityDamageByEntityEvent) { return; } if (!$ev->getEntity() instanceof Player) { return; } if (!$this->getState("shield", $ev->getEntity(), false)) { return; } $ev->setCancelled(); }
public function execute(CommandSender $sender, $currentAlias, array $args) { if (!$this->testPermission($sender)) { return true; } if (count($args) >= 2) { $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return false; } if (count($args) === 1) { if (!$sender->hasPermission("pocketmine.kill.other")) { $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); return true; } $player = $sender->getServer()->getPlayer($args[0]); if ($player instanceof Player) { $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($player, EntityDamageEvent::CAUSE_SUICIDE, 1000)); if ($ev->isCancelled()) { return true; } $player->setLastDamageCause($ev); $player->setHealth(0); Command::broadcastCommandMessage($sender, new TranslationContainer("commands.kill.successful", [$player->getName()])); } else { $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.player.notFound")); } return true; } if ($sender instanceof Player) { if (!$sender->hasPermission("pocketmine.kill.self")) { $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%commands.generic.permission")); return true; } $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($sender, EntityDamageEvent::CAUSE_SUICIDE, 1000)); if ($ev->isCancelled()) { return true; } $sender->setLastDamageCause($ev); $sender->setHealth(0); $sender->sendMessage(new TranslationContainer("commands.kill.successful", [$sender->getName()])); } else { $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return false; } return true; }
/** * @param CommandSender $sender * @param string $alias * @param array $args * @return bool */ public function execute(CommandSender $sender, $alias, array $args) { if (!$this->testPermission($sender)) { return false; } if (!$sender instanceof Player || count($args) !== 0) { $this->sendUsage($sender, $alias); return false; } $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($sender, EntityDamageEvent::CAUSE_SUICIDE, $sender->getHealth())); if ($ev->isCancelled()) { return true; } $sender->setLastDamageCause($ev); $sender->setHealth(0); $sender->sendMessage("Ouch. That look like it hurt."); return true; }
public function execute(CommandSender $sender, $currentAlias, array $args) { if (!$this->testPermission($sender)) { return \true; } if ($sender instanceof Player) { $sender->getServer()->getPluginManager()->callEvent($ev = new EntityDamageEvent($sender, EntityDamageEvent::CAUSE_SUICIDE, 1000)); if ($ev->isCancelled()) { return \true; } $sender->setLastDamageCause($ev); $sender->setHealth(0); $sender->sendMessage("Ouch. That look like it hurt."); } else { $sender->sendMessage(TextFormat::RED . "You can only perform this command as a player"); } return \true; }
public function onPvP(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } if (!$ev instanceof EntityDamageByEntityEvent) { return; } $et = $ev->getEntity(); if (!$et instanceof Player) { return; } $sp = $et->getLevel()->getSpawnLocation(); $dist = $sp->distance($et); if ($dist > $this->owner->getServer()->getSpawnRadius()) { return; } $ev->setCancelled(); }
/** * @priority HIGH */ public function onAttack(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } if (!$ev instanceof EntityDamageByEntityEvent) { return; } $pl = $ev->getDamager(); if (!$pl instanceof Player) { return; } $n = $pl->getName(); if (!isset($this->players[$n])) { return; } // Burn baby burn!!! $ev->getEntity()->setOnFire($this->cf["effect"]); }
public function onDamage(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } if ($ev->getEntity() instanceof Player) { if (isset($this->watchers[strtolower($ev->getEntity()->getName())])) { $ev->setCancelled(); return; } } if ($ev instanceof EntityDamageByEntityEvent) { if ($ev->getDamager() instanceof Player) { if (isset($this->watchers[strtolower($ev->getDamager()->getName())])) { $ev->setCancelled(); return; } } } }
/** * @priority LOWEST */ public function onEntityInteract(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } if (!$ev instanceof EntityDamageByEntityEvent) { return; } $giver = $ev->getDamager(); if (!$giver instanceof Player) { return; } $taker = $ev->getEntity(); if (!$taker instanceof TraderNpc) { return; } $ev->setCancelled(); // OK, now what... if ($giver->isCreative() || $giver->isSpectator()) { $giver->sendMessage(mc::_("No purchases while in %1% mode.", MPMU::gamemodeStr($giver->getGamemode()))); return; } $shop = $taker->namedtag->shop->getValue(); if (!isset($this->keepers[$shop])) { $this->owner->getLogger()->error(mc::_("Invalid shop %5% for NPC at %1%,%2%,%3% (%4%)", $taker->floorX(), $taker->floorY(), $taker->floorZ(), $taker->getLevel()->getName(), $shop)); $giver->sendMessage(mc::_("Sorry, shop is closed!")); return; } $hand = $giver->getInventory()->getItemInHand(); if ($this->owner->getCurrency() !== false ? $hand->getId() == $this->owner->getCurrency() : $hand->getId() == Item::GOLD_INGOT) { // OK, we want to buy stuff... $this->owner->getServer()->getScheduler()->scheduleDelayedTask(new PluginCallbackTask($this->owner, [$this, "startTrade"], [$giver, $taker, $shop]), 10); } else { if ($this->owner->isWeapon($hand)) { $this->shopMsg($giver, $shop, "under-attack"); $giver->attack($this->keepers[$shop]["attack"], new EntityDamageByEntityEvent($taker, $giver, EntityDamageEvent::CAUSE_ENTITY_ATTACK, $this->keepers[$shop]["attack"], 1.0)); } else { $this->shopMsg($giver, $shop, "help-info"); } } }
public function entityBaseTick() { Timings::$timerEntityBaseTick->startTiming(); parent::entityBaseTick(); if ($this->dead !== true and $this->isInsideOfSolid()) { $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_SUFFOCATION, 1)); if (!$ev->isCancelled()) { $this->attack($ev->getFinalDamage(), $ev); } } if ($this->dead !== true and $this->isInsideOfWater()) { --$this->airTicks; if ($this->airTicks <= -20) { $this->airTicks = 0; $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_DROWNING, 2)); if (!$ev->isCancelled()) { $this->attack($ev->getFinalDamage(), $ev); } } $this->extinguish(); } else { $this->airTicks = 300; } if ($this->attackTime > 0) { --$this->attackTime; } Timings::$timerEntityBaseTick->stopTiming(); }
public function onEntityDamage(EntityDamageEvent $event) { if ($event->isCancelled()) { return; } $damagedEntity = $event->getEntity(); if ($event instanceof EntityDamageByEntityEvent && $event->getFinalDamage() > $damagedEntity->getHealth()) { $attacker = $event->getDamager(); if ($attacker instanceof Player) { if ($damagedEntity instanceof Player && !self::$pvpEnabled) { $event->setCancelled(); return; } $attackerPlayer = $this->getRPGPlayerByName($attacker->getName()); if ($attackerPlayer !== null) { $xp = 0; $xpPercentage = 0; foreach ($this->getConfiguration("kill-exp", ["default" => 10]) as $id => $amount) { if ($id === "default" || $id === $damagedEntity::NETWORK_ID) { $xp = $amount; } } foreach ($this->getConfiguration("kill-exp-percentage", ["default" => 0.01]) as $id => $amount) { if ($id === "default" || $id === $damagedEntity::NETWORK_ID) { $xpPercentage = $amount; } } $attackerPlayer->addXp($xp + $attackerPlayer->getNeededXP() * ($xpPercentage / 100)); } } } if (!$damagedEntity instanceof Player) { return; } if (!$this->isValidPlayer($damagedEntity)) { return; } $formerHealth = $this->players[$damagedEntity->getName()]->getHealth(); $this->getRPGPlayerByName($damagedEntity->getName())->setHealth($formerHealth - $event->getFinalDamage()); $event->setDamage(0); $event->setDamage(0, EntityDamageEvent::MODIFIER_STRENGTH); $event->setDamage(0, EntityDamageEvent::MODIFIER_WEAKNESS); $event->setDamage(0, EntityDamageEvent::MODIFIER_ARMOR); $event->setDamage(0, EntityDamageEvent::MODIFIER_RESISTANCE); }
public function onEntityDamage(EntityDamageEvent $event) { if ($event->isCancelled()) { return; } $player = $event->getEntity(); if (!$player instanceof Player) { return; } if (!isset(self::$players[$player->getName()])) { return; } $xcelPlayer = self::$players[$player->getName()]; if (($game = $xcelPlayer->getGame()) === null) { return; } switch ($game->getStatus()) { case XcelGame::STATUS_PREPARING: $event->setCancelled(); break; case XcelGame::STATUS_IN_GAME: if ($event instanceof EntityDamageByEntityEvent) { $damager = $event->getDamager(); if ($damager instanceof Player) { if (isset(self::$players[$damager->getName()])) { $xcelDamager = self::$players[$damager->getName()]; if ($this->isSameGame($xcelPlayer->getGame(), $xcelDamager->getGame()) && $xcelDamager->getGame()->canPvP($xcelDamager, $xcelPlayer)) { } else { $event->setCancelled(); break; } } else { $event->setCancelled(); break; } } } else { if (!$xcelPlayer->getGame()->canBeDamaged($xcelPlayer, $event)) { $event->setCancelled(); switch ($event->getCause()) { case EntityDamageEvent::CAUSE_BLOCK_EXPLOSION: case EntityDamageEvent::CAUSE_CONTACT: case EntityDamageEvent::CAUSE_CUSTOM: case EntityDamageEvent::CAUSE_ENTITY_ATTACK: case EntityDamageEvent::CAUSE_ENTITY_EXPLOSION: case EntityDamageEvent::CAUSE_FALL: case EntityDamageEvent::CAUSE_FIRE: case EntityDamageEvent::CAUSE_FIRE_TICK: case EntityDamageEvent::CAUSE_MAGIC: case EntityDamageEvent::CAUSE_PROJECTILE: break; case EntityDamageEvent::CAUSE_DROWNING: case EntityDamageEvent::CAUSE_LAVA: case EntityDamageEvent::CAUSE_SUFFOCATION: case EntityDamageEvent::CAUSE_SUICIDE: case EntityDamageEvent::CAUSE_VOID: $event->getEntity()->teleport($game->getWorld()->getSpawnLocation()); break; } break; } } if ($player->getHealth() <= $event->getFinalDamage()) { $event->setCancelled(); $xcelPlayer->getGame()->onPlayerDeath($xcelPlayer); } } }
public function onEntityDamage(EntityDamageEvent $event) { $p = $event->getEntity(); if ($event->isCancelled() || !$p instanceof Player || $event->getCause() > 11) { return; } $w = strtolower($p->getLevel()->getFolderName()); if ($event instanceof EntityDamageByEntityEvent) { if (!in_array($w, $this->wm["PVP"])) { $dmg = $event->getDamager(); if ($dmg instanceof Player) { if (!$dmg->hasPermission("mineblock.worldmanager.worldpvp.pvp")) { $event->setCancelled(); $dmg->sendMessage("[PVP Manager] PVP 권한이 없습니다."); } } } } }
public function onEntityInteract(EntityDamageEvent $event) { $perm = "yeah"; if ($event->isCancelled()) { return; } $taker = $event->getEntity(); if ($taker instanceof SlapperHuman || $taker instanceof SlapperSheep || $taker instanceof SlapperPigZombie || $taker instanceof SlapperVillager || $taker instanceof SlapperCaveSpider || $taker instanceof SlapperZombie || $taker instanceof SlapperChicken || $taker instanceof SlapperSpider || $taker instanceof SlapperSilverfish || $taker instanceof SlapperPig || $taker instanceof SlapperCow || $taker instanceof SlapperSlime || $taker instanceof SlapperLavaSlime || $taker instanceof SlapperEnderman || $taker instanceof SlapperMushroomCow || $taker instanceof SlapperBat || $taker instanceof SlapperCreeper || $taker instanceof SlapperSkeleton || $taker instanceof SlapperSquid || $taker instanceof SlapperWolf) { if (!$event instanceof EntityDamageByEntityEvent) { $event->setCancelled(true); } if ($event instanceof EntityDamageByEntityEvent) { $hitter = $event->getDamager(); if (!$hitter instanceof Player) { $event->setCancelled(true); } if ($hitter instanceof Player) { $takerName = str_replace("\n", "", TextFormat::clean(strtolower($taker->getName()))); $giverName = $hitter->getName(); if ($hitter instanceof Player) { if (isset($this->hitSessions[$giverName])) { if ($this->hitSessions[$giverName] = "on") { $taker->getInventory->clearAll(); $taker->kill(); unset($this->hitSessions[$giverName]); } } $configPart = strtolower($this->getConfig()->get($takerName)); if (!$hitter->hasPermission("slapper.hit")) { $event->setCancelled(true); $perm = "nah"; } if ($configPart == null && $perm === "nah") { $configPart = $this->getConfig()->get("FallbackCommand"); } if ($perm == "nah") { foreach ($configPart as $commandNew) { $this->getServer()->dispatchCommand(new ConsoleCommandSender(), str_replace("{player}", $giverName, $commandNew)); } } } } } } }
public function onEntityInteract(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } $taker = $ev->getEntity(); if (!$ev instanceof EntityDamageByBlockEvent) { $didItWork = "No"; $isInvalid = "No"; $doNotCheck = "No"; $takerSaveId = "Default"; $giverSaveId = "Default"; $wasAnArrow = "No"; $noCommand = "No"; $takerName = "FallbackCommand"; if ($taker instanceof Player) { return; } if (!$ev instanceof EntityDamageByEntityEvent) { $doNotCheck = "Yes"; } if ($ev instanceof EntityDamageByEntityEvent) { $giver = $ev->getDamager(); if (!$giver instanceof Player) { $giverSaveId = $giver->getSaveId(); } $takerSaveId = $taker->getSaveId(); } if ($ev instanceof EntityDamageByChildEntityEvent) { $noCommand = "Yes"; $wasAnArrow = "Yes"; } if (!($takerSaveId == "Human")) { $isInvalid = "Yes"; } if (!($takerSaveId == "Default")) { if ($doNotCheck == "No") { $takerName = $taker->getName(); $giverName = $giver->getName(); if ($giver->hasPermission("slapper.hit")) { $didItWork = "Yes"; } if ($isInvalid == "No" && $didItWork == "No") { $ev->setCancelled(); } } if ($wasAnArrow == "Yes" && $isInvalid == "No") { $ev->setCancelled(); } if ($didItWork === "No") { if ($isInvalid == "No" && $noCommand == "No") { $configPart = $this->getConfig()->get($takerName); if ($configPart == null) { $configPart = $this->getConfig()->get("FallbackCommand"); } foreach ($configPart as $commandNew) { $this->getServer()->dispatchCommand(new ConsoleCommandSender(), str_replace("{player}", $giverName, $commandNew)); } } } } } }
public function attack($damage, EntityDamageEvent $source) { if ($source->isCancelled()) { return; } if ($source->getCause() == EntityDamageEvent::CAUSE_FALL) { $source->setCancelled(); return; } parent::attack($damage, $source); }
public function fall($fallDistance) { $damage = floor($fallDistance - 3); if ($damage > 0) { $this->server->getPluginManager()->callEvent($ev = new EntityDamageEvent($this, EntityDamageEvent::CAUSE_FALL, $damage)); if ($ev->isCancelled()) { return; } $this->attack($ev->getFinalDamage(), $ev); } }
/** * @priority LOWEST */ public function onPlayerPayment(EntityDamageEvent $ev) { if ($ev->isCancelled()) { return; } if (!$ev instanceof EntityDamageByEntityEvent) { return; } $giver = $ev->getDamager(); $taker = $ev->getEntity(); if (!$giver instanceof Player) { return; } if ($giver->isCreative() || $giver->isSpectator()) { return; } $hand = $giver->getInventory()->getItemInHand(); if ($hand->getId() == $this->owner->getCurrency() && $this->owner->getCurrency()) { if ($taker instanceof Player) { if ($taker->isCreative() || $taker->isSpectator()) { $giver->sendMessage(mc::_("No trading possible, %1% is in %2% mode", $taker->getDisplayName(), MPMU::gamemodeStr($taker->getGamemode()))); return; } $ev->setCancelled(); // OK, we want to pay, not to fight! $this->onPlayerPaid($giver, $taker); } //else paying an Entity! return; } if (isset($this->goods[$hand->getId()])) { if ($taker instanceof Player) { if ($taker->isCreative() || $taker->isSpectator()) { $giver->sendMessage(mc::_("No trading possible, %1% is in %2% mode", $taker->getDisplayName(), MPMU::gamemodeStr($taker->getGamemode()))); return; } $ev->setCancelled(); // OK, we are trading $this->onPlayerTrade($giver, $taker); } //else trading with entity... return; } }
public function i_onDamage(EntityDamageEvent $event, &$victimSession) { $victim = $event->getEntity(); if (!$victim instanceof Player) { return; } $victimSession = $this->getMain()->getSessions()->getSession($victim); if (!$victimSession->inSession($this)) { return; } $origCancelled = $event->isCancelled(); $event->setCancelled(false); if (!$event instanceof EntityDamageByEntityEvent) { if ($event->getCause() === EntityDamageEvent::CAUSE_SUFFOCATION) { $event->setCancelled(); $victimSession->teleport(Settings::kitpvp_spawn($this->getMain()->getServer())); return; } if ($event->getCause() === EntityDamageEvent::CAUSE_FALL) { $fallCause = $victim->getLastDamageCause(); if ($fallCause instanceof EntityDamageByEntityEvent) { if (isset($fallCause->_legionpeEta_timestamp) and microtime(true) - $fallCause->_legionpeEta_timestamp < 2) { /** @noinspection PhpUndefinedFieldInspection */ $event->_legionpeEta_fallCause = $fallCause; } } } return; } $victim = $event->getEntity(); $damager = $event->getDamager(); if (!$victim instanceof Player or !$damager instanceof Player) { return; } $attackerSession = $this->main->getSessions()->getSession($damager); if (!$attackerSession->inSession($this)) { $event->setCancelled($origCancelled); return; } $hitterData = $this->playerData[$attackerSession->getUID()]; $victimData = $this->playerData[$victimSession->getUID()]; if ($hitterData->invulnerable) { $attackerSession->tell("You are in invulnerability mode!"); $event->setCancelled(); return; } if ($victimData->invulnerable) { $attackerSession->tell("The vicitm is in invulnerability mode!"); $event->setCancelled(); return; } if (Settings::kitpvp_isSafeArea($victim) or Settings::kitpvp_isSafeArea($damager)) { $event->setCancelled(); $attackerSession->tell("You may not attack players at/from spawn!"); } elseif ($hitterData->areFriends($victimSession->getUID())) { $event->setCancelled(); } else { /** @noinspection PhpUndefinedFieldInspection */ $event->_legionpeEta_timestamp = microtime(true); /** @noinspection PhpUndefinedFieldInspection */ $event->_legionpeEta_isLadder = $victim->getLevel()->getBlockIdAt($victim->getFloorX(), $victim->getFloorY(), $victim->getFloorZ()) === Block::LADDER; if ($event instanceof EntityDamageByChildEntityEvent) { $child = $event->getChild(); if ($child instanceof Snowball) { $event->setKnockBack($event->getKnockBack() * 2.5); } elseif ($child instanceof Arrow) { $points = 0; if (!$event->isApplicable(EntityDamageEvent::MODIFIER_ARMOR)) { $armorValues = [Item::LEATHER_CAP => 1, Item::LEATHER_TUNIC => 3, Item::LEATHER_PANTS => 2, Item::LEATHER_BOOTS => 1, Item::CHAIN_HELMET => 1, Item::CHAIN_CHESTPLATE => 5, Item::CHAIN_LEGGINGS => 4, Item::CHAIN_BOOTS => 1, Item::GOLD_HELMET => 1, Item::GOLD_CHESTPLATE => 5, Item::GOLD_LEGGINGS => 3, Item::GOLD_BOOTS => 1, Item::IRON_HELMET => 2, Item::IRON_CHESTPLATE => 6, Item::IRON_LEGGINGS => 5, Item::IRON_BOOTS => 2, Item::DIAMOND_HELMET => 3, Item::DIAMOND_CHESTPLATE => 8, Item::DIAMOND_LEGGINGS => 6, Item::DIAMOND_BOOTS => 3]; foreach ($attackerSession->getPlayer()->getInventory()->getArmorContents() as $armor) { if (isset($armorValues[$armor->getId()])) { $points += $armorValues[$armor->getId()]; } } } list(, , , $damage, $fire, $knockPct) = Settings::kitpvp_getBowInfo($hitterData->getBowLevel()); $event->setDamage(max($damage - $points, 0)); if ($fire > 0) { $victim->setOnFire($fire / 20); $this->getMain()->getServer()->getScheduler()->scheduleDelayedTask(new CallbackPluginTask($this->getMain(), function () use($victim) { $victim->setOnFire(0); }), $fire); } if ($knockPct > 0) { $event->setKnockBack($event->getKnockBack() * (1 + $knockPct / 100)); // what the, I put / as *? } } } } }